Skip to content

Config schema reference

Full reference for talond.yaml. All top-level sections are optional — defaults apply when omitted. Validated at startup using Zod; the daemon refuses to start with an invalid config.


FieldTypeDefaultDescription
logLeveltrace | debug | info | warn | error | fatalinfoPino log level
dataDirstringdataRoot directory for runtime data (DB, IPC sockets, artifacts)
backgroundProviderstring—Default provider for background agents (overrides backgroundAgent.defaultProvider)
backgroundModelstring—Default model for background agents
executionEnvobject—Execution environment configuration (see below)

FieldTypeDefaultDescription
typesqlitesqliteDatabase backend
pathstringdata/talond.sqliteSQLite file path (relative to cwd)

FieldTypeDefaultDescription
namestringrequiredUnique persona identifier
modelstringclaude-sonnet-4-6Model ID passed to the provider
providerstring—Override the default agent runner provider
systemPromptFilestring—Path to system prompt Markdown file
skillsstring[][]Skill names to attach
subagentsstring[][]Sub-agent names the persona can invoke
capabilities.allowstring[][]Granted capability labels
capabilities.requireApprovalstring[][]Capability labels requiring user confirmation
mountsmount[][]Filesystem mounts for sandboxed execution
queryTimeoutMinutesinteger 1–48010Max minutes the agent runner waits for a single query to complete. Increase for personas running long Codex tasks or deep research
maxConcurrentinteger ≥ 1—Max parallel agent runs for this persona
FieldTypeDefaultDescription
sourcestringrequiredHost path
targetstringrequiredMount target path
modero | rwroMount mode

FieldTypeDefaultDescription
namestringrequiredUnique channel identifier
typeenumrequiredtelegram, slack, discord, whatsappBaileys, email, terminal
enabledbooleantrueEnable/disable at startup
showToolCallsbooleanfalseSend tool-call status messages to the channel
tokenRefstring—Optional token reference
configobject{}Connector-specific config (see Channels guide)

FieldTypeDefaultDescription
personastringrequiredPersona name
channelstringrequiredChannel name
isDefaultbooleanfalseMark as default binding for this channel

FieldTypeDefaultDescription
maxAttemptsinteger ≥ 13Max delivery attempts before dead-letter
backoffBaseMsinteger1000Initial retry delay in ms
backoffMaxMsinteger60000Maximum retry delay in ms
concurrencyLimitinteger ≥ 15Max simultaneous message processing

FieldTypeDefaultDescription
defaultProviderstringclaude-codeDefault provider name
providersrecordsee belowProvider configurations
FieldTypeDefaultDescription
enabledbooleanfalseEnable this provider
commandstringrequiredCLI command (e.g. claude)
contextWindowTokensinteger200000Context window size
optionsobject—Provider-specific options
contextManagement.enabledbooleanfalseEnable session rotation
contextManagement.triggerMetricstring—Required when enabled. input_tokens, cache_read_input_tokens, cache_creation_input_tokens, or cache_total_input_tokens
contextManagement.thresholdRatiofloat 0–1—Required when enabled. Fraction of contextWindowTokens that triggers rotation
contextManagement.recentMessageCountinteger10Verbatim messages to include after rotation
contextManagement.summarizerstring—Required when enabled. Sub-agent name for history compression (session-summarizer or session-observer)
contextManagement.reflectionThresholdCharsinteger12000Character threshold for observational memory reflection

Default provider config:

agentRunner:
defaultProvider: claude-code
providers:
claude-code:
enabled: true
command: claude
contextWindowTokens: 200000
contextManagement:
enabled: true
triggerMetric: cache_read_input_tokens
thresholdRatio: 0.5
recentMessageCount: 10
summarizer: session-summarizer
openai-compatible:
enabled: false
command: node
contextWindowTokens: 256000
contextManagement:
enabled: true
triggerMetric: input_tokens
thresholdRatio: 0.75
recentMessageCount: 10
summarizer: session-observer
options:
baseUrl: ${OLLAMA_BASE_URL}
defaultModel: glm-5.1
providerId: ollama

FieldTypeDefaultDescription
enabledbooleantrueEnable background workers globally
maxConcurrentinteger 1–103Max simultaneous workers
defaultTimeoutMinutesinteger 15–48030Default wall-clock timeout
defaultProviderstringclaude-codeProvider for workers
providersrecordsee belowProvider configs (same structure as agentRunner, no contextManagement)
claudePathstring—Explicit path to Claude Code binary

FieldTypeDefaultDescription
enabledbooleantrueEnable sub-agent invocation globally
profilesobject[][]Sub-agent profile definitions
profiles[].namestringrequiredUnique profile identifier
profiles[].descriptionstring—Human-readable purpose
profiles[].modelstring—Model ID for this sub-agent
profiles[].providerstring—Provider name for this sub-agent
subagents:
enabled: true
profiles:
- name: spark-coder
description: Fast code generation
model: gpt-5.4-spark
provider: openai

FieldTypeDefaultDescription
modesubscription | api_keysubscriptionAuthentication mode
apiKeystring—API key for api_key mode
providers.<name>.apiKeystring—Per-provider API key
providers.<name>.baseURLstring—Per-provider base URL (for Ollama, proxies)

For openai-compatible, Talon resolves credentials from auth.providers.<options.providerId> first and falls back to auth.providers.openai-compatible.


FieldTypeDefaultDescription
tickIntervalMsinteger ≥ 10005000Scheduler tick interval in ms

FieldTypeDefaultDescription
pollIntervalMsinteger ≥ 100500IPC poll interval in ms
daemonSocketDirstringdata/ipc/daemonUnix socket directory

FieldTypeDefaultDescription
maxConcurrentPersonaTasksinteger3Max parallel A2A tasks per persona
defaultTimeoutMsinteger300000Default A2A task timeout in ms
maxHistoryEntriesinteger50Max history entries kept per A2A task
a2a:
maxConcurrentPersonaTasks: 3
defaultTimeoutMs: 300000
maxHistoryEntries: 50

Controls agent execution sandboxing (Docker or Apple Container).

FieldTypeDefaultDescription
runtimedocker | apple-containerdockerContainer runtime
imagestringtalon-sandbox:latestSandbox container image
maxConcurrentinteger ≥ 13Max concurrent sandboxed agent processes
networkDefaultoff | onoffDefault network access for sandboxed agents
idleTimeoutMsinteger1800000Idle container timeout (30 min)
hardTimeoutMsinteger3600000Hard container timeout (60 min)
resourceLimits.memoryMbinteger1024Memory limit per container in MB
resourceLimits.cpusfloat1CPU limit per container
resourceLimits.pidsLimitinteger256PID limit per container

FieldTypeDefaultDescription
enabledbooleanfalseEnable Sprite execution environments
defaultImagestring—Default container image for sprites
registrystring—Container registry base URL
sprites:
enabled: false
defaultImage: talon-sprite:latest
registry: ghcr.io/ivo-toby

FieldTypeDefaultDescription
enabledbooleanfalseEnable isolated execution environments
defaultProfilestring—Default profile name
profilesrecord{}Named execution profiles
executionEnv:
enabled: true
defaultProfile: docker
profiles:
docker:
image: talon-sandbox:latest
resourceLimits:
memoryMb: 1024
cpus: 1

FieldTypeDefaultDescription
enabledbooleanfalseEnable Langfuse tracing
publicKeystring—Required when enabled
secretKeystring—Required when enabled
hoststringhttps://cloud.langfuse.comLangfuse instance URL
exportModebatched | immediatebatchedExport strategy
flushAtinteger ≥ 120Batch size before flush
flushIntervalSecondsinteger ≥ 15Max seconds between flushes

Runtime guardrails: spending caps, rate limiting, and loop detection. All sub-sections are optional. Omit the block to disable.

FieldTypeDefaultDescription
daily_token_capinteger > 0—Max tokens per persona per 24h rolling window
hourly_token_capinteger > 0—Max tokens per persona per 1h rolling window
warn_at_percentnumber 1–10080Log a warning when usage exceeds this percentage
per_personarecord—Per-persona cap overrides (keys are persona names)
per_persona.<name>.daily_token_capinteger > 0—Persona-specific daily cap
per_persona.<name>.hourly_token_capinteger > 0—Persona-specific hourly cap
FieldTypeDefaultDescription
inbound_per_minuteinteger > 030Max inbound messages per channel per minute
inbound_per_user_per_minuteinteger > 010Max inbound messages per sender per minute
api_calls_per_minuteinteger > 060Reserved for future API rate limiting
FieldTypeDefaultDescription
max_turns_per_runinteger > 050Hard turn limit per agent run
duplicate_call_thresholdinteger > 05Consecutive identical tool calls before blocking
max_queue_depth_per_threadinteger > 0100Max queued messages per thread before rejecting