Configuration Reference

August 22, 2026 ยท View on GitHub

Config lives at .crewplane/config.yml by default. The version field must match the current SCHEMA_VERSION in src/crewplane/version.py.

For practical setup, start with Provider setup.

NeedStart here
First provider-free runGenerated Mock Config
One real providerMinimal Config
Full field listTop Level and agents.<name>
Adapter optionsBuilt-In Integration Options
File-template accesssettings.file_access
Workspace isolationsettings.workspace

Minimal Config

Use this as the smallest real-provider config after the provider CLI works in your shell. New crewplane init projects should start with the generated mock config instead.

version: "1.0"
agents:
  codex:
    cli_cmd: ["codex", "exec"]
    provider_kind: "codex"
    prompt_transport: "stdin"
    prompt_transport_arg: "-"

settings:
  integrations:
    invoker:
      implementation: "cli"
      options: {}

This assumes codex --version works directly in your shell and the workflow uses providers: ["codex"].

Generated Mock Config

Generated config from crewplane init starts with one active mock agent and settings.integrations.invoker.implementation: "mock". That makes the first crewplane validate and crewplane run provider-free. Mock output is deterministic scaffolding, not model output.

The generated config also includes commented provider examples for Claude, Codex, Gemini, Copilot, and Kilo. Uncomment and review only the agents you need before switching the invoker to cli.

version: "1.0"

agents:
  mock:
    cli_cmd: ["__crewplane_mock_invoker_never_executes__"]
    provider_kind: "generic"
    prompt_transport: "stdin"
    default_model: "mock"

settings:
  integrations:
    invoker:
      implementation: "mock"
      options:
        output_mode: "lorem"
        seed: 42
        delay_seconds: 0.25
        observation_delay_seconds: 5

Switching To Real Providers

When switching from the generated mock config to real providers:

  • keep only the agents entries you want to run
  • confirm each provider CLI works directly
  • change workflow providers values to those agent names
  • set settings.integrations.invoker.implementation: "cli"
  • replace generated mock invoker options with options: {}

Provider setup diagram showing the matching agent name in .crewplane/config.yml, the matching workflow provider name, and the invoker switch from mock to cli.

.crewplane/config.yml defines agents.<name>. Workflows select that same name with providers: ["<name>"]. implementation: "mock" keeps the first run provider-free; implementation: "cli" runs real provider commands.

The following tables are a field index for .crewplane/config.yml; nested settings use dotted paths in the left column.

Top Level

FieldDescription
versionConfig schema version.
agentsMapping of provider names to AgentConfig.
settingsOptional runtime settings. If omitted, default settings are used.

agents.<name>

FieldDescription
cli_cmdNon-empty argv list for the provider CLI.
provider_kindclaude, codex, copilot, gemini, kilo, or generic. Defaults to generic.
default_modelOptional model name used when a workflow provider does not override model.
model_argCLI flag for model selection when provider_kind: generic. Defaults to --model; can be null. With the built-in cli invoker, do not set it for built-in provider kinds; that invoker ignores it and reports a preflight warning.
prompt_transportstdin or argv. Defaults to stdin.
prompt_transport_argRequired for argv; optional stdin sentinel for stdin.
extra_argsAdditional argv tokens appended to the provider command.
max_retriesMaximum ordinary non-quota retry attempts. Defaults to 0.
retry_delay_secondsDelay between generic retries. Defaults to 300.0.
retry_on_exit_codesExit codes that trigger retry.
retry_on_stderr_containsStderr substrings that trigger retry.
retry_on_output_containsCombined output substrings that trigger retry.
quota_reached_on_containsOutput substrings treated as quota exhaustion.
quota_reached_retry_delay_secondsDelay after quota detection. Defaults to 300.0.
quota_reset_sleep_floor_secondsMinimum sleep when a quota reset time is parsed. Defaults to 5.0.
quota_retry_max_wait_secondsOptional cumulative quota-wait ceiling for one invocation. Quota retries stop before the next sleep would reach this value.
quota_retry_max_attemptsOptional quota-retry attempt ceiling for one invocation. Quota retries are independent of max_retries.
invocation_timeout_secondsOptional wall-clock timeout. Defaults to null.
invocation_idle_timeout_secondsOptional idle-output timeout. Defaults to 1800.0. Gemini's completion-buffered JSON mode cannot enforce it; use invocation_timeout_seconds for a hard limit.
pricingOptional token pricing buckets.

Command arguments are audited in preflight artifacts, so credentials should normally come from the provider CLI's environment or credential store. If a secret-bearing flag is present in cli_cmd, extra_args, or a workspace setup command, Crewplane replaces split and --flag=value values with an in-memory secret handle before persisting runtime snapshots, plans, setup metadata, diagnostics, or observability records. A keyed fingerprint still participates in execution identity without storing the cleartext value.

agents.<name>.pricing

Pricing values are per million tokens.

FieldDescription
inputInput token price.
cached_inputCached input token price.
cache_writeCache write token price.
outputOutput token price.
reasoningReasoning token price.
totalTotal token price. Cannot be combined with bucket-specific pricing.

settings

FieldDescription
settings.log_levelRuntime log level string. Defaults to info.
settings.sequential_consensus_on_exhaustioncontinue or fatal. Defaults to continue.
settings.max_audit_roundsMaximum allowed node audit_rounds. Defaults to 5.
settings.max_concurrent_nodesOptional cap on concurrent ready nodes.
settings.max_parallel_invocationsOptional cap on provider invocations inside a parallel node.
settings.file_accessCore file-template authorization policy.
settings.token_budgetGlobal token budget warning/failure thresholds.
settings.workspaceExperimental workspace isolation settings.
settings.integrationsAdapter implementation and option settings.

settings.file_access

FieldDescription
allowed_template_pathsExternal paths authorized for {{file:...}} templates. Defaults to []. Relative paths resolve from the current working directory; symlinks are resolved before containment checks.

This is a core file-access policy. It applies independently of the selected artifact adapter and participates in workflow signatures. The built-in filesystem adapter rejects allowed_template_paths as an artifact option.

settings.token_budget

FieldDescription
settings.token_budget.warn_threshold_charsWarning threshold for rendered context size. Defaults to 50000.
settings.token_budget.fail_threshold_charsOptional fail-fast threshold for rendered context size.

settings.workspace

Experimental workspace isolation is disabled by default. Missing settings.workspace is equivalent to settings.workspace.enabled: false. When it is disabled, workflows must not declare worktrees, and provider nodes run from the project root. settings.default_workspace is not supported.

FieldDescription
settings.workspace.enabledEnables Experimental workspace materialization when workflows select worktrees. Defaults to false.
settings.workspace.cache_rootOptional absolute workspace cache path when workspace isolation is enabled. If omitted, Crewplane uses the platform cache location.
settings.workspace.cleanup_on_successDelete successful workspace cache entries. Defaults to true.
settings.workspace.worktree_contractblob_exact, the initial fail-closed Git blob-byte contract.
settings.workspace.clean_startstrict or tracked_only. Defaults to strict.
settings.workspace.setup_profilesMapping of setup profile names to commands.
settings.workspace.setup_profiles.<name>.runNon-empty list of argv command lists.
settings.workspace.setup_timeout_secondsSetup command timeout. Defaults to 600.0.
settings.workspace.identity.include_cache_rootInclude cache root in workspace identity. Defaults to false.
settings.workspace.max_concurrent_materializationsMaximum workspace materializations at once. Defaults to 1.
settings.workspace.disk.warn_free_bytesOptional free-space warning threshold.
settings.workspace.disk.fail_free_bytesOptional free-space failure threshold. Must not exceed warn_free_bytes.

Prices, delays, timeouts, and other floating-point controls must be finite. YAML infinity and NaN values are rejected, and persisted JSON is emitted in strict RFC-compatible form.

Workspace-enabled runs require a supported ordinary Git repository, POSIX or WSL filesystem behavior, and an invoker adapter that honors runtime-supplied cwd. The initial blob_exact contract rejects Git LFS, custom filters, byte-transforming text/eol attributes, submodules, sparse checkout, and partial clone before provider invocation.

settings.integrations

FieldDescription
settings.integrations.invoker.implementationInvoker alias or dotted path. Defaults to cli.
settings.integrations.invoker.optionsJSON-compatible invoker options.
settings.integrations.ui.implementationUI alias or dotted path. Defaults to tmux.
settings.integrations.ui.optionsJSON-compatible UI options.
settings.integrations.artifacts.implementationArtifact alias or dotted path. Defaults to filesystem.
settings.integrations.artifacts.optionsJSON-compatible artifact options.

Built-In Integration Options

cli invoker

Runs configured agents commands against real provider CLIs instead of the deterministic mock invoker. It has no options.

When switching the generated config from mock to cli, replace the generated mock invoker options: block with options: {}. Leaving mock options such as output_mode, seed, or delay settings under the cli invoker is a config error.

Real provider runs start the external commands configured in .crewplane/config.yml. Those tools run with their own filesystem, network, credential, approval, and sandbox settings. Crewplane coordinates them and records artifacts; it does not sandbox them.

mock invoker

Use mock to validate and run workflows without starting provider CLIs. Its output is deterministic scaffolding for orchestration checks, not model output.

OptionDescription
delay_secondsNon-negative delay before mock output. Defaults to 0.
observation_delay_secondsNon-negative visible-observation delay. Defaults to 5.0.
output_modelorem, echo, or file. Defaults to lorem.
output_dirFixture directory. Required when output_mode: "file".
strict_file_modeFail on missing fixtures instead of fallback output. Defaults to false.
seedOptional integer seed or null.
fail_whenList of failure selectors.

mock.fail_when[] selector keys are node_id, task_id, provider, role, audit_round_num, and round_num.

The generated mock agent uses a sentinel cli_cmd value. The mock invoker does not start or validate that command.

tmux UI

OptionDescription
auto_close_sessionClose the tmux session at run end. Defaults to true.
tmux_executabletmux executable name. Defaults to tmux.
quiet_after_secondsQuiet-state threshold. Defaults to 120.0; must be at least 1.0.
log_tail_linesOptional fixed log tail line count from 1 to 200, or null.

none UI

Disables the live UI adapter. Runs still execute normally and write artifacts and logs, but no tmux dashboard or other live observers are created. It has no options.

filesystem artifacts

OptionDescription
log_cli_outputCapture provider CLI output logs. Defaults to true.

Dotted-Path Adapters

External adapters can be selected with a dotted path. Their options payload must be finite JSON-compatible data and is validated by the adapter. The canonical result must assign exactly one execution, artifact, observer, or validation signature scope to every canonical option; missing scopes and scopes for unknown options are rejected during adapter wiring. Explicit sensitive option locations must be RFC 6901 JSON Pointers beginning with /.