-
-
Notifications
You must be signed in to change notification settings - Fork 142
Expand file tree
/
Copy pathconfig.example.yaml
More file actions
179 lines (161 loc) · 6.57 KB
/
Copy pathconfig.example.yaml
File metadata and controls
179 lines (161 loc) · 6.57 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
# 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: claude, codex, gpt, local, lmstudio, openrouter, atlascloud
# For GPT: run `openswarm auth login --provider gpt`
# (uses the public Codex OAuth client by default — no extra config needed)
# 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: claude
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
allowedProjects:
- ~/dev/your-project
# Task decomposition settings (Planner Agent)
decomposition:
enabled: true # Enable decomposition
thresholdMinutes: 30 # Decompose if estimated time exceeds this
plannerModel: claude-opus-4-7 # Planner model (Opus for deep decomposition)
# 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: claude-opus-4-7
maxIssues: 80
# Per-role settings
# Hybrid config: Claude for complex coding, local model for review/docs ($0)
defaultRoles:
worker:
enabled: true
adapter: claude
model: claude-sonnet-4-6 # Sonnet for coding tasks
escalateModel: claude-opus-4-7 # On failure: Opus
escalateAfterIteration: 3
timeoutMs: 1800000 # 30 minutes
reviewer:
enabled: true
adapter: local # Local model — free, 7s response
model: gemma-4-e4b-it # Gemma 4 e4b via LMStudio
escalateModel: claude-sonnet-4-6 # Spot check: Sonnet reviews after N revisions
escalateAfterIteration: 3 # Escalate from 3rd iteration
timeoutMs: 60000 # 1 minute (local models are slower)
tester:
enabled: false
documenter:
enabled: false
adapter: local
model: gemma-4-e4b-it
timeoutMs: 120000 # 2 minutes
auditor:
enabled: false
adapter: local
model: gemma-4-e4b-it
timeoutMs: 300000 # 5 minutes
skill-documenter:
enabled: false
adapter: local
model: gemma-4-e4b-it
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 for lightweight vs heavy work
jobProfiles:
- name: quick-analysis
maxMinutes: 15
roles:
worker: claude-haiku-4-5-20251001 # Haiku for simple tasks
- name: deep-engineering
minMinutes: 16
roles:
worker: claude-sonnet-4-6 # Sonnet for complex work
reviewer: claude-sonnet-4-6 # Sonnet reviews Sonnet
# 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