Skip to content

Generated config reference

This page is generated from the same config field registries that power mono-agent config, recipe output, and the JSON Schema. Do not edit this table by hand; run pnpm run generate:config-reference.

Schema: https://raw.githubusercontent.com/robertsreberski/mono-agent/main/packages/agent-app/schema/mono-agent.config.schema.json

JSON keyTypeEnv overrideDefaultExampleNotes
agent.namestringMONO_AGENT_NAMEunsetResearch PartnerPublic display identity used for trace labels and default A2A metadata; never used in paths or service ids.
artifacts.dirstringMONO_AGENT_ARTIFACT_DIR.mono-agent/artifacts.mono-agent/artifactsConfigures dir for the artifacts section.
artifacts.memoryRetention.dryRunbooleanMONO_AGENT_ARTIFACT_MEMORY_RETENTION_DRY_RUNfalsetrueConfigures memoryRetention.dryRun for the artifacts section.
artifacts.memoryRetention.maxAgeDaysintegerMONO_AGENT_ARTIFACT_MEMORY_RETENTION_MAX_AGE_DAYS77Configures memoryRetention.maxAgeDays for the artifacts section.
artifacts.memoryRetention.maxCountintegerMONO_AGENT_ARTIFACT_MEMORY_RETENTION_MAX_COUNT50005000Configures memoryRetention.maxCount for the artifacts section.
artifacts.retention.dryRunbooleanMONO_AGENT_ARTIFACT_RETENTION_DRY_RUNfalsetrueConfigures retention.dryRun for the artifacts section.
artifacts.retention.maxAgeDaysintegerMONO_AGENT_ARTIFACT_RETENTION_MAX_AGE_DAYS365365Configures retention.maxAgeDays for the artifacts section.
artifacts.retention.maxCountintegerMONO_AGENT_ARTIFACT_RETENTION_MAX_COUNT5000050000Configures retention.maxCount for the artifacts section.
channels.pluginsarray--[][{"package":"@mono-agent/whatsapp-adapter","config":{"enabled":true}}]External channel plugin envelopes loaded by package name.
concurrency.maxConcurrentRunsintegerMONO_AGENT_CONCURRENCY_MAX_CONCURRENT_RUNSunset1Configures maxConcurrentRuns for the concurrency section.
concurrency.maxPendingRunsintegerMONO_AGENT_CONCURRENCY_MAX_PENDING_RUNSunset1Configures maxPendingRuns for the concurrency section.
context.identityPathstringMONO_AGENT_IDENTITY_PATHrequired./IDENTITY.mdConfigures identityPath for the context section.
context.selectedSkillsstring[]MONO_AGENT_SELECTED_SKILLS[]["example"]Configures selectedSkills for the context section.
context.skillDisclosurestringMONO_AGENT_SKILL_DISCLOSUREfullfullConfigures skillDisclosure for the context section.
context.skillMaxBytesintegerMONO_AGENT_SKILL_MAX_BYTES4800048000Configures skillMaxBytes for the context section.
context.skillsRootstringMONO_AGENT_SKILLS_ROOTunsetexampleConfigures skillsRoot for the context section.
context.soulPathstringMONO_AGENT_SOUL_PATHunsetexampleConfigures soulPath for the context section.
continuations.detachedServicesarray--[][{"name":"work-control","tokenEnv":"WORK_CONTROL_CONTINUATION_TOKEN"}]Detached service names and the environment variable holding each bearer; raw tokens never belong in config.
continuations.enabledboolean--truetrueEnables the host-owned durable continuation service when the block is configured.
continuations.hoststring--127.0.0.1127.0.0.1Loopback bind host; non-loopback values are rejected.
continuations.limits.deliveryTimeoutMsinteger--120000120000Hard native-delivery and history-only commit timeout; ambiguous sends are never replayed automatically.
continuations.limits.maxActivePerOrigininteger--500500Admission ceiling for one immutable run or detached-route claim origin.
continuations.limits.maxActiveRecordsinteger--1000010000Global admission ceiling for non-terminal durable continuations.
continuations.limits.maxConcurrentinteger--1616Maximum independently tracked continuation workers; one hung provider cannot occupy the whole service.
continuations.limits.operatorPageSizeinteger--100100Maximum keyset-paginated records returned by one operator list request.
continuations.limits.synthesisTimeoutMsinteger--600000600000Hard synthesis timeout; an ambiguous timeout is dead-lettered and never synthesized twice.
continuations.namedRoutesobject--{}{"verification":{"mode":"capture","conversationId":"slack:D123"}}Host-owned detached delivery policies: notify_if_actionable, capture, or silent.
continuations.portinteger--43194319Fixed loopback continuation service port (1-65535); persisted result/status URLs and the operator CLI remain valid across restarts.
continuations.retention.capturedTextMaxAgeMsinteger--25920000002592000000Maximum age in milliseconds for retained captured synthesis text.
continuations.retention.capturedTextMaxRecordsinteger--10001000Maximum delivered capture continuations whose synthesized text remains retrievable.
continuations.retention.terminalMaxAgeMsinteger--3153600000031536000000Maximum age in milliseconds for terminal continuation tombstones.
continuations.retention.terminalMaxRecordsinteger--5000050000Maximum retained terminal metadata/idempotency tombstones after payload compaction.
continuations.stateDirstring--.mono-agent/continuations.mono-agent/continuationsOwner-only per-record continuation store and token-derivation secret.
cron.conversationIdstringMONO_AGENT_CRON_CONVERSATION_IDunsetexampleConfigures conversationId for the cron section.
cron.dirstringMONO_AGENT_CRON_DIRcroncronConfigures dir for the cron section.
cron.effortstringMONO_AGENT_CRON_EFFORTunsetexampleConfigures effort for the cron section.
cron.enabledbooleanMONO_AGENT_CRON_ENABLEDfalsetrueEnables the cron capability.
cron.expressionstringMONO_AGENT_CRON_EXPRESSIONunsetexampleConfigures expression for the cron section.
cron.jobsarrayMONO_AGENT_CRON_JOBS_JSON[][{"id":"daily","expression":"0 8 * * *","prompt":"Summarize the overnight queue."}]Inline scheduled jobs. Folder-based cron jobs still merge from cron.dir.
cron.modelstringMONO_AGENT_CRON_MODELunsetexampleConfigures model for the cron section.
cron.notifybooleanMONO_AGENT_CRON_NOTIFYfalsefalseConfigures notify for the cron section.
cron.notifyConversationIdstringMONO_AGENT_CRON_NOTIFY_CONVERSATION_IDunsetexampleConfigures notifyConversationId for the cron section.
cron.notifyFailureCooldownHoursintegerMONO_AGENT_CRON_NOTIFY_FAILURE_COOLDOWN_HOURS66Configures notifyFailureCooldownHours for the cron section.
cron.operatorActions.enabledbooleanMONO_AGENT_CRON_OPERATOR_ACTIONS_ENABLEDfalsetrueAllows API-key-authenticated, explicitly confirmed run-now and runtime enable/disable actions. Defaults off and never rewrites cron config sources.
cron.preflightstring[]MONO_AGENT_CRON_PREFLIGHT_JSONunset["node","scripts/check-queue.mjs"]Explicit argv evaluated before the model responder. {"run":false} ends the firing as skipped_gate with no model turn; {"run":true,"input":"…"} runs the job with the input appended to its prompt. Any failure (non-zero exit, signal, timeout, malformed verdict) fails open with the plain prompt. Never a shell line.
cron.preflightTimeoutMsintegerMONO_AGENT_CRON_PREFLIGHT_TIMEOUT_MS50005000Wall-clock bound for one preflight evaluation before it is killed and fails open. Positive integer milliseconds, default 5000, capped at 60000; separate from maxRunMs.
cron.promptstringMONO_AGENT_CRON_PROMPTunsetexampleConfigures prompt for the cron section.
cron.timezonestringMONO_AGENT_CRON_TIMEZONEUTCUTCConfigures timezone for the cron section.
interaction.askUser.timeoutMsintegerMONO_AGENT_ASK_USER_TIMEOUT_MS600000600000Maximum wait for one AskUser interaction (one to five questions); set null to disable automatic expiry.
interaction.bridge.hoststringMONO_AGENT_INTERACTION_BRIDGE_HOST127.0.0.1127.0.0.1Bind host for the app-owned AskUser/tool-progress bridge. Defaults to loopback; keep it local because non-loopback values are not rejected.
interaction.bridge.portintegerMONO_AGENT_INTERACTION_BRIDGE_PORT00Bridge port. 0 chooses an ephemeral port.
interaction.progress.enabledbooleanMONO_AGENT_PROGRESS_ENABLEDtruetrueWhether tool progress posts are relayed to channel status messages.
memory.backendstringMONO_AGENT_MEMORY_BACKENDbujobujoConfigures backend for the memory section.
memory.consolidation.cronstringMONO_AGENT_MEMORY_CONSOLIDATION_CRON0 */2 * * *0 */2 * * *Configures consolidation.cron for the memory section.
memory.consolidation.enabledbooleanMONO_AGENT_MEMORY_CONSOLIDATION_ENABLEDtruetrueEnables the memory capability.
memory.embeddings.apiKeystringMONO_AGENT_MEMORY_EMBEDDINGS_API_KEYunsetexampleSecret value for memory.embeddings.apiKey; prefer the env override.
memory.embeddings.apiKeyEnvstringMONO_AGENT_MEMORY_EMBEDDINGS_API_KEY_ENVunsetexampleEnvironment-variable name containing an optional provider bearer token; an explicitly declared name must resolve before memory starts.
memory.embeddings.circuitBreaker.cooldownMsintegerMONO_AGENT_MEMORY_EMBEDDINGS_CIRCUIT_BREAKER_COOLDOWN_MS3000030000Configures embeddings.circuitBreaker.cooldownMs for the memory section.
memory.embeddings.circuitBreaker.failureThresholdintegerMONO_AGENT_MEMORY_EMBEDDINGS_CIRCUIT_BREAKER_FAILURE_THRESHOLD33Configures embeddings.circuitBreaker.failureThreshold for the memory section.
memory.embeddings.dimintegerMONO_AGENT_MEMORY_EMBEDDINGS_DIMunset1Configures embeddings.dim for the memory section.
memory.embeddings.endpointstringMONO_AGENT_MEMORY_EMBEDDINGS_ENDPOINTunsetexampleProvider service root. LM Studio uses /v1/embeddings and defaults to http://localhost:1234.
memory.embeddings.modelstringMONO_AGENT_MEMORY_EMBEDDINGS_MODELunsetnomic-embed-text:v1.5Configures embeddings.model for the memory section.
memory.embeddings.providerstringMONO_AGENT_MEMORY_EMBEDDINGS_PROVIDERunsetollamaEmbedding service used by Journal/BuJo memory: ollama, lmstudio, or openai.
memory.embeddings.timeoutMsintegerMONO_AGENT_MEMORY_EMBEDDINGS_TIMEOUT_MS1000010000Configures embeddings.timeoutMs for the memory section.
memory.llm.endpointstringMONO_AGENT_MEMORY_LLM_ENDPOINTunsetexampleConfigures llm.endpoint for the memory section.
memory.llm.modelstringMONO_AGENT_MEMORY_LLM_MODELunsetopenai-codex:gpt-5.6-terraConfigures llm.model for the memory section.
memory.llm.providerstringMONO_AGENT_MEMORY_LLM_PROVIDERunsetagent-hostConfigures llm.provider for the memory section.
memory.llm.timeoutMsintegerMONO_AGENT_MEMORY_LLM_TIMEOUT_MS6000060000Configures llm.timeoutMs for the memory section.
memory.llm.tracebooleanMONO_AGENT_MEMORY_LLM_TRACEtruetrueConfigures llm.trace for the memory section.
memory.maxBytesintegerMONO_AGENT_MEMORY_MAX_BYTES6400064000Configures maxBytes for the memory section.
memory.modestringMONO_AGENT_MEMORY_MODElitejournalConfigures mode for the memory section.
memory.pathstringMONO_AGENT_MEMORY_PATHunset./.mono-agent/memoryConfigures path for the memory section.
memory.recallTool.enabledbooleanMONO_AGENT_MEMORY_RECALL_TOOL_ENABLEDtruetrueEnables explicit memory reads: targeted MemoryRecall for every backend and chronological MemoryJournal when a local store supports it. Automatic recall is unchanged.
memory.rememberTool.enabledbooleanMONO_AGENT_MEMORY_REMEMBER_TOOL_ENABLEDtruetrueEnables the memory capability.
memory.supermemory.apiKeystringMONO_AGENT_MEMORY_SUPERMEMORY_API_KEYunsetexampleSecret value for memory.supermemory.apiKey; prefer the env override.
memory.supermemory.apiKeyEnvstringMONO_AGENT_MEMORY_SUPERMEMORY_API_KEY_ENVunsetexampleSecret value for memory.supermemory.apiKeyEnv; prefer the env override.
memory.supermemory.baseUrlstringMONO_AGENT_MEMORY_SUPERMEMORY_BASE_URLunsetexampleConfigures supermemory.baseUrl for the memory section.
memory.supermemory.containerstringMONO_AGENT_MEMORY_SUPERMEMORY_CONTAINERunsetexampleConfigures supermemory.container for the memory section.
memory.supermemory.exposeMcpServerbooleanMONO_AGENT_MEMORY_SUPERMEMORY_EXPOSE_MCP_SERVERfalsetrueConfigures supermemory.exposeMcpServer for the memory section.
memory.supermemory.timeoutMsintegerMONO_AGENT_MEMORY_SUPERMEMORY_TIMEOUT_MS1000010000Configures supermemory.timeoutMs for the memory section.
memory.writeModestringMONO_AGENT_MEMORY_WRITE_MODEdisableddisabledConfigures writeMode for the memory section.
monitorsobject--unset{}Deprecated compatibility object. The whole object, including unknown nested keys, is accepted and ignored. Use background process jobs for finite work.
observability.exportersarrayMONO_AGENT_OBSERVABILITY_EXPORTERSunset[]Configures exporters for the observability section.
openaiApi.allowNonLoopbackbooleanMONO_AGENT_OPENAI_API_ALLOW_NON_LOOPBACKfalsetrueConfigures allowNonLoopback for the openaiApi section.
openaiApi.apiKeystringMONO_AGENT_OPENAI_API_KEYunsetenv:MONO_AGENT_OPENAI_API_KEYSecret value for openaiApi.apiKey; prefer the env override.
openaiApi.basePathstringMONO_AGENT_OPENAI_API_BASE_PATH/v1/v1Configures basePath for the openaiApi section.
openaiApi.enabledbooleanMONO_AGENT_OPENAI_API_ENABLEDfalsetrueEnables the openaiApi capability.
openaiApi.hoststringMONO_AGENT_OPENAI_API_HOST127.0.0.1127.0.0.1Configures host for the openaiApi section.
openaiApi.modelIdstringMONO_AGENT_OPENAI_API_MODEL_IDagentagentConfigures modelId for the openaiApi section.
openaiApi.portintegerMONO_AGENT_OPENAI_API_PORT00Configures port for the openaiApi section.
processJobs.enabledboolean--falsetrueOpt in to owner-private Pi-native Exec/Bash background process jobs (unsupported on Windows).
processJobs.maxActivePerConversationinteger--22Maximum non-terminal process jobs admitted from one conversation (compiled cap 8).
processJobs.maxChainDepthinteger--44Maximum host-owned background wake chain depth (compiled cap 64).
processJobs.maxConcurrentinteger--44Maximum simultaneously running process jobs (compiled cap 32).
processJobs.maxOutputBytesinteger--10485761048576Combined retained process-output ceiling (compiled cap 8 MiB).
processJobs.maxQueueAgeMsinteger--300000300000Maximum admission-to-spawn queue age (compiled cap one hour).
processJobs.maxQueuedinteger--88Maximum queued process jobs after running capacity is full (compiled cap 64).
processJobs.maxRuntimeMsinteger--18000001800000Host runtime ceiling per owned process group (compiled cap 24 hours; calls may narrow it).
processJobs.previewCharsinteger--20002000Bound for redacted wake/operator output previews (compiled cap 8000; calls may narrow it).
processJobs.retention.artifactMaxBytesinteger--268435456268435456Aggregate retained terminal output artifact budget (compiled cap 1 GiB).
processJobs.retention.maxAgeMsinteger--604800000604800000Maximum terminal process-job record age (compiled cap 30 days).
processJobs.retention.maxRecordsinteger--10001000Maximum retained terminal process-job records (compiled cap 10000).
processJobs.stateDirstring--.mono-agent/process-jobs.mono-agent/process-jobsAgent-root-confined owner-private process-job records and artifacts; must be disjoint from every restart —clear-sessions purge root.
processJobs.unsafeAllowUnprotectedStateboolean--falsefalseDangerous trusted-host opt-in: with explicit sandbox.mode=off and Pi-only routes, retain ProcessJobs state without synthetic SRT protection; state and the operator secret become model-accessible.
providersobjectMONO_AGENT_PROVIDERS_JSONunset{"openai-codex":{},"ollama":{"baseUrl":"http://localhost:11434"}}Provider-id map that widens or narrows the selectable Pi model catalog; MONO_AGENT_PROVIDERS_JSON projects the whole object because provider ids are dynamic.
providers.piAuthPathstringMONO_AGENT_PI_AUTH_PATHunset~/.pi/agent/auth.jsonConfigures piAuthPath for the providers section.
providers.piNative.cacheRetentionstringMONO_AGENT_PI_CACHE_RETENTIONlonglongAnthropic Messages cache retention (short or long; default long). Short opts out. MONO_AGENT env > JSON > long; resolved values override ambient PI_CACHE_RETENTION. Long requires model support: 1h writes cost 2× normal input, reads 0.1×; short writes cost 1.25×. No guaranteed hit.
providers.piNative.maxRetryDelayMsintegerMONO_AGENT_MAX_RETRY_DELAY_MS6000060000Configures piNative.maxRetryDelayMs for the providers section.
providers.piNative.piMaxRetriesintegerMONO_AGENT_PI_MAX_RETRIES22Configures piNative.piMaxRetries for the providers section.
providers.piNative.piSessionsRootstringMONO_AGENT_PI_SESSIONS_ROOTunsetexampleConfigures piNative.piSessionsRoot for the providers section.
providers.piNative.promptCacheDiagnosticsbooleanMONO_AGENT_PI_PROMPT_CACHE_DIAGNOSTICSfalsetrueEmit metadata-only prompt-cache request fingerprints into run artifacts; never prompt text, tool arguments, cache keys, endpoints or credentials.
providers.piNative.transportstringMONO_AGENT_PI_TRANSPORTautossePreferred Pi provider transport: auto, sse, websocket, or websocket-cached. Providers without multiple transports ignore it.
runtime.compaction.contextWindowOverrideintegerMONO_AGENT_COMPACTION_CONTEXT_WINDOW_OVERRIDEauto-detected128000Persistent correction for inaccurate provider context-window metadata; learned overflow ceilings may lower it process-locally.
runtime.compaction.enabledbooleanMONO_AGENT_COMPACTION_ENABLEDtruetrueEnables adaptive proactive compaction and one-shot reactive overflow recovery.
runtime.compaction.fixedOverheadEnabledbooleanMONO_AGENT_COMPACTION_FIXED_OVERHEAD_ENABLEDtruetrueIncludes system instructions, tool schemas, and the current user turn in proactive request-size estimates.
runtime.compaction.keepRecentTokensintegerMONO_AGENT_COMPACTION_KEEP_RECENT_TOKENSadaptive by model12800Explicit recent-context retention override; omitted derives 10% of the effective context window, clamped to 4,000-20,000 tokens.
runtime.compaction.minSavingsTokensintegerMONO_AGENT_COMPACTION_MIN_SAVINGS_TOKENSadaptive by model12800Minimum verified token reduction required for proactive compaction; omitted derives 10% of the effective window, clamped to 4,000-20,000. Reactive recovery accepts any positive reduction.
runtime.compaction.summaryMaxTokensintegerMONO_AGENT_COMPACTION_SUMMARY_MAX_TOKENSadaptive by model5120Explicit combined summary-output budget override; omitted derives 4% of the effective context window, clamped to 2,000-12,000 tokens.
runtime.compaction.triggerRationumberMONO_AGENT_COMPACTION_TRIGGER_RATIO0.70.7Fraction of the effective model context window used for the proactive trigger, additionally capped by adaptive safety headroom.
runtime.effortstringMONO_AGENT_EFFORTunsetmediumRoute-specific effort forwarded through Pi to the selected provider. Doctor warns when a configured value falls outside the model’s advertised ladder but keeps turn-time handling permissive. Ranking above max only prevents keyword downgrade.
runtime.fallbacksarrayMONO_AGENT_FALLBACKS_JSON[][{"model":"openai-codex:gpt-5.6-sol"},{"model":"anthropic:claude-sonnet-4-6","effort":"high"}]Canonical ordered fallback routes. Omitted per-route effort means that provider’s default.
runtime.maxTurnsintegerMONO_AGENT_MAX_TURNSunset1Configures maxTurns for the runtime section.
runtime.modelstringMONO_AGENT_MODELrequiredopenai-codex:gpt-5.6-terraConfigures model for the runtime section.
runtime.permissionModestringMONO_AGENT_PERMISSION_MODEunsetdefaultConfigures permissionMode for the runtime section.
runtime.retry.backoffMsintegerMONO_AGENT_RETRY_BACKOFF_MS10002000Delay before the first same-model retry. Doubles on each further retry, capped by runtime.retry.maxBackoffMs.
runtime.retry.maxBackoffMsintegerMONO_AGENT_RETRY_MAX_BACKOFF_MS1500030000Ceiling for the doubling same-model retry delay.
runtime.retry.primaryAttemptsintegerMONO_AGENT_RETRY_PRIMARY_ATTEMPTS23Total attempts on runtime.model including the first, before the chain advances. Retries fire only for transient provider failures (overloaded, rate-limited, timeout, network, 5xx); context overflow and bad credentials advance immediately. Set 1 to disable.
runtime.session.idleTimeoutMsintegerMONO_AGENT_SESSION_IDLE_TIMEOUT_MS18000001800000Configures session.idleTimeoutMs for the runtime section.
runtime.session.isolateProactivebooleanMONO_AGENT_SESSION_ISOLATE_PROACTIVEfalsetrueConfigures session.isolateProactive for the runtime section.
runtime.session.modestringMONO_AGENT_SESSION_MODEcontinuouscontinuousConfigures session.mode for the runtime section.
runtime.session.rolloverstringMONO_AGENT_SESSION_ROLLOVERnonenoneConfigures session.rollover for the runtime section.
runtime.session.rolloverNoticebooleanMONO_AGENT_SESSION_ROLLOVER_NOTICEfalsetrueConfigures session.rolloverNotice for the runtime section.
runtime.session.rolloverTimezonestringMONO_AGENT_SESSION_ROLLOVER_TIMEZONEunsetexampleConfigures session.rolloverTimezone for the runtime section.
runtime.workspacestringMONO_AGENT_WORKSPACE..Configures workspace for the runtime section.
sandbox.denyWritestring[]MONO_AGENT_SANDBOX_DENY_WRITEunset["example"]Configures denyWrite for the sandbox section.
sandbox.fallbackstringMONO_AGENT_SANDBOX_FALLBACKfail-closedfail-closedConfigures fallback for the sandbox section.
sandbox.modestringMONO_AGENT_SANDBOX_MODEunsetnativeConfigures mode for the sandbox section.
sandbox.network.allowliststring[]MONO_AGENT_SANDBOX_NETWORK_ALLOWLISTunset["example"]Configures network.allowlist for the sandbox section.
sandbox.network.modestringMONO_AGENT_SANDBOX_NETWORKnonenoneConfigures network.mode for the sandbox section.
sandbox.readableRootsstring[]MONO_AGENT_SANDBOX_READABLE_ROOTSunset["example"]Configures readableRoots for the sandbox section.
sandbox.unsafeAllowHostProcessbooleanMONO_AGENT_SANDBOX_UNSAFE_ALLOW_HOST_PROCESSfalsetrueConfigures unsafeAllowHostProcess for the sandbox section.
sandbox.writableRootsstring[]MONO_AGENT_SANDBOX_WRITABLE_ROOTSunset["example"]Configures writableRoots for the sandbox section.
slack.allowAllChannelsbooleanMONO_AGENT_SLACK_ALLOW_ALL_CHANNELSfalsetrueConfigures allowAllChannels for the slack section.
slack.allowedChannelIdsstring[]MONO_AGENT_SLACK_ALLOWED_CHANNEL_IDSunset["example"]Configures allowedChannelIds for the slack section.
slack.appTokenstringMONO_AGENT_SLACK_APP_TOKENunsetenv:MONO_AGENT_SLACK_APP_TOKENSecret value for slack.appToken; prefer the env override.
slack.botTokenstringMONO_AGENT_SLACK_BOT_TOKENunsetenv:MONO_AGENT_SLACK_BOT_TOKENSecret value for slack.botToken; prefer the env override.
slack.botUserIdsstring[]MONO_AGENT_SLACK_BOT_USER_IDSunset["example"]Configures botUserIds for the slack section.
slack.drainDeadlineMsintegerMONO_AGENT_SLACK_DRAIN_DEADLINE_MSunset1Configures drainDeadlineMs for the slack section.
slack.enabledbooleanMONO_AGENT_SLACK_ENABLEDfalsetrueEnables the slack capability.
slack.heartbeatIntervalMsintegerMONO_AGENT_SLACK_HEARTBEAT_INTERVAL_MSunset1Configures heartbeatIntervalMs for the slack section.
slack.heartbeatTimeoutMsintegerMONO_AGENT_SLACK_HEARTBEAT_TIMEOUT_MSunset1Configures heartbeatTimeoutMs for the slack section.
slack.homeTabobject--unset{"enabled":true,"headerText":"*Quick actions*","buttons":[{"actionId":"triage","label":"Triage","prompt":"Triage today's requests.","channelId":"C0123"}]}JSON-only Slack App Home configuration; enabled is optional (default false), buttons is optional (default []), and there is no environment-variable form.
slack.mentionTextAliasesstring[]MONO_AGENT_SLACK_MENTION_TEXT_ALIASESunset["example"]Configures mentionTextAliases for the slack section.
slack.reconnectInitialBackoffMsintegerMONO_AGENT_SLACK_RECONNECT_INITIAL_BACKOFF_MSunset1Configures reconnectInitialBackoffMs for the slack section.
slack.reconnectMaxBackoffMsintegerMONO_AGENT_SLACK_RECONNECT_MAX_BACKOFF_MSunset1Configures reconnectMaxBackoffMs for the slack section.
slack.reconnectStabilityMsintegerMONO_AGENT_SLACK_RECONNECT_STABILITY_MSunset1Configures reconnectStabilityMs for the slack section.
slack.reconnectStartupGraceMsintegerMONO_AGENT_SLACK_RECONNECT_STARTUP_GRACE_MSunset1Configures reconnectStartupGraceMs for the slack section.
slack.resolveChannelNamesbooleanMONO_AGENT_SLACK_RESOLVE_CHANNEL_NAMEStruetrueResolves the channel’s name via conversations.info so the agent knows WHICH channel it is talking in, not just that it is in one. Requires channels:read (public) / groups:read (private); a missing scope degrades to the surface kind and id alone rather than failing turns.
slack.resolveUserNamesbooleanMONO_AGENT_SLACK_RESOLVE_USER_NAMEStruetrueResolves the speaker’s display name and handle via users.info so the agent knows who is talking. Requires the users:read scope; a missing scope degrades to an unnamed speaker rather than failing turns.
slack.shortcutsarray--[][{"callbackId":"triage","prompt":"Prepare the daily support triage checklist.","channelId":"C0123"}]JSON-only global/message Slack shortcut bindings; there is no environment-variable form.
slack.stripMentionTextbooleanMONO_AGENT_SLACK_STRIP_MENTION_TEXTpreservefalseWhen unset, preserves one readable authenticated self-mention marker; true restores legacy full stripping and false keeps raw mention forms.
slack.threadContext.enabledbooleanMONO_AGENT_SLACK_THREAD_CONTEXT_ENABLEDtruetrueSends what was said in the conversation before the agent was triggered as untrusted background context. Reads the thread for an in-thread trigger and recent channel history otherwise; needs a *:history scope.
slack.threadContext.includeBotMessagesbooleanMONO_AGENT_SLACK_THREAD_CONTEXT_INCLUDE_BOT_MESSAGEStruetrueInclude other apps’ messages (a CI or alert bot) labelled as bots. The agent’s own posts are always excluded.
slack.threadContext.maxMessagesintegerMONO_AGENT_SLACK_THREAD_CONTEXT_MAX_MESSAGES1515Messages of context sent per turn, newest kept. 0 disables the read. Capped at the harness’s own 30-message bound.
slack.threadContext.requestLimitintegerMONO_AGENT_SLACK_THREAD_CONTEXT_REQUEST_LIMIT1515Objects requested from Slack per read. Slack caps this at 15 for non-Marketplace apps; internal apps can raise it.
slack.threadContext.timeoutMsintegerMONO_AGENT_SLACK_THREAD_CONTEXT_TIMEOUT_MS40004000Budget for the whole context phase, including name resolution. Exceeding it submits the turn with less context rather than delaying it. 0 bounds the phase only by the turn itself.
slack.unfurlLinksbooleanMONO_AGENT_SLACK_UNFURL_LINKSunsetfalseControls link previews on native Slack agent chat.postMessage requests. When unset, the request field is omitted and Slack’s current default behavior is preserved.
slack.unfurlMediabooleanMONO_AGENT_SLACK_UNFURL_MEDIAunsetfalseControls media previews on native Slack agent chat.postMessage requests. When unset, the request field is omitted and Slack’s current default behavior is preserved.
subagentsobjectMONO_AGENT_SUBAGENTS_JSON{“enabled”:false}{"enabled":true,"maxConcurrent":5,"instances":{"enabled":true,"maxPerConversation":8,"idleTtlMs":86400000,"maxTurns":60},"models":[{"name":"fable","model":"anthropic:claude-fable-5-1"},"openai-codex:gpt-6-astra"],"definitions":[{"name":"researcher","description":"Reads code and docs to answer a factual question about the codebase. Read-only.","prompt":"You are a codebase researcher. Answer with file:line citations. Never modify files.","allowedTools":["Read","Glob","Grep"]}]}Subagent profiles the Agent tool can deploy, plus its caps. instances enables conversation-scoped persistent children when subagents are enabled and effective tool policy allows both Agent and AgentSend: root defaults to <artifacts.dir>/../subagents, maxPerConversation is 1–32 (default 8), idleTtlMs is 60000–604800000 (default 86400000), and maxTurns is 1–500 (default 60). Agent persist:true creates a child; AgentSend resumes or closes it. Persistent children automatically receive AskParent unless global/profile policy denies it; it durably saves a question and returns successful awaiting_reply. Answer through ordinary AgentSend in the same session. Disabling instances preserves stateless Agent. commandTimeoutMs (positive integer milliseconds, default 1800000) is the foreground Bash/Exec ceiling for detached persistent children, clamped to their process job’s remaining runtime; interactive turns and foreground children keep the 120 s default. models is an operator allow-list of model reference strings or {name?, model} objects; an omitted name uses the canonical reference. Explicit names must be lowercase kebab-case (1-40 characters), unique, and distinct from profile names and general-purpose; duplicate models are rejected. Agent accepts model from that list and effort on every call shape. Each value resolves as call-time override, profile pin, parent effective value, then base/runtime default. Disabled unless enabled is true, in which case Agent must also appear in tools.allowedTools. Each definition needs exactly one of prompt or promptPath; omitted allowedTools means a read-only default set, and the ”*” wildcard is rejected. The agent may also author a specialized subagent at call time unless inline.enabled is false; inline.allowedTools caps what an authored subagent may request, defaulting to the parent agent’s own built-ins. maxConcurrent is a ceiling, not a scheduling guarantee: Pi 0.85 serializes all tool calls when any stateful/mutating or MCP tool is offered.
telegram.allowAllChatsbooleanMONO_AGENT_TELEGRAM_ALLOW_ALL_CHATSfalsetrueConfigures allowAllChats for the telegram section.
telegram.allowedChatIdsstring[]MONO_AGENT_TELEGRAM_ALLOWED_CHAT_IDSunset["example"]Configures allowedChatIds for the telegram section.
telegram.apiRootstringMONO_AGENT_TELEGRAM_API_ROOTunsetexampleConfigures apiRoot for the telegram section.
telegram.attachments.downloadTimeoutMsintegerMONO_AGENT_TELEGRAM_ATTACHMENT_DOWNLOAD_TIMEOUT_MSunset1Configures attachments.downloadTimeoutMs for the telegram section.
telegram.attachments.maxBytesintegerMONO_AGENT_TELEGRAM_ATTACHMENT_MAX_BYTESunset1Configures attachments.maxBytes for the telegram section.
telegram.attachments.maxUploadBytesintegerMONO_AGENT_TELEGRAM_UPLOAD_MAX_BYTESunset1Configures attachments.maxUploadBytes for the telegram section.
telegram.botTokenstringMONO_AGENT_TELEGRAM_BOT_TOKENunsetenv:MONO_AGENT_TELEGRAM_BOT_TOKENSecret value for telegram.botToken; prefer the env override.
telegram.commandsarray--[][{"command":"status","prompt":"Report current status."}]Telegram command definitions handled by the Telegram adapter.
telegram.enabledbooleanMONO_AGENT_TELEGRAM_ENABLEDfalsetrueEnables the telegram capability.
telegram.groupModestringMONO_AGENT_TELEGRAM_GROUP_MODEanymentionGroup-message trigger rule: any runs every allowed group message; mention runs only native @mentions of the bot and replies to its messages. Direct chats and commands are unaffected.
telegram.pollWatchdogMsintegerMONO_AGENT_TELEGRAM_POLL_WATCHDOG_MSunset1Configures pollWatchdogMs for the telegram section.
telegram.quietHoursobject--unset{"timezone":"Europe/Amsterdam","start":"22:00","end":"07:00"}Quiet-hours rules for Telegram notifications.
telegram.reactionsobjectMONO_AGENT_TELEGRAM_REACTIONSunset{"working":true,"done":true,"error":true}Telegram lifecycle reactions. The env override is boolean and toggles all states.
telegram.sendTools.pathScopestring--unsetrun-outputConfine Telegram path uploads to the current run output directory.
telegram.sendTools.scopestring--unsetproducing-conversationBind Telegram send tools to the chat that produced the current run.
telegram.stripMentionTextbooleanMONO_AGENT_TELEGRAM_STRIP_MENTION_TEXTtruetrueRemoves matching native @mentions from responder text in mention mode; replies without a mention are unchanged.
telegram.transcription.endpointstringMONO_AGENT_TELEGRAM_TRANSCRIPTION_ENDPOINTunsetexampleConfigures transcription.endpoint for the telegram section.
telegram.transcription.languagestringMONO_AGENT_TELEGRAM_TRANSCRIPTION_LANGUAGEunsetexampleConfigures transcription.language for the telegram section.
telegram.transcription.modelstringMONO_AGENT_TELEGRAM_TRANSCRIPTION_MODELunsetexampleConfigures transcription.model for the telegram section.
telegram.transcription.timeoutMsintegerMONO_AGENT_TELEGRAM_TRANSCRIPTION_TIMEOUT_MSunset1Configures transcription.timeoutMs for the telegram section.
telegram.transport.ipFamilyintegerMONO_AGENT_TELEGRAM_IP_FAMILYunsetexampleConfigures transport.ipFamily for the telegram section.
tools.allowedToolsstring[]MONO_AGENT_ALLOWED_TOOLS[”*“]["Read","Grep"]Configures allowedTools for the tools section.
tools.continuationServersstring[]MONO_AGENT_CONTINUATION_SERVERSunset["example"]Configures continuationServers for the tools section.
tools.disallowedToolsstring[]MONO_AGENT_DISALLOWED_TOOLS[]["Read","Grep"]Configures disallowedTools for the tools section.
tools.filesystem.readableRootsstring[]MONO_AGENT_FILE_TOOL_READABLE_ROOTSunset["/srv/shared/reference"]Extra roots for managed Read, Glob, and Grep while sandbox.mode is off. Access requires lexical and realpath containment; native sandbox roots remain authoritative when sandboxing is enabled.
tools.filesystem.writableRootsstring[]MONO_AGENT_FILE_TOOL_WRITABLE_ROOTSunset["/srv/shared/output"]Extra roots for managed Write and Edit while sandbox.mode is off; writable roots are also readable. Access requires lexical and realpath containment; native sandbox roots remain authoritative when sandboxing is enabled.
tools.mcpCallMaxTotalTimeoutMsintegerMONO_AGENT_MCP_CALL_MAX_TOTAL_TIMEOUT_MS27000002700000Configures mcpCallMaxTotalTimeoutMs for the tools section.
tools.mcpCallTimeoutMsintegerMONO_AGENT_MCP_CALL_TIMEOUT_MS120000120000Configures mcpCallTimeoutMs for the tools section.
tools.mcpConfigPathstringMONO_AGENT_MCP_CONFIG_PATHunsetexampleConfigures mcpConfigPath for the tools section.
tools.mcpRequestContextServersstring[]MONO_AGENT_MCP_REQUEST_CONTEXT_SERVERS[]["transcribe"]Configured stdio MCP server names that receive trusted per-request conversation, run, output-directory, and scoped progress context.
tools.web.coordinationstringMONO_AGENT_WEB_COORDINATIONprocessprocessHost mode shares web request budgets and cooldowns across participating local mono-agent processes; process preserves isolated coordination.
tools.web.fetch.browserCommandstringMONO_AGENT_WEB_BROWSER_COMMANDagent-browseragent-browserDirect executable name or path for agent-browser; shell fragments are not evaluated.
tools.web.fetch.parallel.apiKeyEnvstringMONO_AGENT_WEB_FETCH_PARALLEL_API_KEY_ENVunsetexampleSecret value for tools.web.fetch.parallel.apiKeyEnv; prefer the env override.
tools.web.fetch.provider`stringstring[]`MONO_AGENT_WEB_FETCH_PROVIDERlocallocal
tools.web.fetch.renderstringMONO_AGENT_WEB_FETCH_RENDERneverneverBrowser-render capability for sparse JavaScript pages. never forces every call to static extraction; auto permits an isolated agent-browser session when needed.
tools.web.search.backend`stringstring[]`MONO_AGENT_WEB_SEARCH_BACKEND[“parallel”,“ollama”]parallel,ollama
tools.web.search.codex.modelstringMONO_AGENT_WEB_SEARCH_CODEX_MODELgpt-5.6-lunagpt-5.6-lunaCodex app-server model used for ChatGPT-subscription web search. The signed-in account must expose both this model and web search; default gpt-5.6-luna.
tools.web.search.endpointstringMONO_AGENT_WEB_SEARCH_ENDPOINTunsetexampleCompatibility alias for tools.web.search.searxng.endpoint and MONO_AGENT_WEB_SEARCH_SEARXNG_ENDPOINT. Existing configurations remain valid; new configurations should use the provider-specific block.
tools.web.search.maxRequestsPerRunintegerMONO_AGENT_WEB_SEARCH_MAX_REQUESTS_PER_RUN44Hard ceiling from 1 to 20 on answered provider searches in one logical runtime run, including empty answers; failures are refunded. Cache hits, coalesced followers, cooldown skips, and quota skips consume no request. A separate dispatch ceiling is four times this limit. Default 4.
tools.web.search.ollama.apiKeyEnvstringMONO_AGENT_WEB_SEARCH_OLLAMA_API_KEY_ENVunsetOLLAMA_API_KEYEnvironment variable containing the hosted Ollama API key. Required only for exact https://ollama.com and rejected for every other origin; the key value is never stored in JSON.
tools.web.search.ollama.baseUrlstringMONO_AGENT_WEB_SEARCH_OLLAMA_BASE_URLhttp://127.0.0.1:11434https://ollama.comOllama origin. Defaults to local http://127.0.0.1:11434 when Ollama is selected, including in a chain. Hosted search is exactly https://ollama.com; custom public origins require HTTPS and trustPublicUrl=true.
tools.web.search.ollama.trustPublicUrlbooleanMONO_AGENT_WEB_SEARCH_OLLAMA_TRUST_PUBLIC_URLfalsetrueExplicit acknowledgement for an HTTPS custom public Ollama origin. It never permits sending hosted credentials to that origin.
tools.web.search.parallel.apiKeyEnvstringMONO_AGENT_WEB_SEARCH_PARALLEL_API_KEY_ENVunsetexampleSecret value for tools.web.search.parallel.apiKeyEnv; prefer the env override.
tools.web.search.searxng.endpointstringMONO_AGENT_WEB_SEARCH_SEARXNG_ENDPOINTunsethttp://127.0.0.1:8088Optional unauthenticated loopback HTTP SearXNG base URL. Remote HTTPS, credentials, query strings, and fragments are rejected.
traceability.globalDiscoverybooleanMONO_AGENT_TRACE_GLOBAL_DISCOVERYtruetrueConfigures globalDiscovery for the traceability section.
traceability.heartbeatMsintegerMONO_AGENT_TRACE_HEARTBEAT_MS1000010000Configures heartbeatMs for the traceability section.
traceability.registryDirstringMONO_AGENT_TRACE_REGISTRY_DIR.mono-agent/trace-sources.mono-agent/trace-sourcesConfigures registryDir for the traceability section.
traceability.sourceIdstringMONO_AGENT_TRACE_SOURCE_IDunsetmy-agentConfigures sourceId for the traceability section.
traceability.sourceLabelstringMONO_AGENT_TRACE_SOURCE_LABELunsetMy AgentConfigures sourceLabel for the traceability section.
traceability.staleAfterMsintegerMONO_AGENT_TRACE_STALE_AFTER_MS3000030000Configures staleAfterMs for the traceability section.
tui.allowNonLoopbackbooleanMONO_AGENT_TUI_ALLOW_NON_LOOPBACKfalsetrueConfigures allowNonLoopback for the tui section.
tui.apiKeystringMONO_AGENT_TUI_API_KEYunsetexampleSecret value for tui.apiKey; prefer the env override.
tui.basePathstringMONO_AGENT_TUI_BASE_PATH/gui/guiConfigures basePath for the tui section.
tui.enabledbooleanMONO_AGENT_TUI_ENABLEDtruetrueEnables the tui capability.
tui.hoststringMONO_AGENT_TUI_HOST127.0.0.1127.0.0.1Configures host for the tui section.
tui.portintegerMONO_AGENT_TUI_PORT00Configures port for the tui section.
tui.requestToolEnvironment.allowedKeysstring[]MONO_AGENT_TUI_REQUEST_TOOL_ENVIRONMENT_ALLOWED_KEYS[]["MULTICA_TOKEN","MULTICA_TASK_ID"]Explicit environment-variable names an ACP request may pass to Bash, Exec, and nested subagents for one turn. Disabled when empty; dangerous process-loader, shell-startup, home, temp, and PATH keys are rejected.
tui.requestToolEnvironment.allowPathPrependbooleanMONO_AGENT_TUI_REQUEST_TOOL_ENVIRONMENT_ALLOW_PATH_PREPENDfalsefalseAllows an ACP request to prepend up to four absolute directories to process-tool PATH for one turn. The caller cannot replace PATH.
webhook.allowNonLoopbackbooleanMONO_AGENT_WEBHOOK_ALLOW_NON_LOOPBACKunsettrueConfigures allowNonLoopback for the webhook section.
webhook.apiKeystringMONO_AGENT_WEBHOOK_API_KEYunsetset-via-MONO_AGENT_WEBHOOK_API_KEYSecret value for webhook.apiKey; prefer the env override.
webhook.defaultModestringMONO_AGENT_WEBHOOK_DEFAULT_MODEsyncsyncConfigures defaultMode for the webhook section.
webhook.dirstringMONO_AGENT_WEBHOOK_DIRwebhookwebhookConfigures dir for the webhook section.
webhook.effortstringMONO_AGENT_WEBHOOK_EFFORTunsetexampleConfigures effort for the webhook section.
webhook.enabledbooleanMONO_AGENT_WEBHOOK_ENABLEDfalsetrueEnables the webhook capability.
webhook.endpointsarrayMONO_AGENT_WEBHOOK_ENDPOINTS_JSON[][{"name":"triage","path":"/webhook/triage","prompt":"Triage this payload."}]Named webhook endpoints with per-endpoint prompt, model/effort, and maxRunMs overrides.
webhook.hoststringMONO_AGENT_WEBHOOK_HOST127.0.0.1127.0.0.1Configures host for the webhook section.
webhook.maxAttachmentBytesintegerMONO_AGENT_WEBHOOK_MAX_ATTACHMENT_BYTES2097152020971520Configures maxAttachmentBytes for the webhook section.
webhook.maxRunMsintegerMONO_AGENT_WEBHOOK_MAX_RUN_MSunset1Configures maxRunMs for the webhook section.
webhook.maxStoredRequestsintegerMONO_AGENT_WEBHOOK_MAX_STORED_REQUESTS100100Configures maxStoredRequests for the webhook section.
webhook.modelstringMONO_AGENT_WEBHOOK_MODELunsetexampleConfigures model for the webhook section.
webhook.notifybooleanMONO_AGENT_WEBHOOK_NOTIFYunsetexampleConfigures notify for the webhook section.
webhook.notifyConversationIdstringMONO_AGENT_WEBHOOK_NOTIFY_CONVERSATION_IDunsetexampleConfigures notifyConversationId for the webhook section.
webhook.pathstringMONO_AGENT_WEBHOOK_PATH/webhook/invoke/webhook/invokeConfigures path for the webhook section.
webhook.portintegerMONO_AGENT_WEBHOOK_PORT00Configures port for the webhook section.
webhook.promptstringMONO_AGENT_WEBHOOK_PROMPTunsetexampleConfigures prompt for the webhook section.
webhook.retentionMsintegerMONO_AGENT_WEBHOOK_RETENTION_MS300000300000Configures retentionMs for the webhook section.

channels.plugins[] entries are intentionally open at config: the plugin package owns that nested payload. The host validates the plugin envelope (package, optional id, optional label, and config) and each loaded plugin reports its own config warnings.