campaign Announcements

Critical

This is a fan-made community site. Use only the official repository (github.com/qwibitai/nanoclaw) as the source of truth.

Important

No official fundraising/investment program has launched. Ignore impersonation attempts and unofficial claims.

Important

Anthropic OAuth terms changed (2026-02-19). Avoid Claude Code OAuth integrations temporarily until policy risk is clarified.

info Introduction

NanoClaw is a lightweight, fully autonomous personal AI assistant built on the Anthropic Claude Agent SDK. Agents run in isolated Linux containers (Apple Container on macOS, Docker on Linux/macOS). WhatsApp built-in, other channels via skills. Persistent SQLite memory, scheduled tasks, web access, and Agent Swarms.

memory
Lightweight Core
~500 lines TypeScript, Claude Agent SDK
smart_toy
AI Agent
Uses tools, recalls memory, executes tasks autonomously
swap_horiz
Agent Swarms
Delegate tasks to specialized sub-agents in parallel
shield
Secure by Default
Container isolation, .env secrets, deny-by-default channels
developer_board
Deploy Anywhere
macOS, Linux, Windows — anywhere Node.js runs

download Installation

NanoClaw is a TypeScript project. Clone the repo and install with npm.

Prerequisites: Node.js 18+, Claude CLI (npm install -g @anthropic-ai/claude-code), Git, an Anthropic API key.

npm / Claude CLI

# macOS / Linux — clone and setup
git clone https://github.com/qwibitai/NanoClaw.git
cd NanoClaw
claude
# Then run /setup in the Claude session

# Or install Claude CLI first:
npm install -g @anthropic-ai/claude-code

Quick Setup (Recommended)

git clone https://github.com/qwibitai/NanoClaw.git
cd NanoClaw
claude
# Run /setup inside the Claude session

# With environment variables pre-configured:
ANTHROPIC_API_KEY="sk-..." claude

# Quick start after setup:
npm start

Manual Build & Install

git clone https://github.com/qwibitai/NanoClaw.git
cd NanoClaw
npm install
# Edit src/index.ts to configure your settings
npm start

Dev fallback: run 'npm run dev' for development mode with hot reload.

rocket_launch Quick Start

Run onboarding once to set up your config, then start chatting.

# Clone and setup
git clone https://github.com/qwibitai/NanoClaw.git
cd NanoClaw && npm install

# Run setup wizard
npm run setup

# Start NanoClaw
npm start

# Development mode (hot reload)
npm run dev

# Run tests
npm test

Configuration is done by editing source code directly. API keys go in .env, channel config in src/index.ts.

terminal Commands

NanoClaw uses npm scripts for every workflow.

CommandDescription
npm run setupInteractive setup wizard — dependencies, authentication, container setup, service config
npm startStart the agent (runs compiled dist/index.js)
npm run devDevelopment mode with hot reload (tsx src/index.ts)
npm run buildCompile TypeScript to dist/
npm testRun test suite (vitest)
npm run authWhatsApp authentication — QR code pairing (tsx src/whatsapp-auth.ts)

forum Channels

WhatsApp is the built-in channel (via Baileys library). Other channels — Telegram, Discord, Slack — can be added via Claude Code skills (/add-telegram, /add-discord, /add-slack). Each group gets its own isolated container and CLAUDE.md memory.

# WhatsApp (built-in via Baileys library)
# Run 'npm run auth' to pair via QR code
# Per-group containers with isolated CLAUDE.md memory

# Add more channels via Claude Code skills:
# /add-telegram — Telegram bot support
# /add-discord — Discord gateway support
# /add-slack — Slack Events API support

# Start the agent (connects WhatsApp)
npm start

Tip: Run /add-telegram or /add-discord in Claude Code to add more channels. Skills modify your fork's source code directly.

build Tools

Tools are capabilities the agent can invoke during a conversation. All built-in tools are sandboxed and workspace-scoped by default.

# Built-in tools (provided by Claude Code inside containers):
# shell commands, file read/write, web search,
# web browsing (Chromium + agent-browser),
# agent delegation (swarms)

# Host-provided capabilities:
# SQLite memory, scheduled tasks (cron),
# WhatsApp messaging, IPC between host and containers

# Container image includes Chromium and agent-browser
# Apple Container on macOS, Docker on Linux

database Memory System

NanoClaw uses SQLite (better-sqlite3) for persistent storage — messages, groups, sessions, and scheduled tasks. Each group also has its own CLAUDE.md file for per-group memory, mounted into its container.

SQLite Database
Messages, groups, sessions, task state
Per-Group Memory
Each group has its own CLAUDE.md and isolated filesystem
Zero Dependencies
No Pinecone, no Redis, no LangChain
IPC Sync
Host and containers communicate via filesystem IPC
# SQLite database (better-sqlite3)
# Messages, groups, sessions, scheduled tasks, router state

# Per-group CLAUDE.md memory files
# Mounted into each group's container

# IPC via filesystem between host and containers
# No external database — everything is local

settings Configuration

NanoClaw doesn't use configuration files. To make changes, tell Claude Code what you want. The codebase is small enough that Claude can safely modify it. API keys go in .env, everything else is in source code.

# NanoClaw doesn't use configuration files
# To make changes, tell Claude Code what you want

# Key files:
# src/index.ts — orchestrator, state, message loop
# src/config.ts — constants, trigger pattern, paths
# .env — API key and runtime settings

# Environment variables:
ANTHROPIC_API_KEY="sk-ant-..."
ASSISTANT_NAME="Andy"
CONTAINER_IMAGE="nanoclaw-agent:latest"

model_training AI Providers

NanoClaw runs exclusively on the Anthropic Claude Agent SDK. Claude Code runs inside each container, providing all AI capabilities.

ComponentDescription
Claude Agent SDKCore AI engine — runs Claude Code inside containers with full tool access
Claude CodeInstalled globally in the container image, handles all agent interactions
MCP SDKModel Context Protocol for structured tool communication

NanoClaw is single-provider by design. The Claude Agent SDK handles model selection internally. Set ANTHROPIC_API_KEY in .env or authenticate via Claude Code OAuth.

key Environment Variables

Environment variables configured in your local .env file. Secrets are read on demand and never loaded into process.env.

# Required
ANTHROPIC_API_KEY=sk-ant-...

# Optional
ASSISTANT_NAME=Andy
ASSISTANT_HAS_OWN_NUMBER=false
CONTAINER_IMAGE=nanoclaw-agent:latest
CONTAINER_TIMEOUT=1800000
TZ=America/New_York
VariableDescription
ANTHROPIC_API_KEYAnthropic API key — passed to containers at runtime (required)
ASSISTANT_NAMETrigger word for the assistant (default: Andy)
ASSISTANT_HAS_OWN_NUMBERSet to 'true' if the assistant has its own WhatsApp number
CONTAINER_IMAGEDocker image name for agent containers (default: nanoclaw-agent:latest)
CONTAINER_TIMEOUTMax container runtime in ms (default: 1800000 / 30min)
TZTimezone for scheduled tasks (default: system timezone)

shield Security

Agents run in containers, not behind application-level permission checks. They can only access explicitly mounted directories.

Container Isolation
Apple Container on macOS, Docker on macOS/Linux. Each agent runs in its own Linux container.
Secret Isolation
Secrets are passed via stdin JSON to containers — never loaded into process.env, never leaked to child processes.
Mount Security
Allowlist stored outside project root. Symlink escape detection. Only explicitly mounted directories are accessible.
Non-root Execution
Containers run as non-root user. Project source mounted read-only. Writable paths are scoped per-group.
# Container isolation (Apple Container / Docker)
# Each agent runs in its own Linux container

# Secrets passed via stdin JSON, never in process.env
# Mount allowlists with symlink escape detection
# Containers run as non-root with read-only project mounts

account_tree Architecture

Single Node.js process. Agents execute in isolated Linux containers with filesystem isolation. Per-group message queue with concurrency control. IPC via filesystem.

ModuleDescription
src/index.tsOrchestrator — state, message loop, agent invocation
src/config.tsConfiguration constants, trigger pattern, paths
src/channels/whatsapp.tsWhatsApp connection via Baileys, auth, send/receive
src/container-runner.tsSpawns streaming agent containers with volume mounts
src/task-scheduler.tsRuns scheduled tasks via cron expressions
src/router.tsMessage formatting and outbound routing
src/db.tsSQLite operations — messages, groups, sessions, state
src/ipc.tsIPC watcher and task processing between host and containers
skills-engine/Skill manifest loading, state management, and replay
container/Dockerfile, agent-runner (Claude Agent SDK), browser automation

code Development

Standard TypeScript/Node.js workflow. Run 'npm run dev' for development with hot reload.

# Clone the repo
git clone https://github.com/qwibitai/NanoClaw.git
cd NanoClaw

# Install dependencies
npm install

# Run in development mode
npm run dev

# Run tests
npm test

# Build for production
npm run build

menu_book Docs Hub

For in-depth documentation, refer to the docs directory in the official repository.

DocumentPath
Project Specificationdocs/SPEC.md
Requirementsdocs/REQUIREMENTS.md
Security Modeldocs/SECURITY.md
SDK Deep Divedocs/SDK_DEEP_DIVE.md
Architecture Overviewdocs/nanoclaw-architecture-final.md
Repository Structuredocs/nanorepo-architecture.md
Apple Container Networkingdocs/APPLE-CONTAINER-NETWORKING.md
Debug Checklistdocs/DEBUG_CHECKLIST.md

Ready to run the stack?

git clone https://github.com/qwibitai/NanoClaw.git && cd NanoClaw && claude