Files
antidrift/README.md
T
2026-05-31 17:23:31 -04:00

1.7 KiB

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).