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
# OODA Loop Configuration
# ========================
# Target project to work on
project_dir: "/tmp/ooda-demo"
# --- Coding Agent (inner loop) ---
coding_agent:
# Options: codebuff, aider, ollama, ollama-fim, custom
backend: ollama
model: qwen2.5-coder:14b # complex tasks (14b)
model_simple: qwen2.5-coder:7b # simple tasks (7b, 2x faster)
endpoint: http://localhost:11434
# For codebuff: backend: codebuff
# For aider: backend: aider
# For custom: backend: custom
# command: "your-tool --prompt '{prompt}' --dir '{project_dir}'"
# --- Reviewer (outer loop) ---
# Options: "claude" (Anthropic), "api" (Grok/OpenRouter), "ollama" (fully local)
reviewer: ollama
reviewer_model: qwen2.5-coder:14b
reviewer_endpoint: http://localhost:11434
# For Claude (needs Anthropic API credits):
# reviewer: claude
# reviewer_model: claude-sonnet-4-20250514
# anthropic_api_key: "$ANTHROPIC_API_KEY"
# For Grok via xAI API:
# reviewer: api
# xai_api_key: "$XAI_API_KEY"
# review_api_base: "https://api.x.ai/v1"
# review_model: "grok-3-mini"
# For any model via OpenRouter:
# reviewer: api
# xai_api_key: "$OPENROUTER_API_KEY"
# review_api_base: "https://openrouter.ai/api/v1"
# review_model: "x-ai/grok-3-mini"
# --- Test gate ---
test_command: "/usr/bin/python3 -m pytest -x --tb=short -p no:anchorpy"
# test_command: "npm test"
# test_command: "pytest -x"
# test_command: "cargo test"
# --- Loop controls ---
max_attempts_per_task: 3 # retries per task before marking failed
max_cycles: 20 # total loop iterations before stopping
auto_push: false # push to remote when all tasks done
dry_run: false # log what would happen without executing