Files
lettabot/.env.example
Parth Modi d1d758739d feat(whatsapp): add lettabot-message CLI support for text and files (#89)
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
2026-02-03 17:21:27 -08:00

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=*