Architecture decision records.
One record per decision, numbered in the order decisions were accepted. Numbers are never reused and records are never deleted; a decision that stops being true is marked superseded and stays where it is.
ADRTitleDateStatus
- 0039Each Account may have one Focus, a Project whose Jobs go first2026-09-19Accepted
- 0038A Shift lets Owl work on an Account while the machine is in use2026-09-19Accepted
- 0037An Account carries standing instructions, kept as the tool's own file2026-09-17Accepted
- 0036Every Run is bounded by a timeout and a stall limit2026-09-17Accepted
- 0035An unattended Agent is granted a default allowlist, once, per Account2026-09-14Accepted
- 0034An Agent that will not stop when it is asked is killed2026-09-11Accepted
- 0033Skills are fetched natively in Go and placed per Driver2026-09-09Accepted
- 0032Every Job carries a Source reference, and producing is an upsert2026-09-09Accepted
- 0031A Project is identified by a name, not by its path2026-09-09Accepted
- 0030Verification checks are shell commands with optional expectations2026-09-09Accepted
- 0029The core loop ships first; features land across daemon and Desktop together2026-09-09Accepted
- 0028Model and effort are chosen per phase2026-09-09Accepted
- 0027A Job is a standing intent; a Run is one attempt at it2026-09-09Accepted
- 0026Plan then execute, each Run in a fresh context, continuity by handoff document2026-09-09Accepted
- 0025Queue order and Job attempt limits2026-09-09Accepted
- 0024Skills are declared per Project and managed by Owl2026-09-09Accepted
- 0023A Job runs on its Project's Account2026-09-09Accepted
- 0022Desktop chat is a daemon service with consent-gated, shell-free commands2026-09-09Accepted
- 0021Concurrency is capped globally, per Project and per Account2026-09-09Accepted
- 0020Scheduling respects a per-Account utilization ceiling2026-09-09Accepted
- 0019Accounts are first-class, with isolated tool configuration2026-09-09Accepted
- 0018Driver and Executor are separate plugin axes2026-09-09Accepted
- 0017Owl appends a standing unattended contract to every Run2026-09-09Accepted
- 0016Rebase the Job branch onto its base at the start of every Run2026-09-09Accepted
- 0015Job disposal and worktree garbage collection2026-09-09Accepted
- 0014Configuration discovery and filesystem layout2026-09-09Accepted
- 0013Verification gates Job completion, and does not retry2026-09-09Accepted
- 0012Coding Owl owns the process, Claude Code owns the conversation2026-09-09Accepted
- 0011Idle policy and interruption semantics2026-09-09Accepted
- 0010Homebrew ships a `coding-owl` formula and a `coding-owl-desktop` cask2026-09-09Accepted
- 0009Desktop app is Wails with a React frontend2026-09-09Accepted
- 0008Work queue is local SQLite behind a `Source` interface2026-09-09Accepted
- 0007One git worktree and one branch per Job2026-09-09Accepted
- 0006MVP agents run as host processes, not containers2026-09-09Accepted
- 0005Plugins are Go interfaces, not external processes2026-09-09Accepted
- 0004ConnectRPC over a unix socket2026-09-09Accepted
- 0003Monorepo with a single Go module2026-09-09Accepted
- 0002The daemon never self-daemonizes2026-09-09Accepted
- 0001Single `owl` binary for everything headless2026-09-09Accepted