1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# YARLI runtime configuration
# Generated by: yarli init
#
# Start conservative, then tune by measured behavior.
# All values are editable; comments explain intent and defaults.
[]
# Backend for run/task/event persistence.
# - "in-memory": ephemeral; write commands are blocked unless allow_in_memory_writes=true.
# - "postgres": durable production-style mode.
= "in-memory"
# Explicit ephemeral override.
# Keep false for durable-by-default safety; set true only for local throwaway usage.
= true
# Safety policy mode: observe | restricted | execute | breakglass
= "execute"
# Optional worker identity for scheduler/audit attribution.
# worker_id = "worker-1"
[]
# Required when core.backend = "postgres".
# database_url = "postgres://postgres:postgres@localhost:5432/yarli"
[]
= "custom"
= "arg"
= "codex"
= ["--dangerously-bypass-approvals-and-sandbox", "exec", "--json", "--model", "gpt-5.3-codex-spark", "--config", "model_reasoning_effort=medium"]
[]
= 5
= 14400
= 1800
= 5
[]
= true
[]
# How many ready tasks a worker claims per tick.
= 4
# Lease timeout for claimed tasks.
= 30
# Lease heartbeat interval.
= 5
# Stale lease sweep interval.
= 10
# Additional grace before reclaiming stale leases.
= 5
# Concurrency caps.
= 8
= 16
= 4
= 2
= 8
[]
# Runner backend: native | overwatch
= "native"
# Working directory for command execution (`~` and `$VARS` are expanded).
= "."
# Root directory for per-task workspaces/worktrees (required when features.parallel = true).
# `~` and `$VARS` are expanded.
= ".yarl/workspaces"
# Directory names or paths to exclude from per-task workspace copies.
= [".yarl/workspaces", ".yarli", "target", "node_modules", ".venv", "venv", "__pycache__"]
# Default command timeout in seconds (0 disables timeout).
= 14400
# Scheduler tick cadence.
= 100
[]
# Overwatch service settings (used only when execution.runner = "overwatch").
= "http://127.0.0.1:8089"
# profile = "default"
# soft_timeout_seconds = 300
# silent_timeout_seconds = 120
# max_log_bytes = 131072
[]
# Optional default prompt file for `yarli run`.
# Resolution precedence: --prompt-file > run.prompt_file > PROMPT.md fallback.
= "PROMPT.md"
# Optional default objective when no prompt override is present.
# objective = "verify workspace"
# Seconds to wait for continuation payload availability (`yarli run continue`).
= 0
# Legacy compatibility toggle for stable-trend auto-advance.
= false
# Preferred auto-advance policy: improving-only | stable-ok | always
= "stable-ok"
# Maximum planned-tranche auto-advances per invocation (0 = unlimited).
= 0
# Group adjacent open plan entries with matching `tranche_group=<name>` metadata.
= false
# Cap grouped tasks per tranche (0 = unlimited).
= 0
# Surface per-tranche `allowed_paths=...` metadata as explicit scope instructions.
= false
# Merge conflict resolution strategy: fail | agent | manual
# merge_conflict_resolution = "fail"
# Optional run-spec task catalog (project-level verification/work commands).
# [[run.tasks]]
# key = "lint"
# cmd = "cargo clippy --workspace -- -D warnings"
# class = "cpu"
#
# [[run.tasks]]
# key = "test"
# cmd = "cargo test --workspace"
# class = "io"
#
# Optional explicit tranche definitions for run-spec execution.
# [[run.tranches]]
# key = "verify"
# objective = "verification tranche"
# task_keys = ["lint", "test"]
#
# Optional plan-guard contract for run-spec execution.
# [run.plan_guard]
# target = "I8B"
# mode = "implement"
# default_pace = "batch"
[]
# Token guardrails (enabled by default to prevent runaway cost).
= 500000
= 5000000
# Optional hard limits. Leave commented/unset for no limit.
# max_task_rss_bytes = 1073741824
# max_task_cpu_user_ticks = 100000
# max_task_cpu_system_ticks = 100000
# max_task_io_read_bytes = 1073741824
# max_task_io_write_bytes = 1073741824
# max_run_peak_rss_bytes = 2147483648
# max_run_cpu_user_ticks = 500000
# max_run_cpu_system_ticks = 500000
# max_run_io_read_bytes = 4294967296
# max_run_io_write_bytes = 4294967296
[]
= "main"
= true
[]
= true
= true
[]
= false
# [memory]
# enabled = true
# project_id = "my-project"
# command = "haake"
# project_dir = "." # defaults to the directory containing PROMPT.md
# query_limit = 8
# inject_on_run_start = true
# inject_on_failure = true
#
# Bootstrap Haake for a repository:
# - `haake init -y`
#
# Then YARLI can store/query memories during `yarli run` when enabled=true.
# endpoint is reserved for a future native gRPC/HTTP adapter.
# endpoint = "http://localhost:8080"
[]
= ".yarl/audit.jsonl"
# log_level = "info"
[]
# auto | stream | tui
= "auto"
# verbose_output = false
# cancellation_diagnostics = false