# CLI Reference Use this page when you know what you want to run and need the command shape. For a guided first run, start with [`quick-start.md`](./quick-start.md). ## Choose a Command | Goal | Command | Notes | |---|---|---| | Check the install | `nanobot --version` | If this fails, try `python -m nanobot --version` | | Create or refresh config | `nanobot onboard` | Creates `~/.nanobot/config.json` and `~/.nanobot/workspace/` | | Use guided setup | `nanobot onboard --wizard` | Best when you prefer prompts over hand-editing JSON | | Check config without calling a model | `nanobot status` | Reads the default config and summarizes the active model/provider | | Send one test message | `nanobot agent -m "Hello!"` | First proof that install, config, provider, model, and workspace all work | | Chat in the terminal | `nanobot agent` | Interactive local chat; exit with `exit`, `/exit`, `:q`, or `Ctrl+D` | | Use WebUI or chat apps | `nanobot gateway` | Keep this terminal running while those surfaces are in use | | Serve an OpenAI-compatible API | `nanobot serve` | Starts `/v1/chat/completions`, `/v1/models`, and `/health` | | Check chat channel setup | `nanobot channels status` | Useful before starting `nanobot gateway` | | Log in to QR/OAuth-style channels | `nanobot channels login ` | Used by channels such as WhatsApp and WeChat | | Log in to OAuth model providers | `nanobot provider login ` | Used by OAuth providers such as OpenAI Codex and GitHub Copilot | ## Global ```bash nanobot --help nanobot --version python -m nanobot --help python -m nanobot --version ``` `python -m nanobot ...` is useful when the package is installed but the `nanobot` script is not on `PATH`. ## Common Patterns Most day-to-day commands use the default config and workspace. Advanced or multi-instance runs usually pass both paths explicitly: ```bash nanobot agent --config ./bot-a/config.json --workspace ./bot-a/workspace -m "Hello" nanobot gateway --config ./bot-a/config.json --workspace ./bot-a/workspace nanobot serve --config ./bot-a/config.json --workspace ./bot-a/workspace ``` Use `--verbose` on long-running processes when you need startup or runtime logs: ```bash nanobot gateway --verbose nanobot serve --verbose ``` Long-running commands keep working until you stop them. Press `Ctrl+C` in that terminal to stop `nanobot gateway` or `nanobot serve`. ## Setup | Command | Description | |---|---| | `nanobot onboard` | Initialize or refresh the default config and workspace | | `nanobot onboard --wizard` | Use the interactive setup wizard | | `nanobot onboard --config --workspace ` | Initialize or refresh a specific instance | Default paths: | Path | Default | |---|---| | Config | `~/.nanobot/config.json` | | Workspace | `~/.nanobot/workspace/` | ## Agent CLI | Command | Description | |---|---| | `nanobot agent -m "Hello!"` | Send one message and exit | | `nanobot agent` | Start interactive terminal chat | | `nanobot agent --session ` | Use a specific session key | | `nanobot agent --workspace ` | Override workspace | | `nanobot agent --config ` | Use a specific config file | | `nanobot agent --no-markdown` | Print plain text instead of Rich-rendered Markdown | | `nanobot agent --logs` | Show runtime logs while chatting | Interactive mode exits with `exit`, `quit`, `/exit`, `/quit`, `:q`, or `Ctrl+D`. ## Gateway `nanobot gateway` starts enabled chat channels, WebUI/WebSocket when configured, cron-backed system jobs, Dream, heartbeat, and the health endpoint. | Command | Description | |---|---| | `nanobot gateway` | Start the gateway with config defaults | | `nanobot gateway --verbose` | Show verbose runtime output | | `nanobot gateway --port ` | Override `gateway.port` for the health endpoint | | `nanobot gateway --workspace ` | Override workspace | | `nanobot gateway --config ` | Use a specific config file | Default health endpoint: ```text http://127.0.0.1:18790/health ``` The bundled WebUI is served by the WebSocket channel, usually on port `8765`, not by the gateway health endpoint. ## OpenAI-Compatible API | Command | Description | |---|---| | `nanobot serve` | Start `/v1/chat/completions`, `/v1/models`, and `/health` | | `nanobot serve --host ` | Override API bind host | | `nanobot serve --port ` | Override API port | | `nanobot serve --timeout ` | Override per-request timeout | | `nanobot serve --verbose` | Show runtime logs | | `nanobot serve --workspace ` | Override workspace | | `nanobot serve --config ` | Use a specific config file | Default API endpoint: ```text http://127.0.0.1:8900 ``` See [`openai-api.md`](./openai-api.md) for request examples. ## Status ```bash nanobot status ``` Shows the default config path, workspace path, active model, and provider summary. This command does not currently accept `--config`; use explicit `--config` and `--workspace` on `agent`, `gateway`, or `serve` when debugging a specific instance. ## Channels | Command | Description | |---|---| | `nanobot channels status` | Show configured channel status | | `nanobot channels status --config ` | Show channel status for a specific config | | `nanobot channels login ` | Run interactive login for supported channels | | `nanobot channels login --force` | Re-authenticate even if credentials already exist | | `nanobot channels login --config ` | Use a specific config file | Examples: ```bash nanobot channels login whatsapp nanobot channels login weixin nanobot channels status ``` See [`chat-apps.md`](./chat-apps.md) for channel-specific setup. ## Provider OAuth | Command | Description | |---|---| | `nanobot provider login openai-codex` | Authenticate OpenAI Codex provider | | `nanobot provider login github-copilot` | Authenticate GitHub Copilot provider | | `nanobot provider logout openai-codex` | Remove OpenAI Codex OAuth state | | `nanobot provider logout github-copilot` | Remove GitHub Copilot OAuth state | See [`providers.md`](./providers.md#oauth-providers) for when OAuth providers need explicit provider/model selection. ## Useful First Checks ```bash nanobot --version nanobot status nanobot agent -m "Hello!" ``` If these fail, use [`troubleshooting.md`](./troubleshooting.md) before debugging WebUI, chat apps, Docker, systemd, or SDK integrations.