A cross-platform personal AI assistant powered by the Letta engine, featuring unified persistent memory across Telegram, Slack, Discord, WhatsApp, and Signal.
Overview#
LettaBot is a cross-platform personal AI assistant developed by the official Letta team (letta-ai organization), powered by the Letta Code SDK. It operates seamlessly as a single agent across Telegram, Slack, Discord, WhatsApp, and Signal, providing unified persistent memory across platforms and sessions. Primarily written in TypeScript (89.1%), it requires Node.js 20+. Current version is v0.2.0-alpha.12 with 463 commits.
Core Capabilities#
Multi-Channel Access & Interaction#
- Seamless integration with Telegram, Slack, Discord, WhatsApp, Signal
- Granular group control:
open,listen,mention-only,disabledmodes - Streaming responses with real-time message updates
- Voice messages: inbound transcription (OpenAI Whisper / Mistral Voxtral), outbound synthesis (ElevenLabs / OpenAI TTS), native voice bubble rendering
Memory & Context Management#
- Unified Memory: A single agent remembers conversations across all channels
- Persistent Memory: Conversation memory persists across sessions (days/weeks/months)
Proactive Behavior & Automation#
- Heartbeat: Periodic automatic task review
- Scheduling: One-time reminders and recurring Cron tasks
Tools & Skill Extensions#
- Local tool execution: file reading, code search
- Skills system: compatible with skills.sh and ClawdHub marketplaces, built-in 1Password and other skills
- Home Assistant integration via ClawdHub skills
- Feed ingestion: read-only Bluesky Jetstream access with DID filtering
Interface & Security#
- OpenAI-Compatible API: exposes
/v1/chat/completionsand/v1/modelsendpoints - Access control via pairing code mechanism
- Default security model restricts tool execution to read-only operations (Read, Glob, Grep, web_search, conversation_search)
Architecture Highlights#
- Outbound-Only Connections: No public URL or gateway needed. Telegram uses long polling, Slack/Discord use WebSocket, WhatsApp uses Baileys outbound WebSocket, Signal communicates via local daemon (127.0.0.1)
- Session Model: Default single agent + shared session; configurable per-channel session isolation (with shared underlying agent memory)
- Background Tasks: Heartbeat and Cron tasks run in "Silent Mode" — the agent must explicitly decide via CLI whether to send messages
- Release Pipeline: Automated via GitHub Actions, triggered by version tags for build, test, and release notes
- Deployment: Supports Railway (with
railway.toml), Docker (withDockerfile), and dev mode hot reload (npm run dev)
Installation & Usage#
Prerequisites: Node.js 20+, Letta API Key (from app.letta.com) or self-hosted Letta Docker Server, at least one channel credential.
git clone https://github.com/letta-ai/lettabot.git
cd lettabot
npm install && npm run build && npm link
lettabot onboard
lettabot server
Optional: lettabot connect chatgpt
Self-hosted backend:
docker run -v ~/.letta/.persist/pgdata:/var/lib/postgresql/data -p 8283:8283 -e OPENAI_API_KEY="your_key" letta/letta:latest
CLI & Configuration#
Core commands: lettabot onboard (interactive setup), lettabot connect (model provider), lettabot server (start server), lettabot configure (edit config), lettabot skills status (view skills), lettabot destroy (reset data). Bot commands: /start, /status, /heartbeat.
Agent CLI tools:
lettabot-message send --text "Hello from a background task"
lettabot-react add --emoji :eyes: --channel discord --chat 123 --message 456
lettabot-history fetch --limit 25 --channel discord --chat 123456789
Configuration file lettabot.yaml supports session mode (shared / per-channel), heartbeat strategy, per-channel group message handling rules, and user whitelists.
Unconfirmed Information#
- Actual availability of
letta.botwebsite not directly verified in README - Letta Code SDK independent repository/docs link not publicly available
- Full list of supported LLM models not explicitly listed
- skills.sh platform full URL not provided
- Moltbot related project repository link not given