summary
Scripted onboarding and agent setup for the Bitterbot CLI
read_when
You are automating onboarding in scripts or CI
You need non-interactive examples for specific providers
title
CLI Automation
sidebarTitle
CLI automation
Use --non-interactive to automate bitterbot onboard.
`--json` does not imply non-interactive mode. Use `--non-interactive` (and `--workspace`) for scripts.
Baseline non-interactive example
bitterbot onboard --non-interactive \
--mode local \
--auth-choice apiKey \
--anthropic-api-key " $ANTHROPIC_API_KEY " \
--gateway-port 19001 \
--gateway-bind loopback \
--install-daemon \
--daemon-runtime node \
--skip-skills
Add --json for a machine-readable summary.
Provider-specific examples
```bash
bitterbot onboard --non-interactive \
--mode local \
--auth-choice gemini-api-key \
--gemini-api-key "$GEMINI_API_KEY" \
--gateway-port 19001 \
--gateway-bind loopback
```
```bash
bitterbot onboard --non-interactive \
--mode local \
--auth-choice zai-api-key \
--zai-api-key "$ZAI_API_KEY" \
--gateway-port 19001 \
--gateway-bind loopback
```
```bash
bitterbot onboard --non-interactive \
--mode local \
--auth-choice ai-gateway-api-key \
--ai-gateway-api-key "$AI_GATEWAY_API_KEY" \
--gateway-port 19001 \
--gateway-bind loopback
```
```bash
bitterbot onboard --non-interactive \
--mode local \
--auth-choice cloudflare-ai-gateway-api-key \
--cloudflare-ai-gateway-account-id "your-account-id" \
--cloudflare-ai-gateway-gateway-id "your-gateway-id" \
--cloudflare-ai-gateway-api-key "$CLOUDFLARE_AI_GATEWAY_API_KEY" \
--gateway-port 19001 \
--gateway-bind loopback
```
```bash
bitterbot onboard --non-interactive \
--mode local \
--auth-choice moonshot-api-key \
--moonshot-api-key "$MOONSHOT_API_KEY" \
--gateway-port 19001 \
--gateway-bind loopback
```
```bash
bitterbot onboard --non-interactive \
--mode local \
--auth-choice synthetic-api-key \
--synthetic-api-key "$SYNTHETIC_API_KEY" \
--gateway-port 19001 \
--gateway-bind loopback
```
```bash
bitterbot onboard --non-interactive \
--mode local \
--auth-choice nearai-api-key \
--nearai-api-key "$NEARAI_API_KEY" \
--gateway-port 19001 \
--gateway-bind loopback
```
```bash
bitterbot onboard --non-interactive \
--mode local \
--auth-choice opencode-zen \
--opencode-zen-api-key "$OPENCODE_API_KEY" \
--gateway-port 19001 \
--gateway-bind loopback
```
```bash
bitterbot onboard --non-interactive \
--mode local \
--auth-choice custom-api-key \
--custom-base-url "https://llm.example.com/v1 " \
--custom-model-id "foo-large" \
--custom-api-key "$CUSTOM_API_KEY" \
--custom-provider-id "my-custom" \
--custom-compatibility anthropic \
--gateway-port 19001 \
--gateway-bind loopback
```
`--custom-api-key` is optional. If omitted, onboarding checks `CUSTOM_API_KEY`.
Use bitterbot agents add <name> to create a separate agent with its own workspace,
sessions, and auth profiles. Running without --workspace launches the wizard.
bitterbot agents add work \
--workspace ~ /.bitterbot/workspace-work \
--model openai/gpt-5.2 \
--bind whatsapp:biz \
--non-interactive \
--json
What it sets:
agents.list[].name
agents.list[].workspace
agents.list[].agentDir
Notes:
Default workspaces follow ~/.bitterbot/workspace-<agentId>.
Add bindings to route inbound messages (the wizard can do this).
Non-interactive flags: --model, --agent-dir, --bind, --non-interactive.