Repository navigation
Expand file tree
/
Copy pathconfig.example.yml
More file actions
96 lines (85 loc) · 4.54 KB
/
Copy pathconfig.example.yml
File metadata and controls
96 lines (85 loc) · 4.54 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
## Millwright configuration — copy this to config.yml and fill in your values.
## config.yml is gitignored so your secrets stay local.
## New here? Run the `setup-millwright` skill to fill this in interactively, then
## check it with `bin/doctor`. See the Setup section of the README.
# Your GitHub username or org that owns the repos Millwright works on.
owner: "<your-github-username>"
# The GitHub Project (v2) board Millwright reads/writes.
# Create one at https://github.com/users/<you>/projects and fill in the number + node id.
project_number: 1
project_id: "<your-project-node-id>" # GitHub Project node ID (e.g. PVT_kw...)
# Concurrency knobs.
max_workers: 3 # max concurrent coding-agent workers
max_in_review: 5 # max issues sitting in the "In review" column before Millwright pauses pickups
# How long to keep daily log dirs and state/ marker files.
retention_days: 7
# The username your GitHub App posts as. Appears in PR/issue authorship checks.
factory_username: "millwright-bot[bot]"
# Slack incoming-webhook URL. Can also be supplied via SLACK_WEBHOOK env var,
# which takes precedence over this value.
slack_webhook: "<your-slack-webhook-url>"
# GitHub App credentials. Create an app at https://github.com/settings/apps with
# permissions: contents (R/W), issues (R/W), pull requests (R/W), metadata (R).
# Install it on the repo(s) you want Millwright to manage.
github_app:
app_id: 0 # numeric App ID from the GitHub App settings page
installation_id: 0 # numeric Installation ID after installing on your account/org
bot_user_id: 0 # numeric user ID of the [bot] account (gh api /users/<bot>[bot] → id)
private_key_path: "./private-key.pem" # path to the .pem you downloaded. Gitignored by default.
# Pluggable adapters. Defaults below match the only implementations shipped today;
# swap in your own by following docs/adapters.md.
adapters:
issue_tracker: github_projects
version_control: github
update_channel: slack
coding_agent: claude_code
# Claude Code coding-agent adapter settings.
coding_agent:
# Start every spawned worker session with Remote Control enabled.
# true (default) → pass --remote-control | false → omit it |
# "session-name" → pass --remote-control <name>.
remote_control: true
# Pin the worker model (passed as --model). Leave unset to use the CLI's own
# default — but note an unavailable default model silently kills every worker
# (and the doctor) on startup, so pinning a known-available model is safer.
# model: claude-opus-4-8
# Per-issue model selection: add a `model:<name>` label to an issue and the
# worker dispatched for it runs with that model instead of the default above.
# `<name>` is a friendly alias resolved through this map (case-insensitive).
# An unknown/misspelled alias logs a warning + Slack notice and falls back to
# the default — it never silently spawns the wrong model.
model_labels:
fable: claude-fable-5
opus: claude-opus-4-8
sonnet: claude-sonnet-4-6
haiku: claude-haiku-4-5-20251001
# Optional: configure individual routines.
routines:
security_scan:
# Where to clone/find repos for scanning. Defaults to the directory containing
# the Millwright checkout's parent (i.e. the dir Millwright lives in).
workspace_dir: "<absolute-path-to-your-workspace-dir>"
repos:
- name: <your-owner>/<your-repo>
dir: <absolute-path-to-checkout>
weekly_digest:
# Repo to summarise merged PRs from.
repo: <your-owner>/<your-repo>
watchdog:
# Runtime health check (bin/watch). Runs every minute from its own cron entry,
# independent of the orchestrator, and surfaces stalls/breakages to Slack.
stall_minutes: 20 # 0-byte worker log + dead process → crashed
hang_minutes: 45 # worker process alive but no output → hung
orchestrator_tick_minutes: 3 # no orchestrator.log line in N min → cron/orchestrator down
stale_lock_minutes: 45 # dispatch lock held longer than this → wedged
stuck_detection_ticks: 5 # work detected this many ticks with no worker spawned → wedged
max_fix_attempts: 2 # auto-remediation attempts per target before giving up
auto_remediate: true # false → diagnose-and-propose only, never auto-fix
# Names of the columns on your GitHub Project board. Must match exactly (case-sensitive).
statuses:
ready: "Ready"
planning: "cc-planning"
planning_approved: "Planning approved"
building: "In progress"
pr: "In review"
done: "Done"