Cuatro asistentes personales de IA, cuatro filosofias distintas.
Theo — Esqueleto funcional. ~600 lineas. Ejercicio de aprendizaje.
NanoClaw — Producto robusto. ~5,000 lineas. Theo maduro con seguridad, browser, multi-canal.
nanobot — Framework hackeable. ~3,700 lineas. Python async, multi-LLM, multi-canal nativo, sin containers.
OpenClaw — Plataforma completa. ~564,000 lineas. Gateway con 38 extensiones, apps nativas, plugin system, vector memory.
| Theo | NanoClaw | nanobot | OpenClaw | |
|---|---|---|---|---|
| Lenguaje | TypeScript | TypeScript | Python | TypeScript |
| Escala | ~600 LOC | ~5,000 LOC | ~3,700 LOC | ~564,000 LOC |
| Archivos | ~10 | ~15 | ~40 | ~3,164 |
| Proceso | 1 Node.js | 1 Node.js | 1 Python async | Node.js gateway + Pi agent runtime |
| Ejecucion del agente | Container → Claude Agent SDK | Container → Claude Agent SDK | Directo → LLM API via LiteLLM | Pi agent runtime (ACP protocol) |
| Aislamiento | Linux VM por invocacion | Linux VM + mount security | Mismo proceso, opcional workspace-only | Pi sandbox + workspace-only |
| Base de datos | SQLite | SQLite | Archivos (JSONL, JSON, Markdown) | SQLite + sqlite-vec (vector embeddings) |
| Config | Hardcoded + .env | src/config.ts + .env | ~/.nanobot/config.json (Pydantic) | YAML con Zod schemas + hot-reload |
| Monorepo | No | No | No | Si (pnpm workspaces) |
| Canal | Theo | NanoClaw | nanobot | OpenClaw |
|---|---|---|---|---|
| baileys directo | baileys directo | Node.js bridge → Python | baileys directo | |
| Telegram | — | via skill | Bot API nativo | grammy nativo |
| Discord | — | — | Gateway nativo | discord.js nativo |
| Slack | — | — | Socket Mode nativo | Bolt SDK nativo |
| — | via skill | IMAP/SMTP nativo | — | |
| X/Twitter | — | via skill | — | — |
| iMessage | — | — | — | BlueBubbles nativo |
| Signal | — | — | — | signal-cli nativo |
| Google Chat | — | — | — | nativo |
| Feishu | — | — | WebSocket nativo | extension |
| DingTalk | — | — | Stream nativo | extension |
| — | — | botpy nativo | — | |
| Teams | — | — | — | extension |
| Matrix | — | — | — | extension |
| WebChat | — | — | — | nativo |
| Total | 1 | 1 + skills | 9 nativos | 8 nativos + 38 extensiones |
| Theo | NanoClaw | nanobot | OpenClaw | |
|---|---|---|---|---|
| Claude | Unico (Agent SDK) | Unico (Agent SDK) | Uno de 50+ (LiteLLM) | Principal (API/OAuth) |
| OpenAI | No | No | Si | Si (ChatGPT, Codex) |
| No | No | Si (Gemini) | Si (Gemini, Bedrock) | |
| Otros | No | No | DeepSeek, vLLM, OpenRouter, etc. | GitHub Copilot, Bedrock |
| Multi-profile | No | No | No | Si (failover + cooldown) |
| Theo | NanoClaw | nanobot | OpenClaw | |
|---|---|---|---|---|
| Shell/Bash | Claude Code tools | Claude Code tools | exec propio (timeout, blocked cmds) | Pi bash (node-pty) |
| Filesystem | Claude Code tools | Claude Code tools | read/write/list propios | Pi tools (workspace-scoped) |
| Web search | Claude Code tools | Claude Code tools | Brave API | Claude tools |
| Web fetch | Claude Code tools | Claude Code tools | httpx + readability | Claude tools |
| Browser | No | Chromium + agent-browser | No | Playwright headless |
| Canvas | No | No | No | Si (render visual output) |
| Webhooks | No | No | No | Si |
| Subagentes | No | No | spawn() en background | No |
| MCP | send_message, schedule_task, list_tasks, check_new_messages | send_message, schedule_task + management | MCP servers externos | — |
| Theo | NanoClaw | nanobot | OpenClaw | |
|---|---|---|---|---|
| Conversacion | Session resume (Agent SDK transcripts) | Session resume (Agent SDK transcripts) | JSONL por sesion | Session files + vector context |
| Memoria larga | CLAUDE.md por grupo | CLAUDE.md por grupo + global | MEMORY.md + HISTORY.md | Vector embeddings (sqlite-vec) |
| Busqueda semantica | No | No | No | Si (BM25 + vector hybrid) |
| Consolidacion | SDK compaction | SDK compaction | LLM resume → HISTORY.md | Temporal decay + embedding refresh |
| Theo | NanoClaw | nanobot | OpenClaw | |
|---|---|---|---|---|
| Tipos | cron, interval, once | cron, interval, once | at, every, cron | cron expressions |
| Storage | SQLite | SQLite | JSON file | Config YAML |
| Heartbeat | No | No | HEARTBEAT.md cada 30 min | BOOT.md al iniciar |
| Theo | NanoClaw | nanobot | OpenClaw | |
|---|---|---|---|---|
| Protocolo | JSON stdin/stdout + IPC filesystem | JSON stdin/stdout + IPC filesystem streaming | Directo (async queues) | WebSocket (ACP protocol) |
| Follow-ups | Post-completion drain + re-invoke | Streaming: ipc/input/ polled cada 500ms | Inmediato (MessageBus) | Streaming nativo (tool/block streaming) |
| Gateway | No | No | No | Si — WebSocket server en localhost:18789 |
| Apps nativas | No | No | No | Si — macOS, iOS, Android |
| Theo | NanoClaw | nanobot | OpenClaw | |
|---|---|---|---|---|
| Aislamiento | Container Linux (VM real) | Container + mount allowlist + blocked patterns | Proceso compartido, workspace-only opcional | Pi sandbox + workspace-only |
| Ejecucion de comandos | Sin restriccion (aislado por VM) | Sin restriccion (aislado por VM) | Blocked patterns, timeout 60s | Sandbox policies configurables |
| DM policy | Auto-register | Auto-register + main/non-main | allowFrom lists | Pairing code por defecto |
| Auth | — | — | Bridge token opcional | Device signing + JWT + password |
| TLS | No | No | No | Fingerprint pinning opcional |
| Theo | NanoClaw | nanobot | OpenClaw | |
|---|---|---|---|---|
| Sistema | No | Claude Code skills | SKILL.md + frontmatter | Plugin SDK + extensions/ |
| Cantidad | 0 | ~10 skills | ~6 built-in | 38 extensiones |
| Carga | — | On-demand (slash commands) | Progressive (full/summary) | Runtime (jiti loader) |
| Third-party | No | No | clawhub registry | Plugin SDK exportable |
| Theo | NanoClaw | nanobot | OpenClaw | |
|---|---|---|---|---|
| Dev | npm run dev |
npm run dev |
nanobot run |
pnpm gateway:watch |
| Produccion | — | launchd plist | tmux/systemd | Docker, Fly.io, Render |
| Docker | No | Si (via skill) | Si (Dockerfile + compose) | Si (oficial, non-root) |
| Apps nativas | No | No | No | macOS, iOS, Android |
| CLI | No | No | Si (typer) | Si (commander) |
| Web UI | No | No | No | Si (Control UI en gateway) |
Theo — El esqueleto. ~600 lineas que demuestran la arquitectura container + Agent SDK + WhatsApp de punta a punta. Para aprender.
NanoClaw — El producto personal. Misma arquitectura que Theo pero listo para uso real: seguridad, browser, multi-canal, recovery. Un solo LLM (Claude), un solo paradigma (containers aislados).
nanobot — El framework hackeable. Python async, multi-LLM (50+ providers), 9 canales nativos, skills, subagentes. Sin containers — mas ligero pero sin aislamiento real.
OpenClaw — La plataforma. 564K lineas, 38 extensiones, apps nativas, vector memory, gateway WebSocket, plugin SDK, multi-provider con failover. Para quien quiere un ecosistema completo con todo resuelto.
La progresion: Theo enseña los fundamentos. NanoClaw los convierte en producto. nanobot explora el camino Python sin containers. OpenClaw es el destino final si no te importa la complejidad.