A minimal Node.js application that connects Claude Agent SDK to WhatsApp using baileys. Features per-group memory via CLAUDE.md files, session continuity, scheduled tasks, and Gmail integration via MCP. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.3 KiB
3.3 KiB
NanoClaw Requirements
Original requirements and design decisions from the project creator.
Vision
A personal Claude assistant accessible via WhatsApp, with minimal custom code.
Core components:
- Claude Agent SDK as the core agent
- WhatsApp as the primary I/O channel
- Persistent memory per conversation and globally
- Scheduled tasks that run Claude and can message back
- Web access for search and browsing
Design philosophy:
- Leverage existing tools (WhatsApp connector, Claude Agent SDK, MCP servers)
- Minimal glue code
- File-based systems where possible (CLAUDE.md for memory, folders for groups)
Architecture Decisions
Message Routing
- A router listens to WhatsApp and routes messages based on configuration
- Only messages from registered groups are processed
- Trigger:
@Andyprefix (case insensitive), configurable viaASSISTANT_NAMEenv var - Unregistered groups are ignored completely
Memory System
- Per-group memory: Each group has a folder with its own
CLAUDE.md - Global memory: Root
CLAUDE.mdis read by all groups, but only writable from "main" (self-chat) - Files: Groups can create/read files in their folder and reference them
- Agent runs in the group's folder, automatically inherits both CLAUDE.md files
Session Management
- Each group maintains a conversation session (via Claude Agent SDK)
/clearcommand resets the session but keeps memory files- Old session IDs are archived to a file
Scheduled Tasks
- Users can ask Claude to schedule cron jobs from any group
- Tasks run in the context of the group that created them (with that group's memory)
- Task output is logged to the group's folder
Group Management
- New groups are added explicitly via the main channel
- Groups are identified by human-readable name when possible
- Each group gets a dedicated folder
Integration Points
- Using baileys library for WhatsApp Web connection
- Messages stored in SQLite, polled by router
- QR code authentication during setup
Email (Gmail)
- Read-only MCP integration (can read and send, but not an I/O channel)
- Optional, enabled during setup
Scheduler
- MCP server for creating/managing scheduled tasks
- Tasks execute Claude Agent SDK in group context
Web Access
- Built-in WebSearch and WebFetch tools
- Standard Claude Agent SDK capabilities
Setup & Customization
Philosophy
- Minimal configuration files
- Setup and customization done via Claude Code
- Users clone the repo and run Claude Code to configure
- Each user gets a custom setup matching their exact needs
Skills
/setup- Install dependencies, authenticate WhatsApp/Gmail, configure scheduler, start services/customize- General-purpose skill for adding capabilities (new channels like Telegram, new integrations, behavior changes)
Deployment
- Runs on local Mac via launchd
- Single Node.js process handles everything
Personal Configuration (Reference)
These are the creator's settings, stored here for reference:
- Trigger:
@Andy(case insensitive) - Response prefix:
Andy: - Persona: Default Claude (no custom personality)
- Gmail: Enabled
- Main channel: Self-chat (messaging yourself in WhatsApp)
Project Name
NanoClaw - A reference to Clawdbot (now OpenClaw).