2.6 KiB
2.6 KiB
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
- As a developer, I want to ask the AI to read and modify files in my workspace so I can work faster.
- 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.
- As a power user, I want to schedule recurring tasks so the AI can check things automatically.
- 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