Quick start
Get NanoClaw up and running in minutes. Claude Code handles everything: dependencies, authentication, container setup, and service configuration.This guide assumes you have Node.js 20+ and Claude Code installed. See Installation for detailed requirements.
Setup process
Launch Claude Code
Open Claude Code in the NanoClaw directory:This launches Claude Code with access to the NanoClaw codebase.
Run the setup command
In Claude Code, run:Claude Code will automatically handle:
- Installing Node.js dependencies
- Setting up your container runtime (Apple Container or Docker)
- Building the agent container image
- Authenticating with Claude
- Connecting to WhatsApp
- Configuring your main channel
- Starting the background service
The
/setup skill is AI-native: no installation wizard, just Claude guiding you through each step.Authenticate with WhatsApp
During setup, you’ll be prompted to authenticate with WhatsApp. Choose one of three methods:QR code in browser (recommended for desktop)
- A browser window opens with a QR code
- Scan it with WhatsApp on your phone
- Go to Settings → Linked Devices → Link a Device
- Enter your phone number
- Receive a pairing code
- Enter it in WhatsApp on your phone
- QR code prints in your terminal
- Scan it with WhatsApp
Configure your main channel
Claude will ask you to configure:Trigger word: The word that activates NanoClaw (default:
@Andy)Channel type: Choose one:- Self-chat (recommended): Message yourself on WhatsApp
- Solo group: Create a group with just you
- DM with bot: Use a dedicated phone number
Self-chat is the most private option. Your main channel has full admin control over all groups.
Verify the setup
Claude will verify that everything is running correctly:✓ Service running
✓ Credentials configured
✓ WhatsApp authenticated
✓ Main channel registered
✓ Container runtime readyIf any checks fail, Claude will help you fix them.
What happens during setup?
Here’s what Claude Code does when you run/setup:
1. Bootstrap dependencies
1. Bootstrap dependencies
- Verifies Node.js 20+ is installed
- Runs
npm installto install dependencies - Tests that native modules (better-sqlite3) load correctly
- Detects your platform (macOS/Linux) and environment (WSL, headless)
2. Container runtime setup
2. Container runtime setup
- macOS: Offers choice between Docker (default) or Apple Container (native)
- Linux: Uses Docker (only option)
- Installs the chosen runtime if not present
- Starts the runtime service
- Builds the agent container image
- Tests that containers can run successfully
3. Claude authentication
3. Claude authentication
- Asks if you have a Claude subscription (Pro/Max) or Anthropic API key
- Subscription: Guides you to run
claude setup-tokenand add token to.env - API key: Guides you to add
ANTHROPIC_API_KEYto.env - These credentials allow agents to authenticate with Claude Code
4. WhatsApp authentication
4. WhatsApp authentication
- Chooses the best authentication method for your environment
- Handles QR code display or pairing code generation
- Saves authentication session to
store/auth/ - Verifies connection is stable
5. Channel configuration
5. Channel configuration
- Syncs WhatsApp groups from your account
- Registers your main channel in the database
- Creates the main group folder at
groups/main/ - Sets up the
CLAUDE.mdmemory file - Creates mount allowlist at
~/.config/nanoclaw/mount-allowlist.json
6. Service installation
6. Service installation
- macOS: Creates launchd service at
~/Library/LaunchAgents/com.nanoclaw.plist - Linux: Creates systemd service (user or system level)
- WSL without systemd: Creates
start-nanoclaw.shwrapper script - Starts the service
- Verifies the service is running
Usage examples
Once setup is complete, you can start using NanoClaw:Next steps
Customizing NanoClaw
Learn how to modify NanoClaw for your needs
Security model
Understand how container isolation works
Adding skills
Install additional capabilities like
/add-telegramTroubleshooting
Fix common issues
Monitoring and logs
Check what NanoClaw is doing:Updating NanoClaw
To pull upstream changes and merge with your customizations:- Pull the latest changes from GitHub
- Merge with your local modifications
- Run any database migrations
- Rebuild the container if needed
- Restart the service