- README: lead with Keel (the human-harness), frame AntiDrift as the focus mode, keep the milestone history. Fix the "rename deferred" wording (the dir/repo is already keel; only the code identity stays antidrift) and drop the dangling 2026-05-31 spec reference (that spec was intentionally removed). - keel-architecture.md: update the rename status in the header and §8 — the directory is keel; the Go module / antidriftd binary / ANTIDRIFT_* env / ~/.antidrift -> ~/.keel migration land with the controller refactor. - add AGENTS.md (agent orientation) + CLAUDE.md symlink so claude / codex / Hermes auto-load Keel context when launched in this repo. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.2 KiB
Keel — Agent Context
You are working in Keel, Felix's human-harness. Read this, then treat
docs/keel-architecture.md as the source of truth for anything architectural.
What this is
The inversion of an agent harness: instead of a harness watching a model work, a model (the brain) helps observe and steer a human. Felix is the observed subject; the brain is the operator. The thing we build is the harness — the framework that collects Felix's real state, hands it to a swappable brain, and acts on the reply.
- Brain — swappable, rented compute:
claude/codex/ Hermes (real, on another machine). Not the point; interchangeable behind one interface. - Storage — ActivityWatch buckets (
keel.state,keel.events). No new DB / event store. Buckets hold pointers, not copies. - Frame —
~/owc(values, goals,resources/bug-*.mdlife-bugs). Reference, never duplicate. - Surfaces — a phone-friendly web UI + the WM status bar (
~/.antidrift_status). - Effectors — gated writes (Marvin tasks, capture, AntiDrift enforce; later
Beeminder datapoints,
~/owcnotes). Start propose-and-confirm; trend toward autonomy. The gate is per-effector config — Felix's agency-vs-cage dial.
What runs today
AntiDrift, Keel's first mode: a Go focus daemon (ports-and-adapters) —
evidence.Source (perception) · tasks.Provider (Marvin) · knowledge.Source
(the ~/owc-derived profile) · ai.Backend (the brain) · enforce.Guard
(window-minimize). The cockpit work is loosening its session controller into a
general collect → brain → act loop where a focus-session is one mode among many.
go run ./cmd/antidriftd # local web UI at http://localhost:7777
go test ./...
Naming / rename status
The directory and git repo are keel. The code identity is intentionally
still antidrift — Go module antidrift, antidriftd binary, ~/.antidrift/
runtime, ANTIDRIFT_* env. The code rename lands later, with a state migration
(~/.antidrift/ owns the live ledger), during the controller refactor. Don't
mv ~/.antidrift or rename the module casually.
How to work here
- Reuse before building. Read the code before claiming something is missing. AntiDrift already is the harness skeleton; widen it, don't rebuild.
- Reference, don't duplicate.
~/owcand each tool's store stay source of truth; Keel never becomes a hidden second source. - Ship visible proof. Every session ends with a real artifact — reframing and planning are not progress. Felix's named failure mode is tooling-as-avoidance; resist it.
- Concise coaching. The status line is one signal / one action / one question. Not "nice summaries" — that was explicitly rejected.
- Local-first; mind secrets. The operator runs as the full Unix user with no sandbox; window titles and on-disk keys can leak. Filter at the assembler.
Pointers
docs/keel-architecture.md— authoritative architecture (components, data flow, AW-as-storage, the open questions in §8).docs/superpowers/— AntiDrift focus-mode feature specs/plans (historical).README.md— project front door.