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: a reading of your focus, tuned to you. Connect an agent you already use — Claude Code, Codex, or your own API key — 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 work into benches and 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.
Tracking your time is the always-on floor. This part is opt-in: a small vocabulary you set once, plus an agent you connect — Claude Code, Codex, or your own API key — that reads the live record and works with all three.
Group the apps and sites that belong to one task. Hopping between them isn't a distraction — AttentionLab knows the difference between working a problem and wandering off.
Commit to how you want to work — "under 20 min on social every 2 hours," "90 minutes of deep work before noon." AttentionLab measures it against your real activity and tells you, honestly, whether you held it or drifted.
Connect an agent you already use — Claude Code or Codex over a local MCP link — or paste your own API key. Either way it reads the record and runs your benches and rules: opening focus sessions, holding focus. Nothing leaves your Mac unless you turn it on.
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. Fitted to you, not a template.
Ask where the day went and get a measured answer: time in focus, number of switches, this week against your own baseline.
Use an agent you already have — Claude Code or Codex over a local MCP link — 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.
.dmg and drag AttentionLab into Applications.attentionlab-extension.zip.chrome://extensions and turn on Developer mode (top-right).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.