NanoClaw Claude skills

A small self-hosted assistant that runs Claude agents in Docker containers and connects to chat apps, extended by about 35 Claude Code setup skills.

Our verdict Recommended with caveats

Active and security-minded, but it is a whole runtime that installs Docker, holds your credentials and connects to messaging accounts, so it is a bigger commitment than a skill.

What NanoClaw does

NanoClaw is an application, not a pure skill pack. It runs an assistant on the Claude Agent SDK where each agent lives in its own Linux container and sees only what is mounted. It connects to messaging channels such as Slack, Telegram, Discord, WhatsApp and iMessage, and supports memory and scheduled jobs. The author positions it as a smaller, easier-to-audit alternative to OpenClaw. You clone the repo and run bash nanoclaw.sh, which installs Node, pnpm and Docker if missing, sets up a credential gateway so agents never hold raw API keys, builds the container image and pairs a first channel; if a step fails it hands off to Claude Code to diagnose.

The repo's skills live in .claude/skills and are mostly add-* recipes that you run in Claude Code to change your own fork: add-slack, add-telegram, add-discord, add-gchat, add-github, add-linear, add-ollama-provider, add-opencode, add-codex, add-cursor, add-dashboard and a long tail of others. Several are large, 10-22 KB, and a few ship scripts and tests (add-clidash has 22 scripts and 15 tests). Customization is meant to be done by editing code rather than configuration. The README documents a free optional account for a prebuilt image and a managed Slack app, and anonymous setup diagnostics that can be switched off.

Good for

  • Running a personal assistant reachable from chat apps with container isolation
  • Developers who want a small codebase they can read and fork
  • Adding channels and tools through guided Claude Code skills

Not for

  • Teams that only want a drop-in SKILL.md for their existing agent
  • Environments where installing Docker and a background service is not allowed

What's inside depth 4/5

About 35 setup skills with several at 10-22 KB, some with dozens of scripts and tests, on top of a full application with CI and docs.

Skills
64
Reference docs
53
Scripts
212
Tests / evals
109
Templates
2
Avg SKILL.md
10.2 KB

Counted from the repository file tree. How we score depth.

Dependencies and costs

  • Docker Desktop or Docker Engine (WSL2 on Windows)
  • Node.js and pnpm (installed by nanoclaw.sh)
  • Anthropic credentials
  • Accounts and tokens for each chat channel you connect
  • Optional free NanoClaw account for the prebuilt image and managed Slack app
  • Telemetry: Anonymous setup diagnostics are reported; set NANOCLAW_NO_DIAGNOSTICS=1 to turn them off. Fetching the prebuilt image needs a free account, which shares your email address and when you request an image. Local builds need no account.

Setting up NanoClaw step by step

NanoClaw runs on macOS or Linux. On Windows it runs through WSL2. You need Docker Desktop on macOS and Windows, or Docker Engine on Linux. The setup script installs Docker for you if it is missing, but it helps to know which one you will end up with.

  1. Clone the repo and start the setup script. The README clones into a nanoclaw-v2 directory:

    git clone https://github.com/nanocoai/nanoclaw.git nanoclaw-v2
    cd nanoclaw-v2
    bash nanoclaw.sh
    
  2. Let the script work through its stages: Node and pnpm, Docker, the credential gateway (where your Anthropic credential is registered), and the agent container build.

  3. Pick a first channel. The options are Slack, Telegram, Discord, WhatsApp, iMessage, or a local CLI. The local CLI lets you talk to the agent before you create any bot tokens or chat accounts.

  4. If you opted into the free account, setup opens the portal in your browser once. You sign in there and approve the terminal you are running from. The browser only sees a one-time sign-in code. The install token goes from the account service straight to your machine and is stored with the sign-in record in ~/.config/nanoclaw/account.json with mode 0600. To log a machine out later, forget it under Devices in the portal, and its token stops working.

Once the first agent answers, the README suggests asking Claude Code to walk you through the codebase before you change anything. NanoClaw is built around editing code rather than config files, so that walkthrough is how you learn where to make changes.

Migrating from NanoClaw v1

v1 users do not have to start over. Clone v2 into a fresh directory next to your existing install and run the migration script:

git clone https://github.com/nanocoai/nanoclaw.git nanoclaw-v2
cd nanoclaw-v2
bash migrate-v2.sh

migrate-v2.sh looks for v1 in a sibling directory. If yours is somewhere else, set NANOCLAW_V1_PATH=/path/to/nanoclaw. The script merges your .env, seeds the v2 database from registered_groups, and copies group folders, session data and scheduled tasks. It also installs the channel adapters you select, copies channel auth state (including the Baileys keystore for WhatsApp), and builds the agent container. After that it hands off to Claude Code for the steps that need judgment: owner seeding, shared memory migration and replaying your fork customizations.

Run the script from a normal terminal, not inside a Claude session. The README says the deterministic part needs interactive prompts and real shell I/O for the Node and pnpm bootstrap, Docker, the credential gateway and the container build.

The script does not switch the system service over to v2. You can choose "switch to v2" at the prompt, or switch manually once you have tested it. Your v1 install stays untouched either way. The repo documents the differences in docs/v1-to-v2-changes.md.

What the add-* skills look like in practice

The setup skills are written as careful, multi-phase procedures. Each one checks whether it has already been applied and stops on conflicts.

add-anydoc shows the pattern. It adds local conversion of Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV and text-based PDF files to Markdown inside the agent container, using the Firecrawl AnyDoc CLI pinned at 0.1.6. Before touching any files, it has Claude read CONTRIBUTING.md, docs/skill-guidelines.md and the supply chain section of docs/SECURITY.md. It then checks the npm registry to confirm the version exists, is not deprecated, and has been published for at least 72 hours. It inspects container/cli-tools.json for duplicate or conflicting pins. It also installs a container skill, convert-documents-to-markdown, that the agent uses at runtime. That skill tells the agent to treat converted content as untrusted, to quote attachment paths safely, and never to upload a failed document to a hosted parser without your permission. Scanned and image-only PDFs are not supported because they need OCR.

add-atomic-chat-tool adds a stdio MCP server so the container agent can call local models served by the Atomic Chat desktop app on http://127.0.0.1:1337/v1. It exposes two tools, atomic_chat_list_models and atomic_chat_generate. Claude remains the orchestrator. The skill copies its source and tests into both the container (Bun) tree and the host (Node) tree. It registers the server in index.ts and forwards host environment variables in container-runner.ts. Atomic Chat is macOS only for now, according to the skill.

Some add-* folders contain nested container-skills directories, such as dial-cli under add-dial-tool. These are installed inside the agent's container, while the outer skill runs in Claude Code against your fork.

How container isolation and the credential gateway fit together

Each agent runs in its own Linux container and sees only what is explicitly mounted. Bash commands the agent runs execute inside that container, not on your host. The README contrasts this with OpenClaw, which it describes as nearly half a million lines of code, 53 config files and 70+ dependencies. OpenClaw relies on allowlists and pairing codes, and everything runs in one Node process with shared memory.

API keys are handled separately from the containers. Agents never hold raw keys. Outbound requests go through the credential gateway, which injects credentials at request time and enforces per-agent policies and rate limits.

The newest Slack setup builds on the same per-agent model. Setup provisions a separate Slack app for each agent, including manifest, avatar and workspace install, with no tokens to paste. You can spawn new teammates from chat. Each one gets its own bot identity, container and memory, and they share rooms and canvases.

Security review

Broad access

This skill asks for more access than most, or sends data to another service. That is usually a design choice rather than bad intent, but you should know before you install it.

  • Turns off permission prompts or safety checksThe Codex provider runs the agent with sandbox 'danger-full-access', approval policy 'never' (line 87), auto-approves approval requests and starts Codex with --dangerously-bypass-hook-trust (line 19); the code comment says container isolation and the OneCLI allow-list are the intended boundary..claude/skills/add-codex/payload/container/agent-runner/src/providers/codex-app-server.ts:86

NanoClaw is a self-hosted agent assistant whose add-* skills install channels, model providers and a credential gateway (OneCLI or Iron Proxy) by copying code into your checkout and running Docker. Setup pipes several vendor installers into a shell, reports anonymous diagnostics unless NANOCLAW_NO_DIAGNOSTICS=1 is set, optionally signs you in to a community portal, and the Codex provider runs without sandbox or approval prompts inside the agent container. The core application and most skill code were not in the files we could read.

Worth knowing

  • Installs with curl | shSetup installs the OneCLI gateway with 'curl --proto =https -fsSL https://onecli.sh/install | /bin/sh' (version pinned through ONECLI_VERSION); install-claude.sh pipes https://claude.ai/install.sh into bash, add-dial/SKILL.md line 117 pipes https://getdial.ai/install, and add-rtk/SKILL.md line 23 pipes an install.sh from the rtk-ai master branch (unpinned)..claude/skills/add-onecli/scripts/setup.ts:242
  • Sends usage data by default (can be turned off)README says NanoClaw reports anonymous setup diagnostics and that NANOCLAW_NO_DIAGNOSTICS=1 turns them off; the diagnostics code is not in the files we have.README.md:102
  • Runs remote code at an unpinned versionStep 1 runs https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh from a moving branch..claude/skills/add-rtk/SKILL.md:23
  • Changes files outside your projectWrites outside the checkout: ~/.config/nanoclaw/account.json (sign-in record and install token), ~/.config/nanoclaw/device-key.json, ~/.onecli/.env, a systemd user or launchd service, and shell profile PATH entries; all key files are mode 0600.README.md:125
  • Makes network requestsThe host keeps one outbound connection to portal.nanoclaw.dev for account perks (opt-in; a free account shares your email address and when you request an image); setup also downloads OneCLI releases from GitHub and reaches model providers through the credential gateway.README.md:130
  • Installs packages or toolsInstalls Docker-based gateway containers, the pinned onecli CLI, Iron Proxy images, pnpm and per-skill npm packages (for example a pinned @firecrawl/anydoc); control-preflight.ts line 12 prints a 'docker run --privileged ... --install amd64' command to enable emulation..claude/skills/add-onecli/scripts/setup.ts:242
  • Relies on a CLI or package we could not reviewDepends on Docker, jq, the onecli CLI and gateway, the Claude Code CLI, the dial CLI and, per skill, ollama, codex, cursor and opencode runtimes that are not part of the repository..claude/skills/add-onecli/scripts/check-grants-gateway.sh:1
  • Needs an API key for its own serviceCaptures a Claude subscription OAuth token from 'claude setup-token' and stores it in the local OneCLI vault or Iron Proxy secret store (mode 0600) instead of giving it to agents; the token is used for Anthropic requests..claude/skills/add-onecli/scripts/register-claude-token.sh:1

What we checked

The repository (1343 files) on Oct 29, 2026. Not a full review: 1031 of 1343 files were not downloaded (large repository; we reviewed the skill folders); we read 11 of 185 code files; it relies on code outside the repository: NanoClaw core (nanoclaw.sh, setup/, src/, container/ and the diagnostics reporter) is not in the files we have; 1031 of 1343 repository files were not downloaded; OneCLI gateway and CLI, Iron Proxy and Iron Control images, the Echo hardened agent image and the portal.nanoclaw.dev service; installers served from onecli.sh, claude.ai, getdial.ai and raw.githubusercontent.com/rtk-ai/rtk.

NVIDIA SkillSpector static scan: 396 pattern hits (Privilege Escalation 143, Tool Misuse 91, Agent Snooping 48, Rogue Agent 31, Data Exfiltration 28, Supply Chain 15). The 396 SkillSpector hits come from a full application with many test fixtures: rm -rf cleanup instructions in REMOVE.md files, .env and /etc/passwd strings in deny-list tests, and hostPath text in fixtures. The real findings are the curl-to-shell installers, the Codex full-access/never-approve defaults and the opt-out setup diagnostics, recorded as flags.

A review, not a certification. Skills change after we check them — read the files before installing.

License

MIT — commercial use allowed.

Can it run unattended?

Yes. It is designed as a long-running service with scheduled jobs and per-agent containers, though it is an assistant runtime rather than a task loop with verification.

Alternatives to NanoClaw

Orca

stablyai/orca

An open-source desktop and mobile app for running several coding agents in parallel git worktrees, plus 11 thin skills that hand agents the app's CLI.

With caveats Check first Depth 2/5

Paperclip

paperclipai/paperclip

A self-hosted app for orchestrating teams of AI agents with org charts, budgets and approvals; its skills are mostly maintainer workflows.

With caveats Broad access Depth 4/5

herdr

herdrdev/herdr

A Rust terminal multiplexer for coding agents, with a skill that lets one agent split panes, start other agents and wait on them.

With caveats Check first Depth 2/5

FAQ

What is NanoClaw?

NanoClaw is an open-source assistant that runs Claude agents inside Docker containers and connects them to chat apps like Slack, Telegram and WhatsApp. It is positioned as a smaller, more auditable alternative to OpenClaw.

How do I install NanoClaw?

Clone github.com/nanocoai/nanoclaw and run bash nanoclaw.sh. The script installs Node, pnpm and Docker if they are missing, registers your Anthropic credential with a gateway, builds the agent container and pairs a first channel.

Does NanoClaw collect data?

The README says it reports only anonymous setup diagnostics, which you can disable with NANOCLAW_NO_DIAGNOSTICS=1, and that agents, messages, files and keys stay on your machine. The optional prebuilt image and portal perks need a free account that shares your email address.

NanoClaw vs OpenClaw?

The README says OpenClaw is far larger and relies on application-level permissions in one Node process, while NanoClaw uses a small codebase and per-agent container isolation. Choose NanoClaw if you want to read and own the whole code.

Can I run NanoClaw on Windows?

Yes, through WSL2. The README lists Docker Desktop for macOS and Windows and Docker Engine for Linux, and says you run the same bash nanoclaw.sh command on every platform.

Can I try NanoClaw without connecting WhatsApp, Telegram or Slack?

Yes. When nanoclaw.sh pairs your first channel, one of the options is a local CLI, so you can message the agent before setting up any chat accounts or bot tokens.

Can NanoClaw agents use local models?

The add-atomic-chat-tool skill adds an MCP server that lets the container agent send prompts to local models running in the Atomic Chat desktop app, which is macOS only for now. Claude stays the orchestrator. The repo also includes an add-ollama-provider skill.

Sources: GitHub repository (stars, license, file tree, last push Oct 28, 2026). Review based on the README and SKILL.md files as published.