Users were confused why selfhosted mode still required an API key. The validation check now properly skips the API key requirement when server.mode is 'selfhosted'. Also adds comprehensive selfhosted-setup.md guide covering: - Letta Docker server setup - Network configuration (Docker, remote servers) - Troubleshooting (connection refused, stuck agent, tool approvals) - Running as a service (systemd, launchd) - Hardware requirements Thanks to oculairthebear for the community guide that inspired this. Written by Cameron and Letta Code "I've learned that people will forget what you said, people will forget what you did, but people will never forget how you made them feel." - Maya Angelou
5.6 KiB
5.6 KiB
LettaBot Documentation
LettaBot is a multi-channel AI assistant powered by Letta that provides persistent memory and local tool execution across Telegram, Slack, Discord, WhatsApp, and Signal.
Guides
- Getting Started - Installation and basic setup
- Self-Hosted Setup - Run with your own Letta server
- Configuration Reference - All config options
- Commands Reference - Bot commands reference
- Scheduling Tasks - Cron jobs and heartbeats
- Gmail Pub/Sub - Email notifications integration
- Railway Deployment - Deploy to Railway
Channel Setup
- Telegram Setup - BotFather token setup
- Slack Setup - Socket Mode configuration
- Discord Setup - Bot application setup
- WhatsApp Setup - Baileys/QR code setup
- Signal Setup - signal-cli daemon setup
Architecture
LettaBot uses a single agent with unified memory across all channels:
┌──────────────────────────────────────────────────────────────────────────┐
│ Your Server / Machine │
│ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌──────────┐ ┌───────┐ │
│ │ Telegram │ │ Slack │ │ Discord │ │ WhatsApp │ │ Signal│ │
│ │ (grammY) │ │ (Socket) │ │ (Gateway) │ │(Baileys) │ │ (CLI) │ │
│ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ └────┬─────┘ └───┬───┘ │
│ │ │ │ │ │ │
│ └───────────────┴───────────────┴──────────────┴────────────┘ │
│ │ │
│ ┌─────────▼─────────┐ │
│ │ LettaBot Core │ │
│ │ (TypeScript) │ │
│ │ │ │
│ │ • Message Router │ │
│ │ • Session Mgmt │ │
│ │ • Heartbeat/Cron │ │
│ └─────────┬─────────┘ │
│ │ │
│ ┌─────────▼─────────┐ │
│ │ Letta Code SDK │ │
│ │ (subprocess) │ │
│ │ │ │
│ │ Local Tools: │ │
│ │ • Read/Glob/Grep │ │
│ │ • Bash │ │
│ │ • web_search │ │
│ └─────────┬─────────┘ │
└────────────────────────────────────┼──────────────────────────────────────┘
│ Letta API
▼
┌──────────────────────────┐
│ Letta Server │
│ (api.letta.com or │
│ self-hosted Docker) │
│ │
│ • Agent Memory │
│ • LLM Inference │
│ • Conversation History │
└──────────────────────────┘
Key Features
- Multi-Channel - Chat across Telegram, Slack, Discord, WhatsApp, and Signal
- Unified Memory - Single agent remembers everything from all channels
- Persistent Memory - Conversations persist across days/weeks/months
- Local Tool Execution - Agent can search files, run commands on your machine
- Voice Messages - Automatic transcription via OpenAI Whisper
- Streaming Responses - Real-time message updates as the agent thinks
- Background Tasks - Heartbeats and cron jobs for proactive actions