NanoClaw is a personal AI assistant harness that runs each agent session inside its own Docker container. The host is a single Node process with a handful of source files that routes messages from chat channels to agents and delivers replies back; agents see only the directories explicitly mounted into their container, and shell commands run inside the container rather than on the host. The project covers the same core use case as OpenClaw with a much smaller codebase and OS-level container isolation in place of application-level permission checks.
Agents run on the Claude Agent SDK by default, with Codex, OpenCode-backed providers (OpenRouter, Google, DeepSeek, and others), and Ollama available as drop-in options configured per agent group. Channels such as WhatsApp, Telegram, Discord, Slack, Microsoft Teams, iMessage, Matrix, Google Chat, Webex, Linear, GitHub, WeChat, and email are not in the trunk; you install exactly the ones you want into your own fork with /add- skills. There are no configuration files: customisation means asking Claude Code to change the code.
The message path is messaging app to host router to a per-session inbound.db, then a Bun agent-runner inside the container polls that database, runs the agent, and writes to outbound.db, which the host polls and delivers through the channel adapter. Each session has two SQLite files with exactly one writer each, so there is no IPC or stdin piping. Outbound API requests route through OneCLI's Agent Vault, which injects credentials at request time, so agents never hold raw API keys. Setup runs from nanoclaw.sh, which installs Node, pnpm, and Docker if missing and hands off to Claude Code when a step needs judgement. Requirements are macOS or Linux (Windows via WSL2), Node.js 22+, pnpm 10+, Docker, and Claude Code.
Features
- Container isolation: every agent session runs in a Docker container with only explicitly mounted paths visible
- Multi-channel messaging: WhatsApp, Telegram, Discord, Slack, Teams, iMessage, Matrix, Google Chat, Webex, Linear, GitHub, WeChat, and email, installed per fork with /add- skills
- Isolation model: one agent per channel, one agent shared across channels with separate conversations, or several channels folded into one shared session
- Per-agent workspace: each agent group has its own CLAUDE.md, memory, container, and mounts
- Provider choice: Claude Agent SDK by default; Codex, OpenCode providers, and Ollama via skills, configurable per agent group
- Slack app per agent: setup provisions each agent its own Slack app, avatar, and workspace install, and teammates can be spawned from chat
- Scheduled tasks: recurring jobs with optional script gates that skip waking the agent when there is no work
- Credential vault: outbound requests pass through OneCLI's Agent Vault with per-agent policies and rate limits
- Agent templates: stamp a ready-to-run agent (instructions, MCP tools, skills) with ncl groups create --template
- Code-as-configuration: no config files; /customize and /debug skills drive changes through Claude Code
- Local-only data: no user accounts; only anonymous setup diagnostics leave the machine, and NANOCLAWNODIAGNOSTICS=1 disables them
Integrates with
Claude Code
Terminal-based agentic coding tool that reads your codebase and runs tasks through natural-language commands
Codex
Lightweight coding agent that runs in your terminal
-
Ollama
Runs open large language models locally without an API key
OpenCode
Open-source AI coding agent that runs in the terminal, an IDE, or a desktop app
