From a fresh machine to an agent you can message — one command, a handful of prompts, a few minutes.Documentation Index
Fetch the complete documentation index at: https://docs.nanoclaw.dev/llms.txt
Use this file to discover all available pages before exploring further.
This guide covers the default installer. If you want to skip steps, reuse an existing OneCLI instance, or point Anthropic traffic at a custom endpoint, see Installation.
The one-command flow
Clone the repository
Clone upstream directly if you just want to try things out:If you plan to customize, fork qwibitai/nanoclaw on GitHub first and clone your fork. You can always add the fork remote later — the installer and
/update-nanoclaw skill handle both shapes.Run the installer
nanoclaw.sh walks you through:- Installing Node 22, pnpm, and Docker if they’re missing
- Verifying your environment (platform, WSL detection, container runtime)
- Building the agent container image
- Registering your Anthropic credential with OneCLI
- Pairing your first channel (Telegram, Discord, WhatsApp, Signal, Teams, Slack, iMessage, or the local CLI)
- Installing a systemd or launchd service so NanoClaw starts with your machine
Answer the setup prompts
Running through clack, you’ll be asked:
- Display name — what you want your agent to be called (default:
Andy) - Anthropic credential method — Claude subscription (OAuth), Anthropic API key, or skip
- First channel — Telegram, Discord, WhatsApp, Signal, Teams, Slack, iMessage, or local CLI. You can add more later.
- Channel-specific auth — pairing code, QR code, bot token, app credentials, or no extra auth for CLI, depending on the platform
Authorize Anthropic
The one step that hands off from the scripted flow:
claude setup-token opens a browser for OAuth and prints a long-lived token back into your terminal. The installer captures the status and returns to the clack flow once the token is stored in OneCLI.If you chose to skip Anthropic auth or use an API key instead, this step is skipped or replaced with a password prompt.What the installer writes to disk
NanoClaw is transparent about what it does. Every run produces three log streams:| Level | Where | What’s in it |
|---|---|---|
| Terminal (clack) | Your screen | Branded status + prompts, spinner per step |
| Progression log | logs/setup.log | One entry per step: timestamp, duration, status, key facts |
| Raw per-step logs | logs/setup-steps/NN-step-name.log | Full verbatim stdout + stderr from the step |
logs/setup.log is the first file to read.
What happens behind the scenes
Phase 1 — bootstrap (bash)
Phase 1 — bootstrap (bash)
- Installs Node 22 via nvm, corepack-enables pnpm
- Runs
pnpm install --frozen-lockfile - Verifies
better-sqlite3loads on your platform - Detects WSL, headless environments, and Apple Silicon
- Emits a
BOOTSTRAPstatus block to the progression log
Phase 2 — setup:auto (TypeScript via pnpm)
Phase 2 — setup:auto (TypeScript via pnpm)
Driven by
setup/auto.ts. Each sub-step emits a structured status block and writes its raw output to logs/setup-steps/NN-<name>.log:- environment — Docker / Apple Container detection, runtime selection
- container — builds the checkout-scoped agent image via
container/build.sh - onecli — installs OneCLI Agent Vault or reuses an existing configured instance
- auth — registers Anthropic credentials in OneCLI
- cli-agent — wires the terminal agent and confirms it responds before optional channel setup
- timezone — detects or resolves your IANA timezone
- channel pairing — runs the selected setup flow for Telegram, Discord, WhatsApp, Signal, Teams, Slack, or iMessage
- service — launchd (macOS) / systemd (Linux) /
start-nanoclaw.shwrapper (WSL without systemd) - verify — checks credentials, service status, registered groups, and first-agent connectivity
- diagnostics — optional opt-in PostHog event with platform + channel choice
The Anthropic exception
The Anthropic exception
claude setup-token owns the TTY during OAuth. It opens your browser, prints the token, and inherits stdio fully — we don’t mirror the token to any log file (that would add attack surface). Control returns to the clack flow on exit.Service installation
Service installation
- macOS — creates a launchd service named like
com.nanoclaw-v2-<slug>in~/Library/LaunchAgents/ - Linux (systemd) — user service named like
nanoclaw-v2-<slug>.service; enablesloginctl lingerso the service survives SSH logout - WSL without systemd — creates a
start-nanoclaw.shwrapper; you run it manually on login or wire it to.bashrc
Usage examples
Monitoring and logs
Next steps
Add more channels
/add-slack, /add-whatsapp, /add-signal — install or wire channels from the current channel setup flowsCustomize
Change the trigger word, tune timeouts, adjust engage modes
Security model
Sender allowlists, user roles, unknown-sender policies
Troubleshooting
Common issues and how Claude Code helps you fix them
Updating NanoClaw
To pull upstream changes and merge with your customizations:upstream/main, merges with your local changes, runs any migrations, rebuilds the container if needed, restarts the service, and scans the changelog for [BREAKING] entries — offering to run the /migrate-nanoclaw skill when a breaking change applies.