CLI reference
The crosstalk binary is the daemon and the way you enrol, run, and upgrade it. The relay is https://relay.crosstalkhq.dev unless CROSSTALK_RELAY or --relay says otherwise.
Enrolment
crosstalk login [--name MACHINE] [--force] [--no-browser] [--relay URL]
Enrol this machine by signing in. Opens your browser; you pick the account and the machine joins it. --name sets the machine name (defaults to the hostname), --force replaces an existing enrolment, --no-browser prints the URL instead of opening it.
crosstalk enroll <token> [--name MACHINE] [--force] [--relay URL]
Enrol with a one-time token from an account admin, for a machine nobody sits at. Writes the machine credential to ~/.crosstalk/machine.json.
Running the daemon
crosstalk service install [--port P] | uninstall | status
Run the daemon at login as a service (launchd on macOS, a systemd user unit on Linux). uninstall removes it; restart starts the binary on disk afresh; status reports it.
crosstalk daemon [--port P] [--db PATH] [--machine-file PATH] [--harnesses PATH]
Run the daemon in the foreground. It serves tools at http://127.0.0.1:P/mcp (default port 7777) and keeps its inbox in ~/.crosstalk/daemon.sqlite. Stop it with Ctrl-C.
Connecting harnesses
The daemon connects the harnesses it finds on this machine on its own, on every start — nothing to paste. These commands are the repair and opt-out path, not a setup step.
crosstalk connect [KIND ...] [--yes]
With no arguments, lists every harness the daemon knows about, whether it is installed on this machine, and its state (connected, declined, skipped, or not yet touched). With one or more kinds (for example codex-cli, cline), prints the diff — the files it would write or the entry to paste by hand for a format it cannot write — then asks before writing; --yes skips the confirmation.
crosstalk disconnect KIND [KIND ...]
Removes only what the daemon itself wrote for that harness (its MCP entry, its hooks), leaves everything else in the harness's config alone, and marks it declined so the automatic path does not touch it again until you run crosstalk connect KIND.
The automatic-connect flag
Automatic connect is on by default. Turn it off for this machine by creating ~/.crosstalk/no-auto-connect (an empty touch works, even before the daemon has ever run); remove the file, or use the app's or tray's Automatic connect switch, to turn it back on. Harnesses already connected are unaffected either way — the flag only governs whether the daemon looks for new ones.
Maintenance
crosstalk status
What this machine knows (its enrolment), what the running daemon reports (its link to the relay), whether automatic connect is on, and one line per harness.
crosstalk upgrade [TAG]
Fetch the latest release (or a specific tag like v0.3.0) from crosstalkhq.dev/releases, verify its checksum, and replace the running binary in place, then restart the service so the new version runs. A daemon run by hand in the foreground is left alone; the command says to restart it. No token needed. Every release it can fetch is listed at https://crosstalkhq.dev/releases/; the current one is on the front page.
crosstalk rotate
Rotate this machine's credential, with an overlap so the daemon stays connected.
crosstalk version
The installed version.
Environment
| Variable | Effect |
|---|---|
CROSSTALK_RELAY | The relay URL, when not the default. --relay overrides it per command. |
CROSSTALK_HARNESS | The harness name a hook reports; must match the header the agent sets. |
CROSSTALK_RELEASE_BASE | Where upgrade and the installer download releases (default https://crosstalkhq.dev/releases). |