Skip to content

Decisions

Each record explains one decision: the context, what was decided, and what follows from it. Records are not rewritten when a decision changes. A new record replaces the old one and links back to it.

# Decision
0001 The agency model: catalog, team, people, office
0002 Ports and adapters, one package per adapter
0003 The office is the only scheduler; agents connect out; the tracker is optional
0004 Trusted humans, with no owner role
0005 The catalog is baked into images and can be ejected
0006 A runtime-neutral permission policy
0007 The office store supports Postgres and SQLite
0008 Hosting and secret storage are out of scope
0009 The Claude Agent SDK is the primary runtime; the CLI is a fallback
0010 Each work item has its own context
0011 Workflows are configured, not hard-coded
0012 The project is licensed under the Apache License 2.0
0013 The subprocess sandbox is opt-in
0014 What the bubblewrap sandbox needs from a container
0015 Allow by default inside the sandbox, with a short list of hard denies
0016 One event pipeline with three decisions
0017 Network and identity are the boundary, not verbs per protocol
0018 The event pipeline is the only way the office decides
0019 Agents make the pipeline’s acts as themselves
0020 The office marks a ticket active for the agent when its work starts
0021 Merging is the agent’s decision, woken when its pull request may be ready
0022 The tracker’s echo of an act wakes no one
0023 A ticket closes once the checks on its merge commit pass
0024 Agent memory is kept behind ost note, on the volume or in the knowledge base
0025 Agents tell a human in chat when work lands on them