Should I vibe code
Measure opt-in application time, classify it, and run focused sessions locally
A window-title log is the most revealing file on your machine. The good news is that yours never has to leave it.
?
Their verdict, the Focus (Solo) price and the build-time estimate come from their entry, MIT-licensed. Checked 2026-08-04.
?
Our verdict, the regret score and everything below it. Editorial and unsponsored — nobody can pay to be moved.
The honest answer
why the verdict is what it is
A timer, the frontmost window title, and a row in SQLite. That really is one sitting, and the homemade version wins on the thing that matters most here: the log never leaves the machine that made it. Which is worth dwelling on, because a minute-by-minute record of every window you have had open is the most revealing file you will ever generate about yourself. It contains client names in document titles, the subject lines of the mail you were reading, who you were messaging, and the page titles of everything you deliberately kept out of your browser history. RescueTime uploads that somewhere to make dashboards out of it. Yours does not have to, and a local SQLite file plus a weekly query is genuinely competitive with the product. Ship it — for one person, on one machine, with the file staying where it was written. The only line worth drawing is the one at the edge of your own laptop: the same code pointed at somebody else's machine stops being a productivity tool and becomes workplace surveillance, with consent and notice obligations attached that "I wrote it myself" does not answer.
What actually breaks
not "if". the specific failures.
- Permissions. Reading window titles needs Accessibility on macOS, and an OS update can revoke it silently — you find out when you notice a fortnight of empty days
- Classification, which has no correct answer. "Is Slack work?" depends on the message, and a hand-written rules list rots faster than you will maintain it
- Idle detection, which is the difference between three hours of deep focus and three hours of a locked screen with a document open behind it
- Sleep, wake, fast user switching, external monitors and virtual desktops — every one of them a small state machine your first version does not have
- The browser, where the window title is the whole story and the same application covers a tax return, a code review and forty minutes of nonsense
- Cross-platform ambitions, since the window-title API is different and differently privileged on macOS, Windows and each Linux compositor — Wayland in particular will not simply hand it over
- The log itself, which is unencrypted in your home directory and will end up inside whatever cloud folder you sync without thinking about it
Is that you?
the verdict is a default, not a law
- It is your machine, your data, and the database never leaves the disk it was written on
- You want honest numbers about your own week rather than a dashboard to show anybody
- You are happy to classify by hand at first, because your own rules will beat a generic category list within a fortnight
- It runs on anybody else's computer. A window-title logger deployed to staff is employee monitoring, and notice, lawful basis and in several countries a works-council agreement come with it before the first row is written
- The log is going to a server, at which point you have built the one part of RescueTime that made privacy people uneasy in the first place
- You would keep raw titles forever with no retention policy, in a file that syncs to a cloud drive by default
- The numbers are going to be used to bill somebody, because attention tracking and billable-hours tracking are different products with different tolerance for being slightly wrong
If you build it anyway
the checklist, then the prompt that enforces it
- Keep the database local and out of any synced folder, and if the machine supports full-disk encryption, make sure it is on before you start collecting.
- Set a retention policy in the first hour: raw window titles for thirty days, aggregates forever. The aggregates are what you actually look at.
- Add a pause button and a private mode that is genuinely a no-op, and make it obvious when collection is running.
- Redact at write time rather than at read time — strip anything matching a pattern you care about before it ever reaches disk.
- Detect idle properly using the OS's own idle timer, and record it as a distinct state instead of silently attributing the gap to whatever was on screen.
- Do the classification as a rules file you can edit and version, not a table in the database, so retraining your categories is a diff.
- If you ever add sync, sync the aggregates and never the raw titles.
I am building a personal automatic time tracker: sample the frontmost window,
classify it, and show me where my week went. Low risk, high sensitivity — treat
the log as the crown jewels and build in this order.
1. Decide storage and retention before collection. Local SQLite, outside any
cloud-synced directory, with raw window titles expiring after N days and
aggregates persisting. Ship the expiry job in the same commit as the writer.
2. Build redaction at write time, not read time: a user-editable list of
patterns dropped or hashed before anything touches disk.
3. Then the sampler. Poll the frontmost app and window title on a sensible
interval, and use the OS idle timer to record idle as an explicit state
rather than attributing it to whatever was on screen.
4. Handle sleep, wake, screen lock and user switching explicitly. A gap is a
fact to record, not a hole to interpolate.
5. Add a visible indicator that collection is on, a pause control, and a
private mode that genuinely records nothing.
6. Classification lives in a plain rules file I keep in version control, never
a table only the app can change. Unmatched entries surface for me to
classify instead of silently landing in "other".
7. Export before dashboards: CSV and JSON of raw and aggregated data, plus one
command that deletes everything.
8. No network calls at all — no telemetry, no crash reporting, no sync. If I
later ask for sync, sync aggregates only and tell me exactly what a raw
title would have revealed.
9. If I ask to install this on anyone else's machine, stop. Tell me it is
employee monitoring, that it needs notice and a lawful basis and in much of
Europe a works-council agreement, and that writing it myself changes none of
that.
10. Out of scope, and say so: billable-hours tracking, screenshots, keystroke
capture, team dashboards.That one keeps you out of trouble. For the prompt that actually builds it, canivibecodeit.com has one.
their build prompt ↗Or don’t build it
the boring option, and the way back out
If you want the coaching rather than the measurement — nudges, blocking, weekly summaries someone else designed, and history that follows you across a laptop replacement — nine dollars a month is a fair price for not maintaining a sampler on three operating systems. But it is the one category where the homemade version is meaningfully better rather than merely cheaper, because the whole argument against these tools is where the data goes, and yours goes nowhere.
It is a SQLite file on your own disk. Export the aggregates as CSV if you want to keep the history, then delete the file — and note that deleting it is a feature rather than a loss, because a two-year keystroke-adjacent log of your working life is a liability you get to choose not to carry.
Open-source, local-first automatic time tracker with watchers for window titles, browsers and editors, and no server involved.
Mature open-source time-tracking application with projects, reports, and exports — the answer when you want billable hours rather than attention data.
Questions
Is a window-title log really that sensitive?
Read one back after a week and decide for yourself. Titles routinely contain client names, document filenames, the subject line of the email in the foreground, the name of the person in the chat window and the title of every page you visited. It is not keystroke capture, but it is close enough that the storage decision deserves more thought than the dashboard does.
Why is this SHIP IT when the data is that sensitive?
Because sensitivity is only one of six dimensions, and the other five are close to zero: one user, one machine, no money, no stranger's data, nothing published, and deleting the file undoes everything. Sensitive data you never transmit is a very different risk from sensitive data you host.
Could I run this for my team?
You could, and you should not, at least not casually. The moment it lands on somebody else's machine it is workplace monitoring: it needs notice, a lawful basis, proportionality, and in much of Europe a works-council agreement before collection begins. Buying a product does not remove those duties, but it does mean the duty is documented and somebody has thought about it.
- GDPR Art. 5 — principles relating to processing of personal data (EU)
- GDPR Art. 6 — lawfulness of processing (EU)
Every week, someone ships something they shouldn’t have.
New verdicts, the worst thing that landed in the trap, and the occasional incident report. No other email, ever.
A timer and a table. If you bill from it, treat the table like an accounting record.
Solo it's a timer. With approvals it's the record your client disputes and your team gets paid from.
Nobody disputes your timer. They dispute the invoice it generated, eleven months later, in writing.
last reviewed 2026-08-04 · verdict is editorial and unsponsored · shared entry data from canivibecodeit under MIT · not legal advice