Onboarding Wizard (CLI)
The onboarding wizard is the recommended way to set up crocbot on Linux or Windows (via WSL2; strongly recommended). It configures a local Gateway or a remote Gateway connection, plus channels, skills, and workspace defaults in one guided flow. Primary entrypoint:crocbot dashboard and chat in the browser. Docs: Dashboard.
Follow‑up reconfiguration:
web_search
(web_fetch works without a key). Easiest path: crocbot configure --section web
which stores tools.web.search.apiKey. Docs: Web tools.
QuickStart vs Advanced
The wizard starts with QuickStart (defaults) vs Advanced (full control). QuickStart keeps the defaults:- Local gateway (loopback)
- Workspace default (or existing workspace)
- Gateway port 18789
- Gateway auth Token (auto‑generated, even on loopback)
- Tailscale exposure Off
- Telegram DMs default to allowlist
What the wizard does
Local mode (default) walks you through:- Model/auth (OpenAI Code (Codex) subscription OAuth, Anthropic API key (recommended) or setup-token (paste), plus MiniMax/GLM/Moonshot/AI Gateway options)
- Workspace location + bootstrap files
- Gateway settings (port/bind/auth/tailscale)
- Telegram channel
- Daemon install (systemd user unit)
- Health check
- Skills (recommended)
--json does not imply non-interactive mode. Use --non-interactive (and --workspace) for scripts.
Flow details (local)
-
Existing config detection
- If
~/.crocbot/crocbot.jsonexists, choose Keep / Modify / Reset. - Re-running the wizard does not wipe anything unless you explicitly choose Reset
(or pass
--reset). - If the config is invalid or contains legacy keys, the wizard stops and asks
you to run
crocbot doctorbefore continuing. - Reset uses
trash(neverrm) and offers scopes:- Config only
- Config + credentials + sessions
- Full reset (also removes workspace)
- If
-
Model/Auth
- Anthropic API key (recommended): uses
ANTHROPIC_API_KEYif present or prompts for a key, then saves it for daemon use. - Anthropic OAuth (Claude Code CLI): on macOS the wizard checks Keychain item “Claude Code-credentials” (choose “Always Allow” so launchd starts don’t block); on Linux/Windows it reuses
~/.claude/.credentials.jsonif present. - Anthropic token (paste setup-token): run
claude setup-tokenon any machine, then paste the token (you can name it; blank = default). - OpenAI Code (Codex) subscription (Codex CLI): if
~/.codex/auth.jsonexists, the wizard can reuse it. - OpenAI Code (Codex) subscription (OAuth): browser flow; paste the
code#state.- Sets
agents.defaults.modeltoopenai-codex/gpt-5.2when model is unset oropenai/*.
- Sets
- OpenAI API key: uses
OPENAI_API_KEYif present or prompts for a key, then saves it to~/.crocbot/.envso launchd can read it. - OpenCode Zen (multi-model proxy): prompts for
OPENCODE_API_KEY(orOPENCODE_ZEN_API_KEY, get it at https://opencode.ai/auth). - API key: stores the key for you.
- Vercel AI Gateway (multi-model proxy): prompts for
AI_GATEWAY_API_KEY. - More detail: Vercel AI Gateway
- MiniMax M2.1: config is auto-written.
- More detail: MiniMax
- Synthetic (Anthropic-compatible): prompts for
SYNTHETIC_API_KEY. - More detail: Synthetic
- Moonshot (Kimi K2): config is auto-written.
- Kimi Code: config is auto-written.
- More detail: Moonshot AI (Kimi + Kimi Code)
- Skip: no auth configured yet.
- Pick a default model from detected options (or enter provider/model manually).
- Wizard runs a model check and warns if the configured model is unknown or missing auth.
- Anthropic API key (recommended): uses
- OAuth credentials live in
~/.crocbot/credentials/oauth.json; auth profiles live in~/.crocbot/agents/<agentId>/agent/auth-profiles.json(API keys + OAuth). - More detail: /concepts/oauth
-
Workspace
- Default
~/croc(configurable). - Seeds the workspace files needed for the agent bootstrap ritual.
- Full workspace layout + backup guide: Agent workspace
- Default
-
Gateway
- Port, bind, auth mode, tailscale exposure.
- Auth recommendation: keep Token even for loopback so local WS clients must authenticate.
- Disable auth only if you fully trust every local process.
- Non‑loopback binds still require auth.
- Channels
- Telegram: bot token from BotFather.
- DM security: default is allowlist. Add your user ID to
channels.telegram.allowFrom.
-
Daemon install
- Linux (and Windows via WSL2): systemd user unit
- Wizard attempts to enable lingering via
loginctl enable-linger <user>so the Gateway stays up after logout. - May prompt for sudo (writes
/var/lib/systemd/linger); it tries without sudo first.
- Wizard attempts to enable lingering via
- Runtime selection: Node (recommended). Bun is not recommended.
- Linux (and Windows via WSL2): systemd user unit
-
Health check
- Starts the Gateway (if needed) and runs
crocbot health. - Tip:
crocbot status --deepadds gateway health probes to status output (requires a reachable gateway).
- Starts the Gateway (if needed) and runs
-
Skills (recommended)
- Reads the available skills and checks requirements.
- Lets you choose a node manager: npm / pnpm (bun not recommended).
- Installs optional dependencies.
-
Finish
- Summary + next steps.
- If no GUI is detected, the wizard prints SSH port-forward instructions for the Control UI instead of opening a browser.
- If the Control UI assets are missing, the wizard attempts to build them; fallback is
pnpm ui:build(auto-installs UI deps).
Remote mode
Remote mode configures a local client to connect to a Gateway elsewhere. What you’ll set:- Remote Gateway URL (
ws://...) - Token if the remote Gateway requires auth (recommended)
- No remote installs or daemon changes are performed.
- If the Gateway is loopback-only, use SSH tunneling or a tailnet.
- Discovery hints:
- Linux: Avahi (
avahi-browse)
- Linux: Avahi (
Add another agent
Usecrocbot agents add <name> to create a separate agent with its own workspace,
sessions, and auth profiles. Running without --workspace launches the wizard.
What it sets:
agents.list[].nameagents.list[].workspaceagents.list[].agentDir
- Default workspaces follow
~/croc-<agentId>. - Add
bindingsto route inbound messages (the wizard can do this). - Non-interactive flags:
--model,--agent-dir,--bind,--non-interactive.
Non‑interactive mode
Use--non-interactive to automate or script onboarding:
--json for a machine‑readable summary.
Gemini example:
Gateway wizard RPC
The Gateway exposes the wizard flow over RPC (wizard.start, wizard.next, wizard.cancel, wizard.status).
Clients (Control UI, CLI) can render steps without re‑implementing onboarding logic.
What the wizard writes
Typical fields in~/.crocbot/crocbot.json:
agents.defaults.workspaceagents.defaults.model/models.providers(if Minimax chosen)gateway.*(mode, bind, auth, tailscale)channels.telegram.botTokenskills.install.nodeManagerwizard.lastRunAtwizard.lastRunVersionwizard.lastRunCommitwizard.lastRunCommandwizard.lastRunMode
crocbot agents add writes agents.list[] and optional bindings.
Sessions are stored under ~/.crocbot/agents/<agentId>/sessions/.
Related docs
- Config reference: Gateway configuration
- Telegram: Telegram
- Skills: Skills, Skills config
