Files
lettabot/docs
Cameron 673f247793 feat: custom heartbeat prompt via YAML config or file (#233)
* feat: custom heartbeat prompt via YAML config or file

Wire up the existing but unused HeartbeatConfig.prompt field so users
can customize what the agent sees during heartbeats. Adds three ways
to set it: inline YAML (prompt), file-based (promptFile, re-read each
tick for live editing), and env var (HEARTBEAT_PROMPT). Also documents
the <no-reply/> opt-out behavior.

Fixes #232

Written by Cameron ◯ Letta Code

"The only way to do great work is to love what you do." -- Steve Jobs

* test: add coverage for heartbeat prompt resolution

Tests buildCustomHeartbeatPrompt and HeartbeatService prompt resolution:
- default prompt fallback
- inline prompt usage
- promptFile loading
- inline > promptFile precedence
- live reload (file re-read each tick)
- graceful fallback on missing file
- empty file falls back to default

Written by Cameron ◯ Letta Code

"The only way to do great work is to love what you do." -- Steve Jobs
2026-02-09 10:01:15 -08:00
..
2026-02-05 15:13:19 -08:00
2026-02-05 15:13:19 -08:00

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

Channel 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