id = "homebridge" name = "Homebridge" homepage = "https://homebridge.io" description = "A lightweight Node.js server you can run on your home network to emulate the HomeKit Accessory Protocol (HAP)." icon = "SimpleIcons:homebridge" # hb-service is the service wrapper shipped with Homebridge Config UI X; both # binaries read and write the same config.json. executables = ["homebridge", "hb-service"] [dotfiles] # homebridge src/user.ts: `storagePath()` is `join(homedir(), '.homebridge')` # unless -U overrides it, and `configPath()` is config.json inside it. The # macOS install guide # (github.com/homebridge/homebridge/wiki/Install-Homebridge-on-macOS) prints # the same pair. hb-service moves the storage path to /var/lib/homebridge on # Linux and FreeBSD (src/bin/hb-service.ts) — a system location, out of scope # for a per-user catalog. paths = ["~/.homebridge/config.json"] # Everything else under ~/.homebridge is runtime state: hap-nodejs pairing data # in persist/, cached accessories/, Matter state, backups and the log file. exclude = [ "~/.homebridge/persist/", "~/.homebridge/accessories/", "~/.homebridge/matter/", "~/.homebridge/backups/", "~/.homebridge/homebridge.log", ] secret = [] # `pin` is the HomeKit setup code a phone types to pair with this bridge # (hb-service.ts `generateBridgeConfig`). Plugin blocks under `platforms` carry # their own API keys and tokens, which no fixed key path can enumerate — a # consumer's content scan is the layer for those. [[dotfiles.secret_paths]] file = "~/.homebridge/config.json" match = { key_path = ["bridge.pin"] } # `username` is the bridge's MAC-format identity on the network and `port` the # port it listens on here; two bridges sharing either one collide, so both stay # on the machine that generated them. `name` and `advertiser` travel fine. # The identity and the port are what every paired phone in the house already # knows this bridge by, so they are kept for exactly this device: backup. [[dotfiles.machine_lines]] file = "~/.homebridge/config.json" match = { key_path = ["bridge.username", "bridge.port"] } scope = "backup" [commands] format = 1 label = "Homebridge service" description = "Install and control the Homebridge system service via hb-service. Install options other than the service name, port and user are left out." quality = "ai-draft" base = "fig:hb-service" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/hb-service.ts" license = "MIT" [[commands.subcommand]] path = ["install"] label = "Install as a service" description = "Register Homebridge as a system service; this usually needs elevated rights." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/hb-service.ts" license = "MIT" [[commands.subcommand.field]] id = "service_name" label = "Service name" type = "string" option = ["--service-name", "-S"] description = "The name of the homebridge service to install or control." sources = ["fig"] [[commands.subcommand.field]] id = "port" label = "UI port" type = "integer" option = ["--port"] description = "The port to set for the Homebridge UI when installing as a service." sources = ["fig"] [[commands.subcommand.field]] id = "user" label = "Service user" type = "string" option = ["--user"] description = "The user account the service will be installed as (Linux, macOS only)." sources = ["fig"] [[commands.subcommand.task]] id = "install" label = "Install service" fields = ["service_name", "port", "user"] required = [] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["service_name", "port", "user"] [[commands.subcommand]] path = ["restart"] label = "Restart the service" [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/hb-service.ts" license = "MIT" [[commands.subcommand.field]] id = "service_name" label = "Service name" type = "string" option = ["--service-name", "-S"] description = "The name of the homebridge service to control." sources = ["fig"] [[commands.subcommand.task]] id = "restart" label = "Restart" fields = ["service_name"] required = [] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["service_name"] [[commands.subcommand]] path = ["logs"] label = "Tail service logs" [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/hb-service.ts" license = "MIT" [[commands.subcommand.field]] id = "service_name" label = "Service name" type = "string" option = ["--service-name", "-S"] description = "The name of the homebridge service to control." sources = ["fig"] [[commands.subcommand.task]] id = "logs" label = "Tail logs" fields = ["service_name"] required = [] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["service_name"]