# Nanobot Feature Parity

This document tracks which nanobot features planck-claw retains, which were removed by design, and what has changed in the transition to a headless, OpenRouter-only API library.

## Design Decisions

planck-claw diverges from nanobot in three deliberate ways:

1. **Headless API library** — No CLI. Consumers import the library and drive it programmatically.
2. **OpenRouter-only** — All LLM traffic routes through OpenRouter. No direct-provider integrations (Anthropic, OpenAI, etc.) are bundled.
3. **No built-in channel adapters** — Telegram, Discord, DingTalk, and other platform-specific adapters are removed. The `BaseChannel` abstract class and `ChannelManager` remain so consumers can build their own.

## Retained Features

### Core Infrastructure

| Feature | Location | Notes |
|---------|----------|-------|
| Agent Loop | `src/agent/` | Conversation orchestration and tool execution cycle |
| Context Builder | `src/agent/` | System prompt construction with skills and history |
| Memory System | `src/memory/` | Conversation persistence and session isolation |
| Skills Loader | `src/skills/` | Markdown-based skill context injection |
| Tool Registry | `src/agent/tools/` | Shell, read file, write file |
| Session Manager | `src/session/manager.ts` | Multi-user session tracking and persistence |
| Message Bus | `src/bus/index.ts` | Event-driven pub/sub routing |
| Gateway Server | `src/gateway/server.ts` | Channel coordination hub |
| Heartbeat | `src/heartbeat/index.ts` | Configurable proactive monitoring |
| Subagent Tasks | `src/agent/subagent.ts` | Background task execution with concurrency control |

### Channel Infrastructure

| Feature | Location | Notes |
|---------|----------|-------|
| BaseChannel | `src/channels/` | Abstract class for custom channel adapters |
| ChannelManager | `src/channels/` | Registration, lifecycle, and status tracking |
| Message format | `src/channels/` | Standardized message schema |

### LLM Provider

| Feature | Location | Notes |
|---------|----------|-------|
| OpenRouter | `src/providers/` | Sole provider — access to all OpenRouter models |

### Configuration & Validation

| Feature | Notes |
|---------|-------|
| Zod schema validation | Config validated at startup |
| Environment variable overrides | `OPENROUTER_API_KEY`, `LOG_LEVEL`, `NODE_ENV` |

## Removed Features

| Feature | Reason |
|---------|--------|
| CLI (`planck-claw agent`, `onboard`, `status`, `gateway`) | Headless library — no CLI |
| Anthropic direct provider | OpenRouter-only |
| OpenAI direct provider | OpenRouter-only |
| DeepSeek direct provider | OpenRouter-only |
| Groq direct provider | OpenRouter-only |
| Gemini direct provider | OpenRouter-only |
| MiniMax direct provider | OpenRouter-only |
| Dashscope/Qwen direct provider | OpenRouter-only |
| Moonshot/Kimi direct provider | OpenRouter-only |
| Zhipu/GLM direct provider | OpenRouter-only |
| vLLM direct provider | OpenRouter-only |
| AiHubMix provider | OpenRouter-only |
| Telegram adapter | No built-in adapters |
| Discord adapter | No built-in adapters |
| DingTalk adapter | No built-in adapters |
| WhatsApp adapter | No built-in adapters |
| Other channel adapters | No built-in adapters |
| Voice transcription | Not in scope |
| `channels login` command | No CLI |

## Comparison Summary

| Area | Nanobot | planck-claw |
|------|---------|-------------|
| Interface | CLI + library | Library only (headless) |
| LLM providers | 12 direct integrations | OpenRouter (gateway to all models) |
| Channel adapters | 3 built-in + 6 planned | 0 built-in; BaseChannel + ChannelManager for custom |
| Core agent loop | Yes | Yes |
| Memory & sessions | Yes | Yes |
| Skills system | Yes | Yes |
| Tool execution | Yes | Yes |
| Gateway + message bus | Yes | Yes |
| Subagent tasks | Yes | Yes |
| Heartbeat | Yes | Yes |

## Testing Status

- **Unit Tests**: Not yet implemented
- **Integration Tests**: Not yet implemented
- **Build Status**: Passing
- **Linting**: Passing
- **Type Safety**: TypeScript strict mode
