# Product Requirements Document (PRD) ## Overview nanobot is an ultra-lightweight personal AI assistant framework. It provides a chat-controlled bot that can execute tasks through natural language commands, with pluggable "channels" for different messaging platforms. ## Target Audience - Individual developers and power users who want a personal AI assistant - Users who prefer self-hosted, privacy-respecting AI tools - Teams using Mattermost who want an integrated AI assistant - Users who need AI assistance with file operations, shell commands, and web searches ## Core Features ### 1. Agent Loop - Conversational AI powered by LLMs (Anthropic, OpenAI, Google, OpenRouter, Ollama) - Tool execution with iterative refinement - Session management with persistent conversation history - Memory consolidation to manage context window limits ### 2. Tool System - **Filesystem**: read, write, edit, list files - **Shell**: execute arbitrary commands with configurable security constraints - **Web**: search (Brave), fetch and parse URLs - **Message**: send intermediate updates to chat channels - **Spawn**: delegate long-running tasks to background subagents - **Cron**: schedule recurring tasks ### 3. Channel System - **Mattermost**: WebSocket-based real-time messaging with REST API for posts - **CLI**: local interactive terminal or single-shot mode - Extensible channel interface for future platforms ### 4. Scheduling - **Cron Service**: schedule tasks with cron expressions, intervals, or one-time execution - **Heartbeat**: periodic wake-up to check for tasks (e.g., HEARTBEAT.md) ### 5. Memory & Skills - Long-term memory with consolidation - Skill loading from workspace - System prompt construction from templates (SOUL.md, USER.md, TOOLS.md) ## Non-Goals (Out of Scope) - Non-Mattermost channels (Telegram, Discord, Slack, etc.) - MCP (Model Context Protocol) client support - Extended thinking/reasoning token handling - Onboard configuration wizard - Multi-tenancy or user authentication ## User Stories 1. As a developer, I want to ask the AI to read and modify files in my workspace so I can work faster. 2. As a team lead, I want the bot to respond in Mattermost channels when mentioned so my team can get AI help without leaving chat. 3. As a power user, I want to schedule recurring tasks so the AI can check things automatically. 4. As a privacy-conscious user, I want to run the bot locally with Ollama so my data stays on my machine. ## Success Metrics - Zero external dependencies for core functionality beyond LLM providers - Sub-second response time for tool execution - Graceful degradation on LLM errors - Clear error messages for configuration issues