chronicle Get in touch

Your day,
written down.

A small window in the corner of your screen that knows what you worked on, for how long, and why. Nothing leaves your machine.

  • no account
  • no server
  • no telemetry
  • no screenshots
  • no keylogging
  • no cloud model by default
Chronicle home, dragged wide: the tasks being worked on with time today and next step on the left, the feed of the day's blocks on the right
Q3 launch brief08:12–09:05 · 53mmodel · 0.90 Slack · #launch-planning09:05–09:20 · 15mloose · not filed yet LAUNCH-241 landing page copy09:20–09:55 · 35mrule: title has LAUNCH-241 · 0.50 · to confirm Launch sync10:00–10:32 · 32m · on a callmodel · 0.85 LAUNCH-241 landing page copy10:32–11:40 · 1h08mmodel · 0.90 Chrome · Gmail11:40–11:55 · 15mloose · not filed yet Q3 launch brief12:45–13:50 · 1h05mmodel · 0.90 LAUNCH-241 landing page copy13:50–14:05 · 15mrule: you filed this window before · 0.50 · to confirm LAUNCH-241 landing page copy14:05–14:55 · 50mmodel · 0.90 Design review15:00–15:20 · 20m · on a callmodel · 0.80 Q3 launch brief15:20–16:30 · 1h10myou kept it · never re-placed LAUNCH-241 landing page copy16:35–17:25 · 50mmodel · 0.80 Terminal · ~/dev17:25–17:40 · 15mloose · not filed yet
  • LAUNCH-241 landing page copy
  • Q3 launch brief
  • calls
  • loose time

7h38m focused · 45m loose · 40m away · 12 switches. One Thursday, sorted while it was still happening. Hover a block.

The day, as it happened.

Every stretch of focus lands in the feed the moment it ends, with the task it belongs to and the reason. Drag the window out and the day runs in lanes, with any task open beside it.

Chronicle timeline, wide: one lane per task across the day, a card per task underneath, and one task open on the right with its sessions, where the time went and the activity that touched it
timeline · lanesone task open

The week, added up.

Deep work, longest block, switches, the hour that fragments, and how it compares with last week. Every task grouped by project with its share of the hours. Nothing to fill in.

Chronicle weekly report, wide: per-day stacked bars, a project mix bar, a project legend with a bar, duration and share per row, six focus tiles including 17h55m of deep work and 87 switches, and tasks grouped by project
reports · this week31 aug – 6 sep

How it works

One morning, from the first window to the standup line. Same data at every step.

  1. Sees

    Which window is in front, and when you step away. App name and title; no keystrokes, no screenshots, no clipboard.

    Calls, calendar, ticket keys, the folder a terminal is in: noted beside each stretch. Five minutes away closes the batch.

    focus events · one batch
    09:02:14  focus    Chrome   Q3 launch brief – Google Docs
    09:31:40  focus    Slack    #launch-planning
    09:40:00  meeting  Launch sync · calendar · 09:40–10:15
    09:40:11  call     microphone on
    10:12:22  focus    Chrome   LAUNCH-241 Landing page copy – Jira
              anchor   item LAUNCH-241
    10:40:10  focus    Figma    Landing page v2
    11:20:00  away     5m · batch closed · 5 spans
  2. Places

    Every minute, plain rules: a ticket key in a branch or a tab, the project folder, a window you filed before. Provisional, marked to confirm.

    When the batch closes, the local model reads a short digest and places the rest. Eight blocks at most, about two minutes on a laptop CPU.

    rules, then the model
    rules   10:12–10:40  LAUNCH-241 landing page copy
            title has LAUNCH-241 · 0.50 · to confirm
    
    model   09:02–09:31  Q3 launch brief               0.90
            09:31–10:12  launch sync · Q3 launch       0.85
            10:12–11:15  LAUNCH-241 landing page copy  0.90
    
    stored  3 blocks · replaces 1 provisional row
  3. Learns

    It will be wrong sometimes. Rename, move or throw out a block; the correction is kept with the window it was made in and read first next time. Thrown out is a hard no.

    Loose time folds into runs you file in one go, task pre-filled. Once a day, slivers tidy into their neighbours; one undo.

    organize · unassigned time
    Chronicle organize view: the day's unassigned time folded into one 26-minute run with a suggested task pre-filled, and an assign button
  4. Writes

    Standup, timeline, task cards, reports, chat. One table; nothing worked out twice, nothing stored anywhere else.

    same rows, four ways
    standup   Yesterday: landing page copy and the launch brief
              (LAUNCH-241, 2h13m) · launch sync (32m)
    timeline  09:02 ──────────────── 11:15  Q3 launch
    report    Q3 launch · LAUNCH-241 · 2.2 h
    chat      "what did I do before the launch sync?" → same rows
  5. Shows its work

    Settings keeps the pipeline in view: the model loaded, the worker, batches waiting, the last batch with its tokens. Two buttons: the digest the model read, the answer it gave.

    settings › derivation
    Chronicle settings, derivation: batch every 30 minutes, derive after 300 seconds idle, a placement switch for the evidence-scoring segmenter, background under 10 minutes; then the pipeline card with the model file, worker idle, 1 pending batch, the last derive as batch 89 at 13:54 in 76.9 seconds with its prompt and output token counts, and buttons to show the digest and the last output
  6. Your own key, if you want

    Local until you paste an API key. Then pick what goes out: writing and chat, or everything. Two dollars a day, then local. The key sits in one file only you can read.

    Storage & server keeps one line that says what left the machine today. With no key it ends in “nothing else”.

    settings › model
    Chronicle settings, model: the local model path, then cloud backends with one row, anthropic, claude-sonnet-5, tested in 1180 ms, a note that prompts routed there go to Anthropic under its commercial API terms, and the routing grid with chat, narrative, standup, journal, task description, checkpoint, suggest task and name new tasks set to anthropic, tidy day and derive batches set to local