Everything you need to know before runningDocumentation Index
Fetch the complete documentation index at: https://docs.nanoclaw.dev/llms.txt
Use this file to discover all available pages before exploring further.
bash nanoclaw.sh. For the one-command install flow itself, see Quick start.
System requirements
- macOS
- Linux
- Windows (WSL2)
- macOS 12 (Monterey) or later
- Intel or Apple Silicon (M1/M2/M3/M4)
- 4 GB RAM minimum, 8 GB recommended
- 4 GB free disk space (container image + node_modules)
What the installer needs
nanoclaw.sh installs most things for you. This list exists so you know the dependency surface before running it.
| Dependency | Scope | Installer handles it? |
|---|---|---|
| Node 22 | Host (orchestrator) | Yes — via nvm if missing |
| pnpm 10 | Host (package manager) | Yes — via corepack enable |
| Docker (or Apple Container) | Host (container runtime) | Partial — prompts you to install or start it if absent |
| Build tools (gcc, python3) | Host (for better-sqlite3 native compile) | No — install beforehand |
| OneCLI Agent Vault | Host (credential injection) | Yes — installs locally or reuses an existing configured instance |
| Bun 1.3.12 | Container (agent-runner runtime) | Yes — baked into the agent container image |
Build tools
better-sqlite3 is the only host dependency that needs native compilation. Install the platform toolchain before running nanoclaw.sh:
- macOS
- Linux
- Windows (WSL2)
Container runtime
Docker is the default and works on all three platforms. Apple Container is an opt-in alternative on macOS 15+.- Docker (default)
- Apple Container (macOS 15+)
macOS:Linux:Windows (WSL2): Install Docker Desktop, then enable WSL integration in Settings → Resources → WSL Integration for your distro.
Advanced installer environment
nanoclaw.sh and setup:auto read environment variables when you need to debug or script part of setup.
| Env var | Use |
|---|---|
NANOCLAW_SKIP | Comma-separated setup steps to skip while debugging (environment, container, onecli, auth, mounts, service, cli-agent, timezone, channel, verify, first-chat) |
NANOCLAW_DISPLAY_NAME | Skip the operator display-name prompt |
NANOCLAW_AGENT_NAME | Set the messaging-channel agent name; the CLI scratch agent remains Terminal Agent |
SECRET_NAME | OneCLI secret name for setup/register-claude-token.sh (default: Anthropic) |
HOST_PATTERN | OneCLI host pattern for setup/register-claude-token.sh (default: api.anthropic.com) |
ANTHROPIC_BASE_URL and ANTHROPIC_AUTH_TOKEN in .env.
Run the installer
Once the system dependencies above are in place:logs/setup.log and logs/setup-steps/.
For the step-by-step breakdown of what each phase does, see Quick start.
File structure after install
nanoclaw
src
container
groups
main
CLAUDE.md
container.json
data
v2.db
env
v2-sessions
{agent_group_id}
{session_id}
inbound.db
outbound.db
.heartbeat
logs
.env
nanoclaw.sh
package.json
| Path | Purpose |
|---|---|
~/.config/nanoclaw/mount-allowlist.json | Which host directories agents can mount |
~/.config/nanoclaw/sender-allowlist.json | Optional per-channel sender access control |
~/Library/LaunchAgents/com.nanoclaw-v2-<slug>.plist (macOS) | launchd service definition |
~/.config/systemd/user/nanoclaw-v2-<slug>.service (Linux) | systemd user-service definition |
Container image contents
The agent container image is scoped per checkout, with a name likenanoclaw-agent-v2-<slug>:latest. It is built from container/Dockerfile:
- Base:
node:22-slim - tini as PID 1 — reaps Chromium zombies, forwards signals so
outbound.dbwrites finalize on SIGTERM - Bun 1.3.12 runs the agent-runner TypeScript directly (no
tscbuild step) - Chromium for browser automation via
agent-browser - Global Node CLIs (pnpm):
@anthropic-ai/claude-code,agent-browser,vercel - Non-root
nodeuser,/workspace/groupas working directory - Source is never baked in —
/app/srcis a read-only bind mount from the host, so code changes take effect without rebuilding
INSTALL_CJK_FONTS=true in .env adds Chinese/Japanese/Korean font support (~200 MB).
Service management
NanoClaw runs as a background service so the host stays responsive to channel events between your messages.- macOS (launchd)
- Linux (systemd)
- WSL (without systemd)
Troubleshooting
better-sqlite3 build errors
sudo apt-get install python3 (Linux/WSL) or xcode-select --install (macOS).
Container build fails
Service won’t start
Check the error log and the setup progression log:WSL: Docker integration
Ifdocker commands aren’t found in WSL, enable WSL integration in Docker Desktop (Settings → Resources → WSL Integration → toggle your distro). Restart WSL from PowerShell if needed:
WSL: slow builds
Clone into the Linux filesystem (~/nanoclaw), not /mnt/c/. The 9P bridge to Windows drives is 10-100× slower than native Linux FS operations.
Next steps
Quick start
Run
bash nanoclaw.sh and send your first messageArchitecture
How the two-DB session model works
Integrations
Add channels: Telegram, Slack, Discord, and more
Customization
Change the trigger word, adjust timeouts, tune engage modes