The record
Foreground app, window title, idle, and lock events, read through the macOS Accessibility API and written to local SQLite. Nothing to start. Nothing to tag.
AttentionLab records where your attention actually goes all day — every app, site, and idle stretch — in a local database that never leaves your Mac. No account, no cloud, no tracking.
More than a chart of your hours: an interaction layer for your agent. A local MCP server hands the agent you already use — Claude Code, Codex, or your own API key — the aggregate metrics and context of your real day, for focus sessions, app-blocking, and a score that learns what deep work means for you.
A YouTube tutorial on color grading is real work when you're deep in a video edit — and a rabbit hole when you're not. Same site, opposite meaning. A fixed rule that scores every minute the same way is wrong before it starts. AttentionLab ships no verdict: group your apps and sites into your kinds of work, connect your own agent, and it learns your patterns — what's real work for you, what a context-switch costs, when your focus actually holds. The reading is yours, not the average's.
Foreground app, window title, idle, and lock events, read through the macOS Accessibility API and written to local SQLite. Nothing to start. Nothing to tag.
Connect an agent and it reads the whole record to learn the shape of your work — which apps are deep work, which are noise. Context fitted to you, not a template.
Ask where the day went and get a measured answer — aggregate metrics in plain language: time in focus, number of switches, this week against your own baseline.
Use an agent you already have — Claude Code or Codex, connected over the app's local MCP server — or paste your own API key. Nothing leaves your Mac except through the agent or account you bring. No middleman, no markup.
A declared session, enforced — apps hidden through NSWorkspace, sites blocked through a declarativeNetRequest extension. For as long as you set.
Days roll up into weeks. The calendar of your attention surfaces the patterns you can't feel in the moment — drift, streaks, the slow shape of a quarter.
Example day. Attention sampled as a signal — drawn against your focus threshold, the sage held area above it, and your typical 7-day band. The filament dot is now.
07:00 → now · focus depth 0–100 · threshold 60 · sampled on-device
The macOS app does the tracking; the browser extension gives it the tab context. Both run entirely on your machine. Then, if you want the agent layer, pairing over MCP takes a single command.
.dmg and drag AttentionLab into Applications.attentionlab-extension.zip.chrome://extensions and turn on Developer mode (top-right).claude mcp add command pointed at the local endpoint; Claude Desktop and Codex snippets are shown too.Local servers bind to 127.0.0.1 with bearer-token auth. No outbound connection unless you turn one on, explicitly.
Argon2id credentials, strict CSP, parameterized SQL, plus CSRF and DNS-rebinding defenses on every local server.
No keystrokes, screenshots, clipboard, page contents, or private-tab activity. Ever.