▸ Director: director-main-aaa5961e · 3 open-item(s), 1 need-you

Sessions are disposable. The state of the work isn’t.

Save the work, not the chat: a small local log your agent writes as it works (decisions, open loops, handoffs), loaded into every new session as ground truth.

one shared log across Claude Code · Codex · OpenCode · Copilot CLI: build in one, resume or review in another

Memory tools answer “what does the agent know?”

Director answers “what is the state of the work?”

The session is long past its best. You keep pushing it anyway: it holds everything you accumulated on the way here, the decisions, the dead ends, the loose ends, where you were going. Director removes the fear of losing that context. /clear the moment a session degrades; park a repo, come back whenever. The state of the work lives in the log, not in the chat. You never write a status update. You direct.

$ curl -fsSL https://raw.githubusercontent.com/colinsurprenant/director/main/install.sh | sh

downloads a verified binary and wires Claude Code (pass --codex for Codex, --opencode for OpenCode, --copilot for Copilot CLI, --all for all four) · macOS, Linux, WSL · go install and prebuilt binaries also available

$ claude
  … deep into the pagination rework …
 decision   recorded · cursor pagination, not offset; offsets break under deletes

 open-item  recorded · timezone edge case before the backfill merges
  … later …
 handoff    parked · cursor rework done · next: the backfill script · watch the p99

──────────── session ends ────────────

$ codex
> where were we?
▸ Director: acme-api-main-7c21e9d4 · 1 open-item(s), 1 need-you

## open-items
01KWJ4X2…  open-item  timezone edge case before the backfill merges  [risk:escalate]

## handoffs
01KWJ9RM…  handoff    cursor rework done · next: the backfill script · watch the p99

## decisions
01KWJ4W8…  decision   cursor pagination, not offset; offsets break under deletes
recorded while it works · loaded when the next one starts

how it works

An append-only log per repo. Deterministic projections. A push at session start.

A Claude Code session records decisions, open items, and handoffs to an append-only log; a Codex session a day later starts with them injected and appends to the same log.
sessions end · the log doesn’t · one file, any harness

$ director emit

Sessions record as they work: decision · open-item · handoff · note. Four kinds, one append-only NDJSON log per repo, lossless under concurrent writers.

$ director resolve

Loops close consciously. An open item stays visible until someone resolves it; nothing scrolls away, nothing silently vanishes.

$ director brief

The log collapses deterministically into the machine digest, the human brief, and the fleet cockpit. Every session and the human read the same picture, byte-identical, verifiable.

SessionStart hook

Every new session starts from the injected CHARTER + digest: ground truth pushed at session start, not recalled by similarity. A cold re-entry starts from your parked handoff.

across harnesses

One ledger, four harnesses. Zero copy-paste.

the standing review panel

Build in Claude Code with Codex, OpenCode, and Copilot CLI reviewing the same repo. Every harness opens on the same injected ground truth, and a review verdict lands back in the log for the next session to pick up.

the limit wall

Hit a usage limit mid-task? Open another harness on the same repo: it starts from the same digest. The wall costs you the tool, not the thread.

neutral ground

The state of the work lives in a plain NDJSON log on your machine, not in any vendor’s session format. Different vendors, different models, one state of the work.

$ director install --all

Same boundary commands, same ground-truth injection at the top of every session, on all four. Wire one agent or all of them; they read and write the same log, live.

where it fits

Keep your tools. This is a different layer.

vs orchestrators
Nothing here spawns, routes, or commands agents; Director refuses that job on principle. The name names your seat, not the tool’s: your agents keep the ledger, and you direct the work.
vs compaction
Compaction compresses the transcript at an arbitrary moment and hopes the right things survive: a rot vector, not a cure. Director records the work itself: typed facts, written when they happen, that outlive the session.
vs memory tools
They answer what does the agent know; Director answers what is the state of the work. Facts accumulate; loops open and close. Run both: they don’t overlap.
vs issue trackers
The tracker holds the work items. Director holds the narrative between tasks: the decision that reframed the task, the loop deferred while doing it, the handoff parked when the block ended.
vs a markdown file
Append-only integrity under concurrent writers, byte-identical verifiable views, lifecycle semantics, push-injection. Willpower is not a file format.