Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
AntiDrift
A personal focus operating system: treat each work session as an explicit commitment (next action, success condition, timebox), and make drift visible.
This is the Go reimagining. The original Rust implementation is preserved under
legacy/ for reference. See docs/superpowers/specs/ for the design.
Run
go run ./cmd/antidriftd
The daemon serves a local web UI at http://localhost:7777 and opens your
browser. State is persisted to ~/.antidrift/state.json.
Test
go test ./...
Status
M3 (drift interceptor): while a commitment is Active, the daemon watches the focused window. A cheap local match against the session's allowed window classes is authoritative for on-task; only unmatched windows are sent to the LLM drift judge (debounced and cached per class, run asynchronously). When it judges you off-task, the active view shows a dismissible interrupt: "Back to task", "This is on task" (which adds the app to the session's allowed list), or "End session". The drift judge degrades gracefully — without it, local matching still runs.
M2 (AI planning coach): in the Planning view, a rough intent is "sharpened"
into a structured commitment (next action, success condition, timebox) by an
LLM CLI backend (claude or codex, selectable via ANTIDRIFT_AI_BACKEND). The
coach runs asynchronously and degrades gracefully — manual planning always
works.
M1 (evidence & audit): active-window tracking, two-tier evidence store
(disposable per-session raw log + permanent hash-chained session summaries),
and live SSE updates. Live drift judgment and the ambient nudge arrive in later
milestones (see the roadmap in
docs/superpowers/specs/2026-05-31-go-focus-os-design.md).