Configuration Schema

Configuration Schema

JSON Schema for the Operator configuration file (config.toml).

Schema Information

Required Fields

Properties

Property Type Required Description
projects array No List of projects operator can assign work to
agents AgentsConfig Yes  
notifications NotificationsConfig Yes  
queue QueueConfig Yes  
paths PathsConfig Yes  
ui UiConfig Yes  
launch LaunchConfig Yes  
templates TemplatesConfig Yes  
api ApiConfig No  
logging LoggingConfig No  
tmux TmuxConfig No  
sessions SessionsConfig No Session wrapper configuration (tmux, vscode, or cmux)
llm_tools LlmToolsConfig No  
rest_api RestApiConfig No  
git GitConfig No  
kanban KanbanConfig No Kanban provider configuration for syncing issues from Jira, Linear, etc.
version_check VersionCheckConfig No Version check configuration for automatic update notifications
delegators array No Agent delegator configurations for autonomous ticket launching
model_servers array No User-declared model servers (ollama, lmstudio, any OpenAI-compat host). Implicit builtin servers exist for each llm_tool’s vendor API and do not need declaration.
relay RelayConfig No Relay MCP injection configuration
mcp McpConfig No Model Context Protocol (MCP) server configuration
acp AcpConfig No Agent Client Protocol (ACP) agent configuration

Type Definitions

AgentsConfig

Property Type Required Description
max_parallel integer Yes  
cores_reserved integer Yes  
max_agents_per_repo integer No Maximum concurrent agents per project/repo (default: 1). Requires git.use_worktrees = true when > 1 to avoid conflicts.
health_check_interval integer Yes  
generation_timeout_secs integer No Timeout in seconds for each agent generation (default: 300 = 5 min)
sync_interval integer No Interval in seconds between ticket-session syncs (default: 60)
step_timeout integer No Maximum seconds a step can run before timing out (default: 1800 = 30 min)
silence_threshold integer No Seconds of tmux silence before considering agent awaiting input (default: 30)

NotificationsConfig

Notifications configuration with support for multiple integrations.

Property Type Required Description
enabled boolean Yes Global enabled flag for all notifications
os OsNotificationConfig No OS notification configuration
webhook object No Single webhook configuration (for simple setups)
webhooks array No Multiple webhook configurations

OsNotificationConfig

OS notification configuration.

Property Type Required Description
enabled boolean No Whether OS notifications are enabled
sound boolean No Play sound with notifications
events array No Events to send (empty = all events) Possible values: agent.started, agent.completed, agent.failed, agent.awaiting_input, agent.session_lost, pr.created, pr.merged, pr.closed, pr.ready_to_merge, pr.changes_requested, ticket.returned, investigation.created

WebhookConfig

Webhook notification configuration.

Property Type Required Description
name string | null No Optional name for this webhook (for logging)
enabled boolean No Whether this webhook is enabled
url string No Webhook URL
auth_type string | null No Authentication type: “bearer” or “basic”
token_env string | null No Environment variable containing the bearer token
username string | null No Username for basic auth
password_env string | null No Environment variable containing the password for basic auth
events array | null No Events to send (empty = all events)

QueueConfig

Property Type Required Description
auto_assign boolean Yes  
priority_order array Yes  
poll_interval_ms integer Yes  

PathsConfig

Property Type Required Description
tickets string Yes  
projects string Yes  
state string Yes  
worktrees string No Base directory for per-ticket worktrees (default: ~/.operator/worktrees)

UiConfig

Property Type Required Description
refresh_rate_ms integer Yes  
completed_history_hours integer Yes  
summary_max_length integer Yes  
panel_names PanelNamesConfig No  

PanelNamesConfig

Property Type Required Description
status string No  
queue string No  
in_progress string No  
completed string No  

LaunchConfig

Property Type Required Description
confirm_autonomous boolean Yes  
confirm_paired boolean Yes  
launch_delay_ms integer Yes  
docker DockerConfig No Docker execution configuration
yolo YoloConfig No YOLO (auto-accept) mode configuration

DockerConfig

Docker execution configuration for running agents in containers

Property Type Required Description
enabled boolean No Whether docker mode option is available in launch dialog
image string No Docker image to use (required if enabled)
extra_args array No Additional docker run arguments
mount_path string No Container mount path for the project (default: /workspace)
env_vars array No Environment variables to pass through to the container

YoloConfig

YOLO (auto-accept) mode configuration for fully autonomous execution

Property Type Required Description
enabled boolean No Whether YOLO mode option is available in launch dialog

TemplatesConfig

Property Type Required Description
preset CollectionPreset No Named preset for issue type collection Options: simple, dev_kanban, devops_kanban, custom
collection array No Custom issuetype collection (only used when preset = custom) List of issue type keys: TASK, FEAT, FIX, SPIKE, INV
active_collection string | null No Active collection name (overrides preset if set) Can be a builtin preset name or a user-defined collection

CollectionPreset

Predefined issue type collections

Allowed Values:

ApiConfig

API integrations configuration

Property Type Required Description
pr_check_interval_secs integer No Interval in seconds between PR status checks (default: 60)
rate_limit_check_interval_secs integer No Interval in seconds between rate limit checks (default: 300)
rate_limit_warning_threshold number No Show warning when rate limit remaining is below this percentage (default: 0.2)

LoggingConfig

Logging configuration

Property Type Required Description
level string No Log level filter (trace, debug, info, warn, error)
to_file boolean No Whether to log to file in TUI mode (false = stderr for debugging)

TmuxConfig

Property Type Required Description
config_generated boolean No Whether custom tmux config has been generated

SessionsConfig

Session wrapper configuration

Controls how operator creates and manages terminal sessions for agents. Four modes are supported:

Property Type Required Description
wrapper SessionWrapperType No Which session wrapper to use
tmux SessionsTmuxConfig No Tmux-specific configuration
vscode SessionsVSCodeConfig No VS Code-specific configuration
cmux SessionsCmuxConfig No cmux-specific configuration
zellij SessionsZellijConfig No Zellij-specific configuration

SessionWrapperType

Session wrapper type for terminal session management

Allowed Values:

SessionsTmuxConfig

Tmux-specific session configuration

Property Type Required Description
config_generated boolean No Whether custom tmux config has been generated
socket_name string No Socket name for session isolation

SessionsVSCodeConfig

VS Code extension session configuration

Property Type Required Description
webhook_port integer No Port for extension webhook server
connect_timeout_ms integer No Connection timeout in milliseconds

SessionsCmuxConfig

cmux macOS terminal multiplexer session configuration

Property Type Required Description
binary_path string No Path to the cmux binary
require_in_cmux boolean No Require running inside cmux (CMUX_WORKSPACE_ID env var present)
placement CmuxPlacementPolicy No Where to place new agent sessions: “auto”, “workspace”, or “window”

CmuxPlacementPolicy

Placement policy for cmux sessions: where to create new agent terminals

Allowed Values:

SessionsZellijConfig

Zellij terminal workspace manager session configuration

Property Type Required Description
require_in_zellij boolean No Require running inside Zellij (ZELLIJ env var present)

LlmToolsConfig

LLM CLI tools configuration

Property Type Required Description
detected array No Detected CLI tools (populated on first startup)
providers array No Available {tool, model} pairs for launching tickets Built from detected tools + their model aliases
detection_complete boolean No Whether detection has been completed
default_tool string | null No User’s preferred default LLM tool (e.g., “claude”)
default_model string | null No User’s preferred default model alias (e.g., “opus”)
skill_directory_overrides object No Per-tool overrides for skill directories (keyed by tool_name)

DetectedTool

A detected CLI tool (e.g., claude binary)

Property Type Required Description
name string Yes Tool name (e.g., “claude”)
path string Yes Path to the binary
version string Yes Version string
min_version string | null No Minimum required version for Operator compatibility
version_ok boolean No Whether the installed version meets the minimum requirement
model_aliases array No Available model aliases (e.g., [“opus”, “sonnet”, “haiku”])
command_template string No Command template with , , placeholders
capabilities ToolCapabilities No Tool capabilities
yolo_flags array No CLI flags for YOLO (auto-accept) mode

ToolCapabilities

Tool capabilities

Property Type Required Description
supports_sessions boolean No Whether the tool supports session continuity via UUID
supports_headless boolean No Whether the tool can run in headless/non-interactive mode

LlmProvider

A {tool, model} pair that can be selected when launching tickets. Includes optional variant fields adopted from vibe-kanban’s profile system.

Property Type Required Description
tool string Yes CLI tool name (e.g., “claude”, “codex”, “gemini”)
model string Yes Model alias or name (e.g., “opus”, “sonnet”, “gpt-4.1”)
display_name string | null No Optional display name for UI (e.g., “Claude Opus”, “Codex High”)
flags array No Additional CLI flags for this provider (e.g., [”–dangerously-skip-permissions”])
env object No Environment variables to set when launching
approvals boolean No Whether this provider requires approval gates
plan_only boolean No Whether to run in plan-only mode
reasoning_effort string | null No Reasoning effort level (Codex: “low”, “medium”, “high”)
sandbox string | null No Sandbox mode (Codex: “danger-full-access”, “workspace-write”)

SkillDirectoriesOverride

Per-tool skill directory overrides

Property Type Required Description
global array No Additional global skill directories
project array No Additional project-relative skill directories

RestApiConfig

REST API server configuration

Property Type Required Description
enabled boolean No Whether the REST API is enabled
host string No Address the REST API binds to. Defaults to 127.0.0.1 (local only) so the server — which reports the project directory name — is not reachable from other hosts. Set to 0.0.0.0 to expose it on all interfaces.
port integer No Port for the REST API server
cors_origins array No CORS allowed origins (empty = allow all)

GitConfig

Git provider configuration for PR/MR operations

Property Type Required Description
provider object No Active provider (auto-detected from remote URL if not specified)
github GitHubConfig No GitHub-specific configuration
gitlab GitLabConfig No GitLab-specific configuration (planned)
branch_format string No Branch naming format (e.g., “{type}/{ticket_id}-{slug}”)
use_worktrees boolean No Whether to use git worktrees for per-ticket isolation (default: false) When false, tickets work directly in the project directory with branches

GitProviderConfig

Git provider selection

Allowed Values:

GitHubConfig

GitHub-specific configuration

Property Type Required Description
enabled boolean No Whether GitHub integration is enabled
token_env string No Environment variable containing the GitHub token (default: GITHUB_TOKEN)

GitLabConfig

GitLab-specific configuration (planned)

Property Type Required Description
enabled boolean No Whether GitLab integration is enabled
token_env string No Environment variable containing the GitLab token (default: GITLAB_TOKEN)
host string | null No GitLab host (default: gitlab.com, can be self-hosted)

KanbanConfig

Kanban provider configuration for syncing issues from external systems

Providers are keyed by domain/workspace:

Property Type Required Description
jira object No Jira Cloud instances keyed by domain (e.g., “foobar.atlassian.net”)
linear object No Linear instances keyed by workspace slug
github object No GitHub Projects v2 instances keyed by owner login (user or org) NOTE: This is the kanban GitHub integration (Projects v2), distinct from GitHubConfig which is the git provider used for PRs and branches. The two use different env vars and different scopes — see docs/getting-started/kanban/github.md for the full disambiguation.

JiraConfig

Jira Cloud provider configuration

The domain is specified as the HashMap key in KanbanConfig.jira

Property Type Required Description
enabled boolean No Whether this provider is enabled
api_key_env string No Environment variable name containing the API key (default: OPERATOR_JIRA_API_KEY)
email string No Atlassian account email for authentication
projects object No Per-project sync configuration

ProjectSyncConfig

Per-project/team sync configuration for a kanban provider

Property Type Required Description
sync_user_id string No User ID to sync issues for (provider-specific format) - Jira: accountId (e.g., “5e3f7acd9876543210abcdef”) - Linear: user ID (e.g., “abc12345-6789-0abc-def0-123456789abc”) - GitHub Projects: numeric GitHub databaseId (e.g., “12345678”)
sync_statuses array No Workflow statuses to sync (empty = default/first status only)
collection_name string | null No Optional IssueTypeCollection name this project maps to. Not required for kanban onboarding or sync.
type_mappings object No Explicit mapping: kanban issue type ID → operator issue type key (e.g., TASK, FEAT, FIX). Multiple kanban types can map to the same operator template.
bidirectional boolean No When true, operator pushes status changes and activity logs back to this kanban project. Ticket state changes (todo→doing, doing→done) and step completions with delegator info are reflected upstream. Default: false.

LinearConfig

Linear provider configuration

The workspace slug is specified as the HashMap key in KanbanConfig.linear

Property Type Required Description
enabled boolean No Whether this provider is enabled
api_key_env string No Environment variable name containing the API key (default: OPERATOR_LINEAR_API_KEY)
projects object No Per-team sync configuration

GithubProjectsConfig

GitHub Projects v2 (kanban) provider configuration

The owner login (user or org) is specified as the HashMap key in KanbanConfig.github. Project keys inside projects are GraphQL node IDs (e.g., PVT_kwDOABcdefg) — opaque, stable identifiers used directly by every GitHub Projects v2 mutation without needing a lookup.

Distinct from GitHubConfig (the git provider used for PR/branch operations). They live in different parts of the config tree, use different env vars (OPERATOR_GITHUB_TOKEN vs GITHUB_TOKEN), and require different OAuth scopes (project vs repo). See docs/getting-started/kanban/github.md for the full rationale.

Property Type Required Description
enabled boolean No Whether this provider is enabled
api_key_env string No Environment variable name containing the GitHub token (default: OPERATOR_GITHUB_TOKEN). The token must have project (or read:project) scope, NOT just repo — see the disambiguation guide in the kanban github docs.
projects object No Per-project sync configuration. Keys are GraphQL project node IDs.

VersionCheckConfig

Version check configuration for automatic update notifications

Property Type Required Description
enabled boolean No Enable automatic version checking on startup
url string | null No URL to fetch latest version from (optional, can be removed)
timeout_secs integer No Timeout in seconds for version check HTTP request

Delegator

Agent delegator configuration for autonomous ticket launching

A delegator is a named {tool, model} pairing with optional launch configuration that can be used to launch agents for tickets.

Property Type Required Description
name string Yes Unique name for this delegator (e.g., “claude-opus-auto”)
llm_tool string Yes LLM tool name (must match a detected tool, e.g., “claude”, “codex”)
model string Yes Model alias (e.g., “opus”, “sonnet”, “gpt-4o”)
display_name string | null No Optional display name for UI
model_properties object No Arbitrary model properties (e.g., reasoning_effort, sandbox)
launch_config object No Optional launch configuration
model_server string | null No Name of a declared ModelServer (from Config.model_servers). None means use the llm_tool’s implicit vendor default (claude → anthropic-api, codex → openai-api, gemini → google-api).
remote_agent object No Declarative reference to a remote, named agent on another platform (e.g. an AGNT agent or an OpenAI Assistant; see [crate::config::AgentProfile]). Export-only: Operator has no runtime client for those platforms, so a delegator carrying this CANNOT be launched locally — resolution errors out (see delegator_resolution). It is stored, listed, serialized into an AgentProfile, and — for platform == "agnt" — surfaced in the --format agnt workflow export as an agnt-agent node. None = ordinary, locally launchable delegator.
x_agnt object No Opaque AGNT-namespaced extension fields, preserved verbatim across an AgentProfile round-trip so re-export is lossless (e.g. memory, assignedWorkflows, creditLimit). Operator never interprets this.
x_openai object No Opaque OpenAI-namespaced extension fields, preserved verbatim across an AgentProfile round-trip (e.g. instructions, tools, tool_resources, metadata, thread refs). Mirror of [Self::x_agnt]; never interpreted.
unmapped_core object No Opaque carry for AgentProfile shared-core fields Operator cannot model first-class (system_prompt / skills / mcp_servers / tools) so an import→export round-trip is lossless. Distinct from x_agnt: these are shared-core fields, not AGNT-specific, so folding them into x_agnt would corrupt that namespace. Operator never interprets this.

DelegatorLaunchConfig

Launch configuration for a delegator

Controls how the delegator launches agents. Optional fields use tri-state semantics: None = inherit from global config, Some(true/false) = override.

Property Type Required Description
yolo boolean No Run in YOLO (auto-accept) mode
permission_mode string | null No Permission mode override
flags array No Additional CLI flags
use_worktrees boolean | null No Override global git.use_worktrees per-delegator (None = use global setting)
create_branch boolean | null No Whether to create a git branch for the ticket (None = default behavior)
docker boolean | null No Run in docker container (None = use global launch.docker.enabled)
prompt_prefix string | null No Prompt text to prepend before the generated step prompt
prompt_suffix string | null No Prompt text to append after the generated step prompt
operator_relay boolean | null No Override global relay auto-inject MCP setting per-delegator (None = use global setting)

RemoteAgentRef

A declarative reference to a remote, named agent hosted by another platform.

platform is the hosting service ("agnt", "openai") — deliberately distinct from the core provider/llm_tool (the model or coding CLI). These agents are API/memory-native and live on the remote side; Operator has no runtime client for them, so a delegator carrying one is export-only and cannot be launched locally (see the guard in delegator_resolution).

Property Type Required Description
platform string Yes Hosting platform (e.g. "agnt", "openai").
id string Yes Platform-native agent identifier (e.g. an AGNT agent name, an OpenAI asst_… id).

ModelServer

A named host that serves models via an inference API.

Model servers are orthogonal to llm_tools: a delegator pairs an agentic CLI (llm_tool, e.g. claude/codex/gemini) with a model-serving endpoint (model_server, e.g. ollama-local, openai-api, a custom vllm host).

Implicit builtin servers (anthropic-api, openai-api, google-api) are returned by [implicit_model_server_for_tool] and do not need to be declared in config.

Property Type Required Description
name string Yes Unique name (e.g., “ollama-local”, “vllm-gpu1”)
kind string Yes Kind: “ollama”, “openrouter”, “openai-compat”, “anthropic-api”, “openai-api”, “google-api”, “lmstudio”
base_url string | null No Base URL of the inference endpoint (e.g., http://localhost:11434). None for implicit vendor servers means use the SDK default.
api_key_env string | null No Name of an env var providing the API key (e.g., OLLAMA_API_KEY)
extra_env object No Additional environment variables set when spawning agents that use this server
display_name string | null No Optional display name for UI

RelayConfig

Relay MCP injection configuration

Property Type Required Description
auto_inject_mcp boolean No When true, automatically inject the relay MCP server for all delegators. When false (default), relay injection is opt-in per delegator.

McpConfig

Model Context Protocol (MCP) server configuration

Property Type Required Description
http_enabled boolean No Whether to mount MCP HTTP/SSE endpoints on the REST API server. Toggling requires an API restart (no hot-swap of the axum router).
stdio_advertised boolean No Whether the descriptor endpoint advertises the operator mcp stdio command. Set to false on multi-tenant/remote deployments where clients shouldn’t spawn local subprocesses.
expose_ticket_write_tools boolean No Whether to expose ticket-mutating tools (claim, complete, return-to-queue, create) over MCP. Defaults to false because any MCP client can call them.
external_servers array No External MCP servers to inject into spawned agent sessions. Each entry produces a separate --mcp-config file alongside the relay config when launching Claude Code agents.

ExternalMcpServer

An external MCP server to inject into spawned agent sessions.

Values in command, args, and env support ${VAR} interpolation, expanded at spawn time from the operator process environment.

When discover_from is set, operator reads an MCP server spec from that JSON sidecar file at spawn time. The sidecar must contain a top-level mcpServer object with command, args, and env fields. If the file is absent and command is empty, the server is silently skipped.

Property Type Required Description
name string Yes Server name used as the key in the mcpServers JSON object (e.g., “kanbots”). Must be unique across all external servers.
command string No Command to execute. Supports ${VAR} interpolation.
args array No Command arguments. Each element supports ${VAR} interpolation.
env object No Environment variables passed to the MCP server process. Values support ${VAR} interpolation.
enabled boolean No Whether this server is enabled. Allows disabling without removing config.
discover_from string | null No Path to a JSON sidecar discovery file. Relative paths resolve from the project directory. The sidecar must contain { "mcpServer": { ... } }. When the file exists, its mcpServer spec is used verbatim (overriding command/args/env). When absent and command is empty, the server is silently skipped.

AcpConfig

Agent Client Protocol (ACP) agent configuration.

Operator runs as an ACP agent over stdio when editors (Zed, JetBrains, Emacs agent-shell, Kiro, etc.) spawn operator acp. Each ACP session maps to an in-progress ACP ticket and a delegator subprocess.

Property Type Required Description
stdio_advertised boolean No Whether the dashboard advertises the operator acp stdio entrypoint (and editor-config snippet actions). Set to false on machines that shouldn’t be used as ACP agents.
default_delegator string | null No Name of the delegator (from [[delegators]]) to use for ACP prompts. If unset or not found, falls back to the operator’s default delegator resolution.
max_concurrent_sessions integer No Maximum number of concurrent ACP sessions. New session/new requests beyond this limit are rejected with a JSON-RPC error.