Merged WhatsApp CLI support with HTTP API server. Features: - HTTP API server for CLI-to-bot communication across Docker boundaries - WhatsApp text + file sending via `lettabot-message send --file photo.jpg` - Unified multipart endpoint at /api/v1/messages - Security: timing-safe auth, localhost binding, same-origin CORS - Bad MAC error handling for WhatsApp encryption renegotiation Written by Cameron ◯ Letta Code
147 lines
4.9 KiB
Plaintext
147 lines
4.9 KiB
Plaintext
# ============================================
|
|
# LettaBot Configuration
|
|
# ============================================
|
|
|
|
# Letta API Key (from app.letta.com)
|
|
LETTA_API_KEY=your_letta_api_key
|
|
|
|
# Working directory for agent workspace
|
|
# WORKING_DIR=/tmp/lettabot
|
|
|
|
# Custom system prompt (optional)
|
|
# SYSTEM_PROMPT=You are a helpful assistant...
|
|
|
|
# Allowed tools (comma-separated)
|
|
# ALLOWED_TOOLS=Read,Glob,Grep,Task,web_search,conversation_search
|
|
|
|
# ============================================
|
|
# Telegram (required: at least one channel)
|
|
# ============================================
|
|
# Get token from @BotFather on Telegram
|
|
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
|
|
|
|
# DM access policy: pairing (default), allowlist, open
|
|
# - pairing: Unknown senders get a code, must be approved via CLI
|
|
# - allowlist: Only users in TELEGRAM_ALLOWED_USERS can message
|
|
# - open: Anyone can message
|
|
# TELEGRAM_DM_POLICY=pairing
|
|
|
|
# Restrict to specific Telegram user IDs (comma-separated)
|
|
# Used when dmPolicy is 'allowlist', or as pre-approved users for 'pairing'
|
|
# TELEGRAM_ALLOWED_USERS=123456789,987654321
|
|
|
|
# ============================================
|
|
# Slack (optional)
|
|
# ============================================
|
|
# Get tokens from api.slack.com/apps
|
|
# Bot Token: xoxb-... (OAuth & Permissions)
|
|
# App Token: xapp-... (Socket Mode, enable in app settings)
|
|
|
|
# SLACK_BOT_TOKEN=xoxb-your-bot-token
|
|
# SLACK_APP_TOKEN=xapp-your-app-token
|
|
|
|
# Restrict to specific Slack user IDs (e.g., U01234567)
|
|
# SLACK_ALLOWED_USERS=U01234567,U98765432
|
|
|
|
# ============================================
|
|
# WhatsApp (optional)
|
|
# ============================================
|
|
# Enable WhatsApp (will show QR code on first run)
|
|
# WHATSAPP_ENABLED=true
|
|
|
|
# ============================================
|
|
# Signal (optional)
|
|
# ============================================
|
|
# Requires signal-cli: brew install signal-cli
|
|
# Link with: signal-cli link -n "LettaBot" (scan QR in Signal app)
|
|
|
|
# Your Signal phone number (E.164 format)
|
|
# SIGNAL_PHONE_NUMBER=+15551234567
|
|
|
|
# Path to signal-cli binary (default: signal-cli)
|
|
# SIGNAL_CLI_PATH=signal-cli
|
|
|
|
# HTTP daemon settings (default: 127.0.0.1:8090)
|
|
# SIGNAL_HTTP_HOST=127.0.0.1
|
|
# SIGNAL_HTTP_PORT=8090
|
|
|
|
# DM access policy: pairing (default), allowlist, open
|
|
# - pairing: Unknown senders get a code, must be approved via CLI
|
|
# - allowlist: Only users in SIGNAL_ALLOWED_USERS can message
|
|
# - open: Anyone can message
|
|
# SIGNAL_DM_POLICY=pairing
|
|
|
|
# Restrict to specific phone numbers (used with allowlist, or pre-approved for pairing)
|
|
# SIGNAL_ALLOWED_USERS=+15559876543,+15551112222
|
|
|
|
# Enable/disable Note to Self messages (default: true)
|
|
# SIGNAL_SELF_CHAT_MODE=true
|
|
|
|
# ============================================
|
|
# Polling (system-level background checks)
|
|
# ============================================
|
|
# Polls every minute by default for new emails, etc.
|
|
# POLLING_INTERVAL_MS=60000
|
|
|
|
# Gmail - requires gog CLI
|
|
# Install: brew install steipete/tap/gogcli
|
|
# Setup: gog auth add you@gmail.com --services gmail
|
|
# GMAIL_ACCOUNT=you@gmail.com
|
|
|
|
# Session storage path
|
|
# WHATSAPP_SESSION_PATH=./data/whatsapp-session
|
|
|
|
# Restrict to specific phone numbers (with country code)
|
|
# WHATSAPP_ALLOWED_USERS=+15551234567,+15559876543
|
|
|
|
# ============================================
|
|
# Cron Jobs (optional)
|
|
# ============================================
|
|
# Enable scheduled tasks
|
|
# CRON_ENABLED=true
|
|
|
|
# ============================================
|
|
# Heartbeat (optional)
|
|
# ============================================
|
|
# Heartbeat interval in minutes (set to enable heartbeat)
|
|
# Agent checks HEARTBEAT.md for tasks. Responds HEARTBEAT_OK if nothing to do.
|
|
# HEARTBEAT_INTERVAL_MIN=30
|
|
|
|
# Delivery target (format: channel:chatId). Defaults to last messaged chat.
|
|
# HEARTBEAT_TARGET=telegram:123456789
|
|
|
|
# Custom heartbeat prompt (optional)
|
|
# HEARTBEAT_PROMPT=Read HEARTBEAT.md if it exists. If nothing needs attention, reply HEARTBEAT_OK.
|
|
|
|
# ============================================
|
|
# Gmail Integration (optional)
|
|
# ============================================
|
|
# GMAIL_ENABLED=true
|
|
# GMAIL_WEBHOOK_PORT=8788
|
|
# GMAIL_WEBHOOK_TOKEN=your_webhook_secret
|
|
# GMAIL_CLIENT_ID=your_client_id.apps.googleusercontent.com
|
|
# GMAIL_CLIENT_SECRET=your_client_secret
|
|
# GMAIL_REFRESH_TOKEN=your_refresh_token
|
|
# GMAIL_TELEGRAM_USER=123456789
|
|
|
|
# ============================================
|
|
# API Server (for Docker/CLI integration)
|
|
# ============================================
|
|
# API key for CLI authentication (auto-generated if not set)
|
|
# Check bot server logs on first run to see the generated key
|
|
# LETTABOT_API_KEY=your-secret-key-here
|
|
|
|
# API server URL (for CLI when bot runs in Docker)
|
|
# LETTABOT_API_URL=http://localhost:8080
|
|
|
|
# API server port (default: 8080)
|
|
# PORT=8080
|
|
|
|
# API server bind address (default: 127.0.0.1 for security)
|
|
# Use 0.0.0.0 in Docker to expose on all interfaces
|
|
# API_HOST=127.0.0.1
|
|
|
|
# CORS allowed origin (default: same-origin only)
|
|
# Use '*' to allow all origins (not recommended for production)
|
|
# API_CORS_ORIGIN=*
|