ESC
Start typing to search...

Config Schema

Complete reference for the config.yaml configuration file. All fields are validated using Zod schemas at startup.

Minimal Example

meta

Internal metadata. Usually auto-managed.

FieldTypeDefaultDescription
meta.versionstring"1.0.0"Config schema version
meta.created_atstring?-Timestamp when config was created
meta.last_modified_atstring?-Timestamp of last modification
meta.onboard_commandstring"teleton setup"CLI command shown during onboarding

agent

LLM provider and model configuration.

FieldTypeDefaultDescription
agent.providerenum"anthropic"LLM provider. One of: anthropic, claude-code, openai, google, xai, groq, openrouter, moonshot, mistral, cerebras, zai, minimax, huggingface, cocoon, local
agent.api_keystring""API key for the selected provider
agent.modelstring"claude-opus-4-6"Model identifier (provider-specific)
agent.utility_modelstring?-Cheap model for summarization (auto-detected if omitted)
agent.max_tokensnumber4096Maximum output tokens per LLM call
agent.temperaturenumber0.7Sampling temperature
agent.system_promptstring | nullnullCustom system prompt override (null = use built-in)
agent.max_agentic_iterationsnumber5Maximum number of agentic loop iterations (tool call cycles)
agent.base_urlstring?-Base URL for local LLM providers (e.g. Ollama, vLLM). Used when agent.provider is local.

agent.session_reset_policy

Controls automatic conversation session resets.

FieldTypeDefaultDescription
daily_reset_enabledbooleantrueEnable daily session reset
daily_reset_hournumber (0-23)4Hour of day to reset sessions
idle_expiry_enabledbooleantrueEnable session reset after idle period
idle_expiry_minutesnumber1440Minutes of inactivity before session reset (default: 24h)

telegram

Telegram client and access control settings.

FieldTypeDefaultDescription
telegram.api_idnumberrequiredTelegram API ID (from my.telegram.org)
telegram.api_hashstringrequiredTelegram API Hash
telegram.phonestringrequiredPhone number in international format
telegram.session_namestring"teleton_session"Session file name
telegram.session_pathstring"~/.teleton"Directory for session storage
telegram.dm_policyenum"allowlist"DM access policy: allowlist, admin-only, open, disabled
telegram.allow_fromnumber[][]Allowed user IDs for DM allowlist mode
telegram.group_policyenum"open"Group access policy: open, allowlist, admin-only, disabled
telegram.group_allow_fromnumber[][]Allowed group IDs for group allowlist mode
telegram.require_mentionbooleantrueRequire @mention in groups to trigger the agent
telegram.max_message_lengthnumber4096Maximum Telegram message length
telegram.typing_simulationbooleantrueSimulate typing indicator while processing
telegram.rate_limit_messages_per_secondnumber1.0Rate limit for outgoing messages
telegram.rate_limit_groups_per_minutenumber20Rate limit for group messages per minute
telegram.admin_idsnumber[][]Telegram user IDs with admin privileges
telegram.agent_channelstring | nullnullChannel for agent status broadcasts
telegram.owner_namestring?-Owner's first name (e.g., "Alex")
telegram.owner_usernamestring?-Owner's Telegram username (without @)
telegram.owner_idnumber?-Owner's Telegram user ID
telegram.debounce_msnumber1500Debounce delay in ms for group messages (0 = disabled)
telegram.bot_tokenstring?-Telegram Bot token from @BotFather for inline deal buttons
telegram.bot_usernamestring?-Bot username without @ (e.g., "teleton_deals_bot")

storage

File paths and limits for persistent storage.

FieldTypeDefaultDescription
storage.sessions_filestring"~/.teleton/sessions.json"Path to sessions file
storage.memory_filestring"~/.teleton/memory.json"Path to memory store file
storage.history_limitnumber100Max conversation history entries kept

embedding

Vector embedding configuration for memory search.

FieldTypeDefaultDescription
embedding.providerenum"local"Embedding provider: local (ONNX), anthropic (API), or none (FTS5-only)
embedding.modelstring?-Model override (default: Xenova/all-MiniLM-L6-v2 for local)

deals

P2P deal/escrow system configuration.

FieldTypeDefaultDescription
deals.enabledbooleantrueEnable the deals system
deals.expiry_secondsnumber120Deal expiration time in seconds
deals.buy_max_floor_percentnumber95Max buy price as percent of floor
deals.sell_min_floor_percentnumber105Min sell price as percent of floor
deals.poll_interval_msnumber5000Blockchain polling interval in ms
deals.max_verification_retriesnumber12Max retries for transaction verification
deals.expiry_check_interval_msnumber60000Interval for checking expired deals in ms

capabilities

Feature capability flags. Currently controls the exec tool category (Linux only).

FieldTypeDefaultDescription
capabilities.exec.enabledbooleanfalseEnable the exec tool category (exec_run, exec_install, exec_service, exec_status)
capabilities.exec.scopeenum"admin-only"Default scope for all exec tools: admin-only, dm-only, always
capabilities.exec.allowliststring[][]Glob patterns of allowed commands. Empty = all commands allowed (within scope).
capabilities.exec.limits.max_output_bytesnumber65536Maximum stdout/stderr size per command execution
capabilities.exec.limits.timeout_msnumber30000Command execution timeout in milliseconds
capabilities.exec.auditbooleantrueLog all exec invocations to the exec_audit table in memory.db
config.yaml
capabilities:
  exec:
    enabled: true
    scope: admin-only
    allowlist: []          # empty = all commands allowed
    limits:
      max_output_bytes: 65536
      timeout_ms: 30000
    audit: true

webui

Built-in web dashboard configuration.

FieldTypeDefaultDescription
webui.enabledbooleanfalseEnable WebUI server
webui.portnumber7777HTTP server port
webui.hoststring"127.0.0.1"Bind address (localhost only for security)
webui.auth_tokenstring?-Bearer token for API auth (auto-generated if omitted)
webui.cors_originsstring[]["http://localhost:5173", "http://localhost:7777"]Allowed CORS origins for development
webui.log_requestsbooleanfalseLog all HTTP requests

logging

Logging output configuration.

FieldTypeDefaultDescription
logging.levelenum"info"Log level: trace, debug, info, warn, error, fatal
logging.prettybooleantrueEnable pino-pretty formatting (human-readable, colored output)

dev

Development settings.

FieldTypeDefaultDescription
dev.hot_reloadbooleanfalseEnable plugin hot-reload (watches ~/.teleton/plugins/ for changes)

tool_rag

Semantic tool retrieval to reduce token usage with large tool sets.

FieldTypeDefaultDescription
tool_rag.enabledbooleantrueEnable semantic tool retrieval (Tool RAG)
tool_rag.top_knumber25Max tools to retrieve per LLM call
tool_rag.always_includestring[]["telegram_send_message", "telegram_reply_message", "telegram_send_photo", "telegram_send_document", "journal_*", "workspace_*", "web_*"]Tool name patterns always included (supports glob with *)
tool_rag.skip_unlimited_providersbooleanfalseSkip Tool RAG for providers with no tool limit (e.g. Anthropic)

mcp

Model Context Protocol server connections.

FieldTypeDefaultDescription
mcp.serversRecord<string, McpServer>{}Named map of MCP server configurations

Each MCP server entry

FieldTypeDefaultDescription
commandstring?-Stdio command (e.g. "npx @modelcontextprotocol/server-filesystem /tmp")
argsstring[]?-Explicit args array (overrides command splitting)
envRecord<string, string>?-Environment variables for stdio server
urlstring?-SSE/HTTP endpoint URL (alternative to command)
scopeenum"always"Tool scope: always, dm-only, group-only, admin-only
enabledbooleantrueEnable/disable this server
MCP server requirement

Each MCP server needs either command (stdio) or url (SSE/HTTP). At least one must be provided.

plugins

Per-plugin configuration. Keys are plugin names (with underscores).

FieldTypeDefaultDescription
pluginsRecord<string, unknown>{}Arbitrary per-plugin config keyed by plugin name

Top-Level Fields

FieldTypeDefaultDescription
cocoon.portnumber (1-65535)10000HTTP port of the cocoon-cli proxy (Cocoon Network integration)
tonapi_keystring?-TonAPI key for higher rate limits (from @tonapi_bot)
toncenter_api_keystring?-TonCenter API key for TON blockchain RPC calls (from toncenter.com). Increases rate limits on the public endpoint.
tavily_api_keystring?-Tavily API key for web search & extract

Environment Variables

Secrets should be provided via environment variables or an .env file:

VariableConfig FieldRequired
TG_API_IDtelegram.api_idYes
TG_API_HASHtelegram.api_hashYes
ANTHROPIC_API_KEYagent.api_keyIf using Anthropic
OPENAI_API_KEYagent.api_keyIf using OpenAI
GROQ_API_KEYagent.api_keyIf using Groq
GOOGLE_API_KEYagent.api_keyIf using Google
XAI_API_KEYagent.api_keyIf using xAI
TONAPI_KEYtonapi_keyNo (higher rate limits)
TAVILY_API_KEYtavily_api_keyNo (web search)