-
-
Notifications
You must be signed in to change notification settings - Fork 147
Expand file tree
/
Copy pathconfig.example.yaml
More file actions
180 lines (162 loc) · 6.66 KB
/
Copy pathconfig.example.yaml
File metadata and controls
180 lines (162 loc) · 6.66 KB
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
# OpenSwarm Configuration
# Environment variables can be used in ${VAR_NAME} or ${VAR_NAME:-default} format
# Copy this file to config.yaml to use
# Default CLI adapter for worker/reviewer stages
# Options: codex-responses, codex, gpt, local, lmstudio, openrouter, atlascloud, claude
# For ChatGPT OAuth: run `openswarm auth login --provider gpt`
# `codex-responses` runs OpenSwarm's native tool loop with the same login.
# For OpenRouter: run `openswarm auth login --provider openrouter`
# (PKCE browser flow → stores a sk-or-* API key; falls back to manual paste)
# For Atlas Cloud: set ATLASCLOUD_API_KEY
# For local: start Ollama, LMStudio, or llama.cpp server
# For lmstudio: start LM Studio Local Server (default http://localhost:1234)
# Optional env: LMSTUDIO_BASE_URL, LMSTUDIO_MODEL, LMSTUDIO_API_KEY
# If LMSTUDIO_MODEL is unset, the adapter auto-selects the first loaded model.
adapter: codex-responses
discord:
token: ${DISCORD_TOKEN}
channelId: ${DISCORD_CHANNEL_ID}
webhookUrl: ${DISCORD_WEBHOOK_URL:-} # Optional
linear:
apiKey: ${LINEAR_API_KEY}
teamId: ${LINEAR_TEAM_ID}
github:
repos:
- owner/repo # owner/repo format
checkInterval: 300000 # 5 minutes (ms)
# Agent list
agents:
- name: main
projectPath: ~/dev/your-project
heartbeatInterval: 1800000 # 30 minutes (ms)
linearLabel: main # Label for Linear issue filtering
enabled: true
paused: false
# Default heartbeat interval (ms)
defaultHeartbeatInterval: 1800000 # 30 minutes
# Autonomous execution mode settings
autonomous:
enabled: true
pairMode: true
schedule: "*/15 * * * *" # Every 15 minutes
maxAttempts: 3
maxConcurrentTasks: 4 # Number of concurrent tasks
worktreeMode: true # Required for same-project parallel tasks
allowSameProjectConcurrent: true
maxConcurrentPerProject: 2 # Optional cap for same-project worktree parallelism
automationLedgerMode: primary # off | shadow | primary (durable fail-closed execution truth)
automationLeaseMs: 600000 # Renewed every ~3m; stale callbacks are fenced
shutdownGraceMs: 30000 # Wait for real executor exit before service teardown
allowedProjects:
- ~/dev/your-project
# Task decomposition settings (Planner Agent)
decomposition:
enabled: true # Enable decomposition
thresholdMinutes: 30 # Decompose if estimated time exceeds this
plannerModel: gpt-5.6-sol # High-leverage decomposition stays on Sol
# Backlog grooming (Planner compares fetched open queue states against the repo).
# Safe default: comment recommendations only. Set mode: apply to update
# descriptions and move strongly stale issues to Done.
backlogGrooming:
enabled: false
cadenceHours: 24
mode: comment
plannerModel: gpt-5.6-terra # Bulk queue analysis favors the balanced tier
maxIssues: 80
# Per-role settings
# GPT-5.6: Luna=high-volume/light, Terra=balanced default, Sol=quality gate.
defaultRoles:
worker:
enabled: true
model: gpt-5.6-terra # Default implementation tier
escalateModel: gpt-5.6-sol # Repeated failure earns the frontier tier
escalateAfterIteration: 2
timeoutMs: 1800000 # 30 minutes
reviewer:
enabled: true
model: gpt-5.6-sol # Correctness gate; light profile lowers this to Terra
timeoutMs: 600000
tester:
enabled: false
model: gpt-5.6-terra # Used only if deterministic verify cannot run
documenter:
enabled: false
model: gpt-5.6-luna
timeoutMs: 120000 # 2 minutes
auditor:
enabled: false
model: gpt-5.6-sol
timeoutMs: 300000 # 5 minutes
skill-documenter:
enabled: false
model: gpt-5.6-luna
timeoutMs: 120000 # 2 minutes
# Deterministic baseline-diff verification (enabled by default).
# Define repo-specific commands in .openswarm/verify.yaml; see templates/verify.example.yaml.
verify:
enabled: true
blockOnNewFailures: true
maxCommands: 4
# Pipeline guards
guards:
qualityGate: false # deprecated whole-tree gate; prefer verify above
fakeDataGuard: true
conventionalCommits: true
branchValidation: true
uncertaintyDetection: true
registryCheck: true
bsDetector: true # blocks on critical code-smell patterns
dependencyAntiPatternCheck: true # block package recreation/version spoofing after import failures (INT-2388 #1)
contractEvidenceCheck: true # block self-referential contract tests without producer/consumer evidence (INT-2388 #2)
verifiedMetricEvidenceCheck: true # block verified evidence deletion / metric changes without distributions (INT-2388 #4)
deadModuleCheck: true # warn on new modules nothing imports/calls (INT-2388 #5)
reformatCheck: true # warn on reformat-only files / oversized diffs (INT-2388 #6)
# Self-repair reflection budget: max objective (lint/bs/test) failures tolerated
# before the loop gives up on bad edits. Lower it to cap token burn when
# reflection stops making progress; the loop also bails early on stagnation
# (identical errors twice in a row). Default: 3.
maxReflections: 3
# Job profiles override the default Worker/Reviewer pair by task estimate.
jobProfiles:
- name: light
minMinutes: 1
maxMinutes: 29
effort: low
roles:
worker: gpt-5.6-luna
reviewer: gpt-5.6-terra
- name: heavy
minMinutes: 30
effort: high
roles:
worker: gpt-5.6-terra
reviewer: gpt-5.6-sol
# Long-running task monitoring (RunPod training, batch processing, etc.)
#
# checkCommand is a literal argv array — no shell is invoked, so pipes,
# redirects, and substitutions do not work. Put shell logic in a script
# you control and call that script instead (e.g. ["/opt/probe.sh", "arg"]).
#
# monitors:
# - id: runpod-training
# name: "LSTM model training"
# issueId: INT-456
# checkCommand: ["ssh", "runpod", "tail -1 /workspace/train.log"]
# completionCheck:
# type: output-regex
# successPattern: "Training finished"
# failurePattern: "Error|FAILED"
# checkInterval: 2 # Every 2 heartbeats
# maxDurationHours: 24
# notify: true
# PR Auto-Improvement
prProcessor:
enabled: true
schedule: "*/15 * * * *" # Check every 15 minutes
cooldownHours: 6 # Wait 6 hours after processing
maxIterations: 3 # Max 3 Worker-Reviewer iterations
# Anonymous usage telemetry (opt-out). Sends command name, version, and OS only —
# never code, prompts, paths, or personal data. Disable here, or via
# OPENSWARM_TELEMETRY=0 / DO_NOT_TRACK=1. CI environments are excluded automatically.
telemetry:
enabled: true