Appearance
Daemon & service
connect and ssh work fine on their own, but each invocation dials the relay and completes the handshake from scratch. The daemon removes that cost: it is a long-running process that holds a warm carrier to each configured relay, so sessions that go through it start instantly, and tools built on the CLI (and relays list) have something to talk to. The daemon is unix-only (macOS and Linux).
Running it in the foreground
sh
burrowee daemonIt loads ~/.burrowee/cli/config.json, opens a carrier per relay, and serves requests over a local unix socket, printing a status line like:
burrowee daemon: socket=/home/you/.burrowee/cli/sockets/transport.sock gw=1a2b3c4d5e6f7a8b relays=2 default=1a2b3c4d5e6f7a8bIt runs until interrupted (Ctrl-C). Two flags if you need them:
| Flag | Meaning |
|---|---|
--config <path> | config.json path (default ~/.burrowee/cli/config.json) |
--socket <path> | transport IPC socket path (see below) |
Foreground mode is fine for trying things out or running under your own supervisor (tmux, a custom systemd unit). For day-to-day use, install the managed service instead.
The managed service
sh
burrowee service installOn macOS this writes a launchd agent to ~/Library/LaunchAgents/org.burrowee.cli.plist and loads it (RunAtLoad + KeepAlive, so it starts at login and is restarted if it dies). On Linux it writes a systemd user unit to ~/.config/systemd/user/burrowee-cli.service and runs systemctl --user enable --now on it. Either way the unit simply runs <your binary> daemon.
install always (re)writes the unit pointing at the binary you ran it with — so after upgrading the CLI, run burrowee service install followed by burrowee restart to pick up the new binary.
Check on it:
sh
burrowee service statusThis shells out to launchctl list org.burrowee.cli or systemctl --user status burrowee-cli.service and prints a friendly not loaded / not active line when the unit isn't running.
Restart it:
sh
burrowee restart(launchctl kickstart -k on macOS, systemctl --user restart on Linux.) If the restart fails, the error message includes the exact manual command to run yourself.
The socket
The daemon listens on a unix socket at ~/.burrowee/cli/sockets/transport.sock. On a pathologically long home path it falls back to $XDG_RUNTIME_DIR/burrowee/transport.sock (the OS temp directory when XDG_RUNTIME_DIR is unset). relays use, relays priority, relays pair, and relays probe talk to the daemon over this socket (relays list reads config.json directly and needs no daemon); if you moved it with --socket, pass the same --socket to those commands. uninstall removes the socket as part of cleanup.