Skip to content

Orchestration settings

The gateway-level switch is gateway.orchestration: true. It applies to every agent and connected channel. The fields below live under agents[].orchestration, except voice, which lives directly under agents[].voice. Do not configure a second enabled or channel allowlist inside an agent's orchestration block.

Enabling orchestration saves gateway.headless: true. Both the conversation agent and workers run through Claude Code's headless execution path. Host process supervision requires Linux. App-agents run inside their own validated containers; a missing or unsafe container never falls back to host execution.

Example

This is an agent-entry fragment. Keep the agent's existing workspace, Claude model, channels and credentials.

json
{
  "id": "assistant",
  "orchestration": {
    "conversation": { "semanticIntake": true, "intakeWaitMs": 2000 },
    "tasks": {
      "workspaceMode": "host",
      "maxConcurrentPerAgent": 10,
      "maxConcurrentPerConversation": 10,
      "workerIdleTtlMs": 600000,
      "idleTimeoutMs": 300000,
      "maxDurationMs": 0
    }
  },
  "voice": { "enabled": false }
}

Conversation processing

Field under conversationRuntime defaultMeaning
backendinheritUse the configured Claude Code backend/model; no alternative backend name is supported
semanticIntakefalsePrepare incomplete materials and combine them with the next instruction
intakeWaitMs2000Wait after the latest incomplete input before asking for clarification; not an extra delay for complete instructions
maxActiveSessions2Bound concurrently active conversation decisions per agent
notificationPolicyexisting_receive_pathDeliver task events through the existing receive path; next_user_turn is also accepted
idleTimeoutMs120000Conversation decision inactivity budget; progress renews the idle clock
startupTimeoutMs120000Startup budget
firstResponseTimeoutMs120000Budget for first response activity
maxDecisionDurationMs600000Total decision budget; separate from worker task runtime
preemptionGraceMs250Accepted configuration field; currently not consumed by runtime preemption
maxPendingInputs100Bound queued conversation input

decisionTimeoutMs is a compatibility alias for idleTimeoutMs. Its original template value 15000 is normalized to the modern default. Set idleTimeoutMs explicitly for new configurations.

intakeWaitMs measures received material, not microphone silence or an upload in progress. Voice turn detection has its own turns.silenceCommitMs. See intake behavior.

Worker pool and queue

Field under tasksRuntime defaultMeaning
maxConcurrentPerAgent10Worker concurrency budget across an agent
maxConcurrentPerConversation10Worker concurrency budget in one conversation
workerIdleTtlMs600000Retain an idle worker session for ten minutes for reuse
maxQueuedPerConversation20Pending queue bound in one conversation
maxQueuedPerAgent100Pending queue bound across the agent
idleTimeoutMs300000Quiet-worker observation budget; not an unconditional five-minute kill
maxDurationMs0Optional hard task deadline; zero disables total-duration expiry
interruptAckTimeoutMs5000Accepted configuration field; currently not consumed by the interruption path
workspaceModehostHost agents' workspace policy; installed app-agents use container
projectRootemptyOptional starting directory; empty uses the agent workspace
resourceRetentionDays7Retention policy for task resources; distinct from conversation history retention

defaultTimeoutMs is the compatibility alias for the worker inactivity budget. If explicitly set and idleTimeoutMs is absent, it supplies that budget; it is not a fixed wall-clock task limit. Task queue limits and worker concurrency are different controls: a queued task does not mean another worker is already running it.

Workspace modes

ModeWhen to use itPreconditions and boundary
hostGeneral host work, research, files, services, browser/API work or codeUses the gateway operating-system account; no Git project is required
isolated-worktreeWork that deliberately needs a separate Git working treeRequires an actual Git repository at the configured root or workspace; admission can return WORKER_GIT_PROJECT_REQUIRED
shared-lockExplicitly serialized work in a shared workspaceRetains the configured policy; review task dependencies and concurrent work
containerInstalled app-agentsAgent and worker stay within the app's validated Docker boundary; no host fallback or host Docker socket

A host worker is not a sandbox protecting the rest of the account's files. A Git worktree is a workspace arrangement, not a security boundary. Container isolation, mounts and injected tools determine app access.

Event retention and subscribers

Field under eventsRuntime defaultMeaning
retentionDays7Retain orchestration events for this period
maxSubscriberBufferBytes1048576Bound each subscriber's buffered event data

Clients should resume streams using the API's documented cursors and refresh their snapshot when retention prevents replay. Task results and historical event delivery are different records; do not infer result deletion from an expired event cursor.

Unknown keys and invalid bounds fail validation rather than silently pretending to apply. Use tasks API, orchestration API, and voice for protocol-level integration.

Source: configuration types, defaults and validation.

Claude Code inside.