Files
nanobot-ts/docs/PRD.md
2026-03-13 12:24:20 -06:00

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

  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