| summary | Advanced setup and development workflows for Bitterbot | ||
|---|---|---|---|
| read_when |
|
||
| title | Setup |
Last updated: 2026-01-01
- Tailoring lives outside the repo:
~/.bitterbot/workspace(workspace) +~/.bitterbot/bitterbot.json(config). - Stable workflow: install via npm and use the onboarding wizard; let the service run the Gateway.
- Bleeding edge workflow: run the Gateway yourself via
pnpm gateway:watch.
- Node
>=22 pnpm- Docker (optional; only for containerized setup/e2e — see Docker)
The setup script installs Chromium (browser automation), ffmpeg, ripgrep, and other tools Bitterbot uses:
bash scripts/setup-deps.shThis is safe to re-run — it skips already-installed packages. Works on Ubuntu/Debian, Fedora, Arch, and macOS (Homebrew).
If you want “100% tailored to me” and easy updates, keep your customization in:
- Config:
~/.bitterbot/bitterbot.json(JSON/JSON5-ish) - Workspace:
~/.bitterbot/workspace(skills, prompts, memories; make it a private git repo)
Bootstrap once:
bitterbot setupFrom inside this repo, use the local CLI entry:
bitterbot setupIf you don’t have a global install yet, run it via pnpm bitterbot setup.
After pnpm build, you can run the packaged CLI directly:
node bitterbot.mjs gateway --port 19001 --verbose- Install Bitterbot via npm:
npm install -g bitterbot@latest - Run the onboarding wizard:
bitterbot onboard --install-daemon - Link surfaces (example: WhatsApp):
bitterbot channels login- Sanity check:
bitterbot healthpnpm install && pnpm buildThen start the gateway and Control UI in two terminals:
# Terminal 1 — Gateway (auto-rebuilds on TS changes)
pnpm gateway:watch
# Terminal 2 — Control UI
cd desktop && pnpm devOpen http://localhost:5173 for the Bitterbot dashboard. The gateway runs on port 19001.
Via CLI:
bitterbot health- Wrong port: Gateway WS defaults to
ws://127.0.0.1:19001; keep app + CLI on the same port. - Where state lives:
- Credentials:
~/.bitterbot/credentials/ - Sessions:
~/.bitterbot/agents/<agentId>/sessions/ - Logs:
/tmp/bitterbot/
- Credentials:
Use this when debugging auth or deciding what to back up:
- WhatsApp:
~/.bitterbot/credentials/whatsapp/<accountId>/creds.json - Telegram bot token: config/env or
channels.telegram.tokenFile - Discord bot token: config/env (token file not yet supported)
- Slack tokens: config/env (
channels.slack.*) - Pairing allowlists:
~/.bitterbot/credentials/<channel>-allowFrom.json - Model auth profiles:
~/.bitterbot/agents/<agentId>/agent/auth-profiles.json - Legacy OAuth import:
~/.bitterbot/credentials/oauth.jsonMore detail: Security.
- Keep
~/.bitterbot/workspaceand~/.bitterbot/as “your stuff”; don’t put personal prompts/config into thebitterbotrepo. - Updating source:
git pull+pnpm install(when lockfile changed) + keep usingpnpm gateway:watch.
Linux installs use a systemd user service. By default, systemd stops user services on logout/idle, which kills the Gateway. Onboarding attempts to enable lingering for you (may prompt for sudo). If it’s still off, run:
sudo loginctl enable-linger $USERFor always-on or multi-user servers, consider a system service instead of a user service (no lingering needed). See Gateway runbook for the systemd notes.
- Gateway runbook (flags, supervision, ports)
- Gateway configuration (config schema + examples)
- Discord and Telegram (reply tags + replyToMode settings)
- Bitterbot assistant setup