Append-only events
Activity is written once, in order, and never rewritten. A correction is a new entry that says what changed and when. The original stays where it was, so the record carries its own history instead of hiding it.
Carry on as you normally would and ti-me records the day as it happens, so Friday is ten minutes of checking rather than an hour of guessing. What you sign off stays exactly as you signed it, and stays on your own machine.
Every day
Today Verify 1Every week
TimesheetOther
Projects SettingsNothing leaves this deviceNo account, no server, no sync.
Thursday 17 September
Today
ti-me is recording. There is nothing to do until you finish.
So far today
Who it is for
One person, one machine, one record. ti-me is built for the contractor or consultant who bills their own hours and who can be asked, later and by somebody else, to show how a number was arrived at.
Privacy and local data
Time, privately understood.
Your day is captured on your machine and stays there, in a single file you can open, copy or delete. There is no account, no server and no sync, so there is no vendor to be breached and nothing anyone can request from one. When a client's procurement form asks where your activity data is processed, the answer is one sentence long.
It is enforced by the schema rather than by a promise. Every event is parsed against a strict contract before it is stored, and a payload carrying a field the contract does not have fails to parse and is rejected. These are not settings that can be relaxed quietly later:
Auditability
Time tracking usually treats your history as a working document. Any entry can be changed later, quietly, and the changed version is the only one that survives. That is fine while you are the only person reading it, and useless the moment somebody else is.
ti-me is built the other way round, as a ledger. Four decisions carry it, and none of them is a setting you can switch off.
Activity is written once, in order, and never rewritten. A correction is a new entry that says what changed and when. The original stays where it was, so the record carries its own history instead of hiding it.
Signing off a day stores it as a revision. Reopening the day creates the next one. Nothing is overwritten, so you can always say which revision a number came from and what it looked like before.
Accepting a week records the acceptance, not the totals. Every figure is recomputed from the events underneath it, so a signed week cannot quietly drift away from what you signed.
The rounding policy is written into the exported file, so the arithmetic travels with the numbers. If the week has a hole in it, the export stops rather than handing you a total you would have to explain later.
| Time | Event | Detail |
|---|---|---|
| Thu 08:58 | app_focus_changed | Figma |
| Thu 10:46 | manual_entry_recorded | Northgate call · 40m |
| Thu 17:30 | tracking_paused | day_verified · revision 1 |
| Fri 08:58 | tracking_resumed | day_reopened · revision 2 |
| Fri 09:01 | manual_entry_revoked | withdraws the 10:46 entry |
| Fri 09:02 | manual_entry_recorded | Northgate call · 55m |
One correction, nothing removed. The 40 minute claim is still in the record, and so is the moment it was withdrawn and why the day now reads 55.
Suggestions
ti-me proposes a project for a block of time using evidence you can read: a rule you wrote, a window title that matched, the way you assigned similar time before. It shows the arithmetic behind the guess rather than a confidence badge.
A suggestion can never become an assignment on its own, however sure it is. Nothing reaches a timesheet that you did not put there, which means there is no part of your invoice that was written by software you would have to defend on its behalf.
Status
The daily loop is built and in daily use. A short round of testing with a handful of people comes next, then the release. It will be available soon.
It will be sold once, for a fixed price, with no subscription. What that will cost and why.