CLI overview
The confab CLI is the bridge between your local AI coding sessions and the Confabulous backend. It lives in a separate repository: ConfabulousDev/confab.
Installation
Section titled “Installation”curl -fsSL https://raw.githubusercontent.com/ConfabulousDev/confab/main/install.sh | bashThe install script fetches a pre-built binary from GitHub Releases for your OS and architecture and drops it on your PATH. If you’d rather build from source, clone the repo and go install ./....
confab setup --backend-url https://your-confab-instance.example.com--backend-url is required — the CLI doesn’t have a default backend. Pass the URL of the Confabulous instance you sign in to in the browser:
- Managed:
--backend-url https://confabulous.dev - Self-hosted:
--backend-url https://confab.your-company.com - Local prototype:
--backend-url http://localhost:8080
The setup flow:
- Authenticates against the backend via a browser device-login flow. Pass
--api-key cfb_...to skip the device flow and use a key directly. - Auto-detects which provider CLIs (
claude,codex) are installed on yourPATH. - Installs the sync hooks into each detected CLI’s configuration.
- Installs the bundled skills (
/tiland/retro) for each detected CLI.
Pass --provider claude-code or --provider codex to restrict setup to one provider.
To verify everything landed correctly, run confab status — it prints the backend URL, auth state, and per-provider hook/skill state, with remediation hints if anything’s off.
How sync works
Section titled “How sync works”Sync is driven by the hooks confab setup installs into each provider CLI’s configuration. When Claude Code or Codex runs a session, it invokes these hooks at key lifecycle points (session start, user prompt submit, tool use, session end) — and the hooks stream new transcript chunks to your backend in real time, chunk by chunk. You don’t have to wait for the session to end before it appears on the dashboard: new messages, tool calls, and analytics surface as they happen.
A persistent sync daemon is spawned per session to handle the streaming. You don’t manage it directly — it starts on session-start and exits when the session ends — but you can inspect or restart it with confab sync status / confab sync start if needed.
All upload traffic goes over the HTTP API authenticated with your API token.
Config directory: ~/.confab/
Section titled “Config directory: ~/.confab/”All CLI state lives under ~/.confab/:
| Path | Contents |
|---|---|
~/.confab/config.json | API key, backend URL, redaction config |
~/.confab/state/ | Per-session daemon state (one file per active session) |
~/.confab/inbox/ | Queued uploads pending the next sync flush |
~/.confab/logs/ | CLI and daemon logs |
~/.confab/update.json | Auto-update timestamp tracking |
The directory is created on first confab setup. Deleting it forces a clean re-auth on the next setup; deleting state/ while a session is running may leave orphaned daemons, so prefer confab logout + confab setup for a reset.