Files
lettabot/lettabot.example.yaml
2026-03-13 14:40:04 -07:00

123 lines
5.3 KiB
YAML

# LettaBot Configuration
# Copy this to lettabot.yaml and fill in your values.
#
# Server modes:
# - 'api': Use Letta API (api.letta.com) with API key
# - 'docker': Use a Docker/custom Letta server
# Legacy aliases still accepted: 'cloud', 'selfhosted'
server:
mode: api
# For api mode, set your API key (get one at https://app.letta.com):
apiKey: sk-let-YOUR-API-KEY
# For docker mode, uncomment and set the base URL:
# mode: docker
# baseUrl: http://localhost:8283
agents:
- name: LettaBot
# displayName: "💜 Signo" # Prefix outbound messages (useful in multi-agent group chats)
# Note: model is configured on the Letta agent server-side.
# Select a model during `lettabot onboard` or change it with `lettabot model set <handle>`.
# workingDir: ~/my-project # Per-agent working directory (overrides global WORKING_DIR)
# Per-agent tool access (overrides global features.allowedTools / features.disallowedTools)
# features:
# allowedTools: [Read, Glob, Grep, web_search, conversation_search] # Read-only agent (no Bash/Edit/Write)
# Conversation routing (optional)
conversations:
mode: shared # "shared" (default) or "per-channel"
heartbeat: last-active # "dedicated" | "last-active" | "<channel>"
# perChannel: ["slack"] # Keep these channels isolated while others share a conversation
channels:
telegram:
enabled: true
token: YOUR-TELEGRAM-BOT-TOKEN
dmPolicy: pairing # 'pairing', 'allowlist', or 'open'
# groupDebounceSec: 5 # Debounce seconds (default: 5, 0 = immediate)
# instantGroups: ["-100123456"] # Groups that bypass batching (legacy)
# Group access + response mode:
# groups:
# "*": { mode: listen } # Observe all groups; only reply when @mentioned
# "-1001234567890": { mode: open } # This group gets all messages
# "-1009876543210": { mode: mention-only } # Drop unless @mentioned
# mentionPatterns: ["hey bot"] # Additional regex patterns for mention detection
# slack:
# enabled: true
# appToken: xapp-...
# botToken: xoxb-...
# groups:
# "*": { mode: listen }
# "C0123456789": { mode: open }
# discord:
# enabled: true
# token: YOUR-DISCORD-BOT-TOKEN
# groups:
# "*": { mode: listen }
# "1234567890123456789": { mode: open } # Server or channel ID
# whatsapp:
# enabled: true
# selfChat: false
# bluesky:
# enabled: true
# wantedDids: ["did:plc:..."]
# # groups:
# # "*": { mode: listen } # listen = observe only; open = observe + auto-reply; mention-only = auto-reply to @mentions only
# # "did:plc:...": { mode: open }
# # lists:
# # "at://did:plc:.../app.bsky.graph.list/xyz": { mode: listen }
# # wantedCollections: ["app.bsky.feed.post"]
# # notifications:
# # enabled: true
# # intervalSec: 60
# # reasons: ["mention", "reply", "quote"] # also: like, repost, follow
# # backfill: false # process initial backlog on startup
# # jetstreamUrl: wss://jetstream2.us-east.bsky.network/subscribe
# # handle: you.bsky.social
# # appPassword: xxxx-xxxx-xxxx-xxxx
# # serviceUrl: https://bsky.social
# BYOK Providers (optional, api mode only)
# These will be synced to Letta API on startup
# providers:
# - id: anthropic
# name: lc-anthropic
# type: anthropic
# apiKey: sk-ant-YOUR-ANTHROPIC-KEY
# - id: openai
# name: lc-openai
# type: openai
# apiKey: sk-YOUR-OPENAI-KEY
features:
cron: false
heartbeat:
enabled: false
intervalMin: 30
# skipRecentPolicy: fraction # fixed | fraction | off
# skipRecentFraction: 0.5 # Used when policy=fraction (0-1)
# skipRecentUserMin: 5 # Used when policy=fixed (0 disables)
# interruptOnUserMessage: true # Cancel in-flight heartbeat when user messages arrive
# sendFileDir: ./data/outbound # Restrict <send-file> directive to this directory (default: data/outbound)
# sendFileMaxSize: 52428800 # Max file size in bytes for <send-file> (default: 50MB)
# sendFileCleanup: false # Allow <send-file cleanup="true"> to delete files after send (default: false)
# memfs: true # Enable memory filesystem (git-backed context repository). Syncs memory blocks to local files.
# sleeptime: # Background reflection (requires memfs: true)
# trigger: step-count # "off" | "step-count" | "compaction-event"
# behavior: reminder # "reminder" | "auto-launch"
# stepCount: 10 # Steps between reflections (step-count trigger only)
# allowedTools: [Bash, Read, Edit, Write, Glob, Grep, Task, web_search, conversation_search] # Global default
# disallowedTools: [EnterPlanMode, ExitPlanMode] # Global default
# display:
# showToolCalls: false # Show tool invocations in chat (e.g. "Using tool: Read (file_path: ...)")
# showReasoning: false # Show agent reasoning/thinking in chat
# reasoningMaxChars: 0 # Truncate reasoning to N chars (0 = no limit, default)
# Attachment handling (defaults to 20MB if omitted)
# attachments:
# maxMB: 20
# maxAgeDays: 14