The Calliday Guide

Everything the app can do, in one place. Calliday is an automatic time tracker for macOS: install it once, and it quietly turns your day into a timeline you can read, question, and learn from — with every byte staying on your Mac.


01Getting started

Install

  1. Download the app from calliday.app/download and drag Calliday into Applications.
  2. Open it. Onboarding walks you through the handful of permissions tracking needs (below) and starts the background tracker.
  3. That's the last mandatory step. From here on, tracking is automatic — there is nothing to start, stop, or remember.

A fresh install starts with a small set of starter projects so the first day has somewhere to sort itself — rename or delete them freely, they're yours. And when you want the app to explain itself, the ? button in the title bar holds a short replayable tour for every screen: each one spotlights the real controls in your own window, with your own data, and the one for the screen you're looking at is always on top. Nothing a tour does changes your data — except the one marked hands-on, A Desktop per Project, which gives one of your desktops to a project with you as you go, and ends on how to hand it back.

Permissions, and why each one exists

PermissionWhat it unlocks
AccessibilityWindow titles and the document you're working on. Without it, Calliday still tracks which app is front-most — just with less detail.
Automation (per browser)The active tab's address and title in Safari, Chrome, Arc, and friends — so browsing can be sorted by site, not lumped under "browser". macOS asks once per browser.
CalendarsMeeting logging (optional — only if you turn the calendar integration on).
RemindersNaming work after reminders you tick off (optional — only if you turn the reminders integration on). Only completed reminders are read, never your open list.
Full Disk AccessOnly used to read macOS's own Screen Time history when you ask for a backfill. Never required for day-to-day tracking.

Settings → Permissions shows the live state of every permission and takes you to the right System Settings pane when one is missing.

Trial and license

Every Mac gets one free 7-day Pro trial — one click in the license gate, no account, no card. Buying a license happens on this site; your key arrives by email as a one-click calliday://activate link and is issued for the Mac you buy it on. See Licensing & updates for what a licence covers, and for more than one Mac.

02How tracking works

A small background tracker records the front-most app, its window title, the browser tab's site, and the document path — second by second, coalesced into tidy spans. You never press start.

  • Idle — after 2 minutes without input (adjustable in Settings → General) the clock stops. Come back and it resumes; a long absence gets one question about what it was (below).
  • Lock screen, sleep, fast user switching — never counted. Time you weren't at the Mac shows as an honest gap.
  • Flicker suppression — bouncing through an app for a second on your way somewhere else doesn't leave a trail of one-second spans.
  • Desktops (Spaces) — spans remember which desktop they happened on, so "Desktop 2 in the afternoon" is answerable. A whole desktop can also be pointed at a project — see Projects & rules.

Coming back from a long absence

Step away for more than 15 minutes — adjustable, and switchable off, under Settings → General → Away time — and Calliday asks once, when you get back, what that time was, so the day still adds up. The asking tries to be short.

  • If the calendar explains it, that is the whole question. A meeting that ran while you were gone is offered as a yes/no — “You were away 47m. ‘Design review’ was on your calendar 13:00–13:47. Were you away for that?” Yes logs that stretch against the meeting and marks the meeting logged, so nothing asks about it twice. Only the longest stretch the meeting doesn't explain goes on to the list below, and if it explains all of it there is no second question. (Needs the calendar integration switched on; without it you go straight to the list.)
  • The list is ordered by what you actually pick. Meetings, the labels you have typed before, and your projects, with the ones you choose most often at the top and ties going to the most recent. A first run shows the plain list, since there is nothing to learn from yet.
  • One option comes preselected: what this hour of the day usually turns out to be. If noon has been lunch three times, noon is lunch again and Return alone is the whole answer. Past picks count for less the further their clock time sits from now, and stop counting an hour and a half out — the walk you take at four says nothing about eleven in the morning. When nothing in your history speaks to that hour, the option you pick most often is selected instead.

Everything answered this way lands in Time entries as Away time (or as a meeting, when that is what it was), and a label you type is remembered for next time. Don't log it is always the last option, and dismissing the prompt records nothing.

The menu bar companion

A glanceable satellite that runs even when the main window is closed. Next to the icon it shows today's tracked total — or, if you'd rather watch something else, one project's time today, today's productivity score, or nothing at all (Settings ▸ General ▸ Menu bar), plus a 🍅 countdown while a tomato is running.

The icon itself is colored with the day as well. A duration moves the sun across the sky — rising in the west, setting in the east, lit only where it has already been, so a whole sun is a whole day recorded. A full day is eight hours unless you say otherwise (Settings ▸ General ▸ Menu bar), or the goal on that project if it has one; a sun that turns red is a budget you've gone past. Productivity fills the arc above it like a car's efficiency gauge — low and red when the time is going badly, half at neutral, full and green for deep work. Out of the box the icon carries both at once — how much of the day you've recorded in the sun, how the last 30 minutes are going in the arc — with the number still beside it. You can drop the number and keep the color, drop the color and keep the number, hand both halves of the icon to the one measurement you picked, or read productivity over the whole day instead of the last half hour. Its menu offers: every desktop you've given to a project, at the top, one click from switching there (the one you're on is ticked), what's being tracked right now, today's breakdown by project and app, goal progress, starting a timer or a tomato, and a one-click jump to today's report. It also quietly restarts the tracker if it ever finds it stopped, and checks for updates when the main app isn't running.

03The timeline

The Timeline reads your day back as horizontal lanes — one for apps, one for projects, one for manual entries, one for calendar meetings, and a thin 🍅 lane marking your focus runs and the exact moments tomatoes ripened.

  • Zoom — pinch (or scroll-zoom) anywhere; the moment under your cursor stays put while the day stretches from a 30-minute overview to five-minute detail.
  • Inspect — click any block for its full story: exact times, titles, documents, and quick actions like reassigning its project, bookmarking the document, or revealing the file it belongs to.
  • Open the real thing — the arrow on a row in the activity list takes you back to where the time went, not just to the app: the page in your browser, the file in its editor, the note in Obsidian, Apple Notes or Bear, the email in Mail, Gmail, Outlook or Spark, the Messages or WhatsApp conversation, the news story, the PDF in PDF Expert, the book in Books or Kindle, the entry in Apple Journal, the conversation in ChatGPT. Where an app publishes no link to its own contents, Calliday finds the item the way you would — through the app's own search or library — so the arrow still lands on the thing itself.
  • Search the day, then all of it⌘F filters the day's activities by title, site or file as you type; press Return and Calliday offers to run the same search over everything you have ever recorded, not just the visible period.
  • Fill a gap — untracked stretches (a walk, a whiteboard session) show a quiet "+" — click to log what happened. Calliday even proposes entries for gaps that look like something (right after a calendar meeting, say).
  • Drag to create — select any stretch of the timeline to turn it into a manual entry.
  • Underlined means Calliday chose it — a thin line under part of the project lane marks time no rule covered, sorted by what surrounded it. Click it to keep or undo that choice; see Time no rule covers.
  • Dead time is squeezed — a long stretch with nothing in it collapses to a narrow dashed seam marked with how much was skipped, so the day spends its width on the parts that carry something. A stretch you have accounted for — a night's sleep, a flight, a day off — squeezes too, but keeps its name and duration on it: it is one fact, not eight hours of detail. The ⇥⇤ button in the timeline header turns the squeezing off when you want the day strictly to scale.

Everything you write down here — dragged blocks, filled gaps, logged meetings — is collected in Time entries, where it can be searched and edited in bulk.

04Time entries

Most of your day is tracked for you. An entry is the other kind of time — the time you accounted for by hand. The Entries section is where all of it lives: one searchable, filterable, bulk-editable list of every hand-made record, instead of hunting for them block by block on the timeline.

The five kinds

KindWhere it came from
TimerYou started and stopped a timer.
LoggedYou wrote it down after the fact — a dragged stretch of timeline, a filled gap, a new entry.
MeetingLogged from a calendar meeting.
FinishedTracked work you named by ticking off a reminder.
Away timeRecovered after the Mac was idle.

An entry is not a project. An entry is a record of time, with its own start and end. A project is the category time gets filed under. An entry may name a project the way a receipt names an expense category — which is why each row leads with how the time was recorded and shows its project as a small chip it points at. On the timeline, projects are the solid blocks and entries are the pale tickets below them. The ? button in the Entries header says all this in the app, whenever you need it.

Finding things

  • Period — the same ranges as the rest of the app, and the arrows page by the period's own length: on "Last 30 days" you step a month at a time, not a day.
  • Search — matches an entry's name, its note, or its project name, as you type; every word you add narrows it. (The journal has a search of its own with quoted phrases and patterns — entries are short labels rather than prose, so this box stays a plain one.) ⌘F puts the cursor straight in the box, here and on any other screen with one (the box shows the shortcut until you use it).
  • Kind chips — narrow to timers, logged blocks, meetings, or away time; combine as many as you like.
  • Project scope — picking a project in the sidebar scopes the list too, and shows as a chip you can dismiss right here, so a short list is never a mystery.
  • The header keeps a running count and total for whatever is currently listed; each day gets its own heading and day total. A timer still running shows a RUNNING badge and counts up to now.

Changing things

  • Select the way you'd expect — click, ⌘-click for scattered rows, shift-click for a range.
  • Bulk bar — the moment anything is selected, a bar floats up with the count and the total time selected, and offers Assign to Project… (including "No project", which is how you undo a wrong assignment) and Delete. Deleting asks first, and only removes the hand-made record — the automatically tracked activity underneath is untouched.
  • Edit one — double-click a row (or its pencil) to change the name, project, start, end, or note, with an explicit Save and Cancel.
  • Show in Timeline — right-click an entry to jump to its day with that stretch highlighted, when you want to see what else was happening around it.

Everything you change here flows straight through to the timeline, today's totals, reports, and goal progress — entries are real tracked time, not annotations on top of it.

How much of the day you wrote down

The charts on the Overview are made of tracked activity, which means entries do not appear in them at all. Its headline says so — it reads Tracked time, and names the hours you logged by hand underneath it rather than leaving them to be discovered further down. The Time entries card is that missing half, for whatever range, search and project scope the screen is currently showing.

  • What they add up to — the total you logged by hand and what share of all the accounted-for time that is, how many entries, their average and longest, and how much of that time carries a project at all. Entry time under no project is time you accounted for but never attributed, so it gets its own line rather than hiding in a total. If the same words keep turning up on unfiled entries, a rule can file them for you from their text.
  • Where they go — a row per project the entries were filed under, with the time and the count, and a bar for the share of that project's time that was written down rather than observed. A project at 100% exists only because you wrote it down — family time, a flight, a workshop. A project at 10% is one the tracker sees for itself and you only topped up. It is the number to look at before invoicing from a project.
  • How they were made — the same four kinds as above, counted and totalled, so "most of this week is recovered away time" is a thing you can notice.

Entries win overlaps. If an entry covers an hour you were also at the keyboard, that hour belongs to the entry — the same rule every total in the app counts by. So a project's entry time and its tracked time add up to its time in the range, and nothing is counted twice.

05Bookmarks

Projects answer "what was this time for?". A bookmark asks a narrower question: this one web page, document or file — when do I come back to it, and how much of me does it get? Bookmark the spec you keep reopening, the dashboard you check daily, the draft that took a month, and the Bookmarks section shows your entire relationship with it.

  • Bookmark from the timeline — click any block and press the bookmark mark in its popover, or right-click a row in the activity list (the By Document view is exactly the list of everything bookmarkable). Rows already on the shelf wear a small mark.
  • Documents only, on purpose — apps can't be bookmarked. An app is a place; a bookmark is a thing you work on. A page is one bookmark across browsers, and a window title is scoped to its app, so two apps' "Untitled" never blur together.
  • Every day you ever came back — select a bookmark and its whole visiting history is right there: a year of visits as a day grid (darker means more time that day — click a day to see it on the timeline) above a day-by-day list. A bookmark is a pointer, not a snapshot: history is matched from your tracked record live, so it reaches back to before the bookmark existed and keeps growing on its own.
  • A manageable shelf — search by name, address or note (⌘F); sort by last visited, most time, name, or when you added it; pin the few you live in and they stay on top. Double-click a bookmark to open the real thing.
  • Rename-proofing — matching is exact, so a renamed document or a moved file stops accruing visits. Edit fixes it: change the address and the history follows the new one. Give a bookmark your own name and a note while you're there.
  • Removing forgets only the pointer — the recorded time it pointed at is never touched, and bookmarking the same thing again brings its whole history straight back.

06The journal

The rest of Calliday knows you spent 4h12m in Xcode. It does not know what you were doing there. A journal is that missing half: one written record of what a day, week or month was actually about. The Journal section keeps every one you have ever written on the left and the open one on the right, the way a mail client does — because that is the shape of an archive you both browse and write in.

Writing one

  • Write opens today's journal, starting it if it is blank. The Day / Week / Month control beside it decides which period that means, and the calendar button writes about another date — journalling about yesterday over this morning's coffee is one click, not a filter exercise.
  • One journal per period. Pressing Write again returns to the same page instead of starting a second one beside it.
  • It saves itself as you type, and again the moment you switch journals or leave the screen. There is no Save button because there is nothing to forget to press.
  • Markdown, previewed — the eye button renders what you have written; the pencil takes you back to editing.
  • File it under a project from the chip under the title, and "this week on Acme" becomes findable by project as well as by date.

Or have it drafted

Draft writes the period up from your tracked time, in a tone you choose. Tone is two separate questions, because they are two separate things:

  • Format — one of narrative, bullets, or sections. A document cannot be both prose and a list.
  • Viewpoints — up to three of engineer, legal, reflective, critical, client report, and plain log. A period can be read from several angles at once, so each viewpoint you pick gets its own labelled section of the same write-up.
  • In your own words — an extra instruction ("keep it under 100 words", "mention the auth refactor"), offered back to you next time instead of asking you to retype it.

However many viewpoints you pick, it is one request, not one per viewpoint — comparing four tones must not cost four of your included AI calls. What gets sent is stated on the picker before you send it: this period's totals by project, app and site, plus the names and notes on your own time entries. Your journal text is never sent.

A journal always says who wrote it. A draft stays labelled a draft until the text actually changes — giving one a title is not writing it — and the original draft is kept, so "restore the original" is real rather than an apology. An assistant writing through MCP is a third writer with its own label, distinct from both you and Calliday's own drafting. And drafting over words you wrote always asks first, in the app, the terminal and over MCP alike.

Finding what you wrote

  • Search is full text over every journal, best match first, with the matching passage shown in the row. ⌘F puts the cursor in the box, and there are three ways to ask:
    Type thisTo find
    work codingjournals mentioning either word — a second word widens the net, and the journals matching both sort to the top.
    "deep work"that exact word or phrase. Unquoted, a search for meeting also finds meetings; quoting is how you say you meant the word you typed, and it won't match inside a longer one.
    /refactor(ing)?/a regular expression over the whole text, case-insensitive. A pattern that doesn't compile says so rather than quietly finding nothing.
  • Matches are highlighted in the journal itself, and finding one opens it in reading view so they can be. The moment you switch to editing, the highlighting steps aside — you edit exactly what is there, never a marked-up copy of it.
  • Filters narrow by period (day, week, month), by who wrote it, and by how far back to reach; picking a project in the sidebar scopes the list too. The list reaches all the way back by default, because an archive is browsed rather than monitored.

Letting it write itself

The clock button turns on automatic drafting of a finished day or week. It is off until you ask for it — a draft spends one of your included AI calls, and the app should never spend those on work you did not ask for. When it runs it leaves anything already written alone, never fires before 6am, and tells you when a write-up is waiting; clicking the notification opens it.

From the terminal, and from Claude

calliday journal write --title "Tuesday"   # text from stdin, or --text
calliday journal draft yesterday --format bullets --lens engineer
calliday journal draft --period week --dry-run  # see exactly what would be sent
calliday journal search "auth refactor"     # either word, best match first
calliday journal search '"deep work"'       # that exact phrase
calliday journal search '/refactor(ing)?/'  # a regular expression

Claude can read and write it too — see Ask Claude.

07The insight graph

Totals say where the time went. The Graph section says which paths it took: every app you used in a period is a dot, sized by its time, and a line between two means you kept switching between them. Your tools arrange themselves into constellations — and the lines that pull you out of them are painted by what the pull cost.

  • What a line's colors mean — each end is colored by what leaving that end meant. Dropping from productive work into something rated zero or below paints that end red — a distraction. Landing somewhere more productive paints it green — back to focus. So a red-into-green line is a round trip: the thing that steals you, and the way back. Muted red is a slide onto lesser-but-real work; dotted gray just means "used near each other". Thicker means more often.
  • Judged by your own ratings — the verdicts come from the productivity you gave each project, weighed switch by switch from the projects on either side at that moment, so the same browser can be green in the morning and red after lunch. Uncategorized time counts as zero.
  • Two levelsApps is the wide view. Documents redraws the same period with pages, files and sites as the dots — your busiest hundred — so you can see which documents actually travel together. As with bookmarks, a page is one dot across browsers.
  • A place, not a chart — hover a dot for its name and numbers, hover a line for both directions of its story, drag a dot to see what it's tied to, pinch or use the buttons to zoom. Click a dot and its card can land the timeline on exactly that thing, over the same period.
  • Pick the period — a single day is a close-up of one routine; a month shows the highways. Step with the chevrons and watch the shape re-settle.

08Projects & rules

Projects are the buckets your time lands in. Rules do the sorting: "the app is Figma → Design", "the site is github.com/client-a → Client A", "the window title contains 'invoice' → Admin". Write a rule once and every matching minute — past and future — sorts itself: changing rules recategorizes your history, not just what comes next.

  • First match wins, literally — rules match top to bottom, and their rank is simply their position in the list. Drag a rule up to give it priority; there's no number to reason about.
  • Rules earn their keep — every rule shows how much time it claimed in the last 30 days. A shadowed badge means an earlier rule always wins what it matches (drag it above the named winner to change that); quiet means it matched nothing. A built-in tester answers "which rule would win for this app/site/title?" — or for a given time entry.
  • Rules read what you wrote, too — most conditions describe what the tracker saw (the app, the site, the window title). Time entry text instead reads what you typed on a time entry: "entry text contains 'standup' → Meetings" files every standup you log without you picking a project each time. Since an entry wins its overlap with tracked time, filing the entry files that stretch of the day. It only ever touches entries you left unfiled, or ones it filed itself before — a project you chose by hand is never overwritten, and a rule that stops matching gives the entry back rather than leaving it somewhere nothing says any more.
  • A whole desktop can be a project — right-click a project in the sidebar and choose Desktops ▸ Assign Current Desktop Here: one rule, and everything that happens on that desktop (Space) files there, past and future. Everything a project does with desktops lives in that one Desktops menu, and the ? button's hands-on tour, A Desktop per Project, walks the whole of it through on your own Mac. The desktop takes the project's name as it is assigned — "Desktop 3" becomes "Client work 3", keeping macOS's own number on the end so you can still tell which desktop it is. A name you typed yourself is never overwritten, and Rename in the same menu changes it whenever you like; clearing it goes back to the numbered name. The name is Calliday's alone (Mission Control has no desktop names and keeps saying "Desktop N") and it sticks to the desktop itself rather than its position. Once assigned, the same menu offers Switch to that desktop — Calliday presses the Mission Control keys for you and lands on it, wherever it has drifted in the strip, so macOS may ask once for permission to do that. Detach gives the desktop back: the assignment's rule goes, the name it gave the desktop comes off (yours stays), and the time already recorded there keeps the project — it is frozen exactly as a time you filed by hand is, so nothing you tracked drifts to Unassigned. The desktop itself goes too, if it is empty: there is nothing left on it to lose. A desktop with windows open asks first, naming the apps — removing it moves their windows to another desktop, and nothing is ever closed — and you can keep the desktop and detach only. A desktop another project still routes to, the last desktop on a display, and a full-screen space are all left alone. Every assigned desktop is also listed at the top of the menu bar menu, one click from anywhere.
  • An empty desktop can set itself back up — switched off until you ask for it (Settings ▸ General ▸ Desktops). Turn it on and landing on a project desktop with nothing open on it brings its work back: the apps you spend the most time in there (five by default, ranked by time recorded on that desktop — a desktop assigned five minutes ago borrows its project's apps instead), then the last document, page or message recorded there, reopened through the same connectors the timeline's arrow uses, so it lands on top. Apps already running are left alone on purpose: opening one would pull you over to whichever desktop its windows are on. A desktop with anything open on it is never touched.
  • Merge offers — when several one-liner rules (say, three websites) all point at the same project, Calliday offers to fold them into a single rule with the same matches. You confirm; nothing merges by itself.
  • Pause, don't delete — every rule has an on/off switch. Pausing un-applies it from history too (rules are the source of truth; manual assignments are never touched), and turning it back on restores exactly the same state.
  • Productivity scores — each project carries a score from −1 (distracting) to +1 (deep work). They power the productivity metrics, the composition bar, and tomato detection. Mark at least one project as distracting to get the full picture.
  • Sub-projects, in your order — projects nest ("Client A ▸ Website"); drag one onto another in the project tree to nest it, and parent totals roll up. The sidebar list sorts by time by default, or keeps whatever order you drag it into — dragging a row switches to manual by itself.
  • Archiving — retire a finished project without losing an hour of its history; archived projects stop matching new time.
  • No limit on rules — write as many as you like on either plan.

Time no rule covers

You will never write a rule for everything, and you shouldn't have to. A quick search in the middle of an hour on a project is part of that hour's work — so Calliday reads what happened around each uncategorized stretch and sorts it the way its neighbours were sorted. Nothing needs setting up; it works from the rules you already have.

  • Clear cases are filed for you — and marked, with a thin line under that stretch of the project lane in the timeline. Click the block to see why it was chosen, then Keep it or Undo it.
  • Everything else waits to be asked about — when there's unsure time, a "Review … suggestions" button appears above the activity list on the Timeline screen. It groups the guesses into sessions, biggest first, so a whole afternoon is one decision instead of a hundred.
  • It follows your date filter — the review list covers the same stretch the timeline is showing, so widen the filter (Last 30 days, a custom range) to work through older time. Inside the window you can narrow further by day, by suggested project, or to guesses above a confidence you choose.
  • Three answers, and doing nothing is one of them — tick what's right and press Assign; point a row at a different project first if the time is real but the project isn't; or press Not this to send it back to Uncategorized and stop it being offered again. Anything left unticked simply waits.
  • Your word is final — time you assign yourself is never re-sorted, by a rule or by Calliday. Rules outrank the guessing, and the guessing only ever touches time nothing else has claimed.
  • Or turn it off — Settings → General → Automatic categorization, where you can also decide how sure Calliday must be before it files anything without asking.

It all happens on your Mac. If you'd like a second opinion on the leftovers, see AI features.

Everything lives in the Projects & Rules section of the main window: the project tree on the left (click a project for the full editor — color, rate, goal, everything), the ordered rules on the right, edited with explicit Save/Cancel. Rules pick apps from a searchable list of what's installed and what you've used — no bundle ids to look up. Projects and rules are stored in Calliday's local database (they ride along in encrypted backups); terminal folks can round-trip them as TOML with calliday rules export / import. Or skip the typing entirely — see AI features.

09Goals & budgets

Any project can carry a daily intention, in one of two directions:

  • Targets — "at least 4 hours on Work." A ring fills toward the goal and turns green when you make it.
  • Budgets — "at most 30 minutes on Distraction." The moment a budget is spent, Calliday says so with a real macOS notification — exactly once, not a nag loop.

A goal doesn't have to name a project at all. It can attach to a productivity level instead: "at least 4 hours at +0.5 or better" counts every project you've rated that productive, however many there are; "at most 30 minutes at 0 or below" budgets the whole distracting side at once. It's the goal for people whose deep work moves between projects.

  • Weekday scheduling — a goal can run on chosen days only, so a work target ignores the weekend and the weekend budget ignores the office.
  • A year of history on every card — each goal carries its past as a day grid, a column per week: met days green, missed days red, with streaks and today's pace beside it. Reading across a row answers "do I always miss on Fridays?".

Goals are managed from the Goals section, one goal per project or level, with sub-project time rolling up into the parent's goal. Progress is visible in the app, the menu bar, and calliday goals in the terminal.

10Meetings

Screen tracking can't see a conference room. With the calendar integration on (Settings → Calendar), Calliday watches your chosen calendars, and when an event ends it offers — via notification — to log it on your timeline. One click and the hour is accounted for, assigned to the project you pick. Meetings you logged render on their own timeline lane; ones you dismiss never come back.

Calls get the same courtesy as calendars: a FaceTime call is recorded with the name of the person on it, so an hour of "FaceTime" reads as an hour with someone.

Reminders work the other way round

A calendar event already is a time entry — it has a start and an end. A reminder has neither: ticking one off records a moment and a name, nothing more. So Calliday never turns a checkbox into hours. With the reminders integration on (Settings → Calendar), completing a reminder offers you the stretch of already-tracked work that ran up to the tick — named by the reminder, timed by the tracker.

The offer shows its own evidence: the range, and which of the reminder's words it actually saw on screen. Tick off "file the tax return" after half an hour with tax-return-2026.pdf open and it proposes that half hour. Tick it off after an afternoon with no trace of it anywhere, and the words locate nothing — so you get the sitting you just finished, marked as the weak guess it is. Tick it off having done the work on paper, and you get nothing at all, because there is nothing to log.

Completions show up as marks on the timeline's Done lane — points, not blocks, because that is the shape of the fact. Calliday only ever reads reminders you have finished: not your open list, and never the notes attached to them.

11Tomatoes

Calliday's take on the pomodoro turns the method inside out: instead of promising focus in advance and being judged against a timer, tomatoes are discovered in the time you actually tracked. An unbroken stretch of focused work makes one — 25 minutes by default. No ritual required.

What counts as focus

Time in any productive or neutral project. Interruptions shorter than the tolerance (60 seconds by default) — a quick Slack glance, a moment on a news tab — bridge a focus run without counting toward it. Longer breaks, idle time, or walking away end the run.

The rescue

Here's the part a timer can't do. When you've focused long enough that a tomato is nearly grown (70% by default) and you drift into something distracting for more than a glance, Calliday sends one notification: "17 min of focus — 8 more makes a whole tomato. Give up this immature fruit?"

  • Keep Focus — the tomato is planted retroactively, from the moment your focus began. Return to work within a couple of minutes and Calliday notifies you the moment it ripens.
  • Give Up — no judgment, no re-asking. The run simply ends.
  • Choose Keep Focus and then keep scrolling anyway? The fruit withers silently. Tomatoes measure focus; they never scold.

Where tomatoes show up

  • Overview — today's count in the Focus card ("Tomatoes 🍅 6 + ½").
  • Timeline — the 🍅 mini-lane: a thin bar per focus run, a tomato at each ripening moment.
  • Menu bar — a live countdown while one is growing, plus "Start a Tomato" for days when you want the classic ritual.
  • Terminalcalliday tomatoes prints the day's basket, run by run.

Tune it in Settings → General: the interval (10–90 min), the interruption tolerance, whether rescues happen at all, and how grown a tomato must be before one fires. The rescue needs at least one project marked distracting — otherwise nothing reads as a distraction worth rescuing you from.

12Appearance

Calliday ships twelve themes — six light, six dark. They are not brightness settings: each one is a designed palette, and the dark themes were drawn from scratch rather than inverted from a light one. Pick yours in Settings → Appearance.

Light or dark, and which

The pane holds three controls, because there are really two questions. Appearance — System, Light or Dark — decides when each side shows. Below it you choose a light theme and a dark theme separately.

  • System follows macOS: your light theme by day, your dark theme at night. This is the default.
  • Light or Dark pins Calliday to one side whatever macOS is doing — for a dark app on a light desktop, or the other way round.

The side that is currently showing is marked Showing now, and every swatch is a live miniature painted in its own theme, so you are choosing from the real thing rather than from a color chip.

The six light themes

ThemeWhat it's like
ApertureNeutral gray, macOS-native. The original, and still the default.
StudioNear-white with hairline borders and a contemporary palette. Pairs with Graphite.
PaperWarm cream and ink-black type, with the color drained out of the furniture so all of it belongs to your data.
SolarBright and saturated, with tinted chrome instead of gray.
FrostCool blue-gray and crisp, with monospaced figures throughout.
PixelA handheld LCD: pale green ground, near-black ink, and flat colour with hard edges instead of lit gradients. Pairs with Phosphor.

The six dark themes

ThemeWhat it's like
CircuitNear-black instrument panel. The original dark theme.
GraphiteA neutral graphite ground — neither blue nor warm. The night half of the Studio pair.
SlateMid-gray rather than near-black — the dark theme that stays comfortable in a lit room.
OceanA deep navy ground that pushes every project color forward.
EmberWarm brown-black with an amber accent; lamplit rather than screenlit.
PhosphorA CRT terminal: green type on near-black, flat colour throughout. The night half of the Pixel pair.

What changes with it

  • The whole window. Pin a dark theme while macOS is light and the sidebar, toolbar, sheets and scrollbars come with it, so the app reads as one piece instead of a dark panel in a light frame.
  • The menu bar companion. It picks up your choice straight away — the two are separate programs, but they share one palette so a project is the same color in both.
  • Charts, blocks and meters. Every colored surface is painted from the theme: solid color, a hairline of its own shade, and no gloss. Productive time still reads as stronger and distracting time as drained, but that is carried by the color's own weight — never by hue — so a project keeps its identity either way.

Projects you have colored keep their color. If you picked a color for a project yourself, it is yours and a theme will not touch it. Projects you left alone draw from the theme's palette, so they shift when you switch — which is why a project you care about recognising at a glance is worth coloring explicitly in Projects & rules.

13AI features

AI in Calliday is opt-in, precise about what it sends, and included with every license. Nothing leaves this Mac for an AI until you have said so: the first AI feature you use — in the app, the terminal, or the auto-draft — asks once, before anything is sent, and says exactly what will leave and where it will go. Until you agree, nothing does.

Rule suggestions

Projects & Rules → "Suggest with AI…" sends a compact, aggregated summary of your uncategorized time — app names, sites, window titles with durations, never raw logs — and returns ready-made rules and projects. You review every one:

  • Tick or untick each suggestion; reassign any rule to a different project from its "→ project" menu before accepting.
  • Accepted items land as drafts in the normal editors — nothing is final until saved, and plan limits still apply.
  • Unticked suggestions are remembered: that activity stays out of everything sent to AI in the future and won't be suggested again. Review or reverse these under "Dismissed AI suggestions".

A second opinion on leftover time

In the review list for time no rule covers, "Ask AI" hands over the leftovers Calliday couldn't place on its own — one call for all of them, however many there are — and comes back with better guesses. It helps most where a name means something Calliday can't know: that a booking site belongs to a trip, or an unfamiliar dashboard to a client.

  • Only leftovers that have a website or document name are sent. Time recorded without those details isn't — there would be nothing to read.
  • Answers come back as suggestions in the same list, for you to assign or refuse. Nothing is filed on an AI's say-so.

Journal drafts

The journal writes a day, week or month up from your tracked time, in a format and up to three viewpoints you pick — one call however many viewpoints that is. It can also draft a finished day or week on its own, once you turn that on.

Summaries and groupings

From the terminal: calliday ai summarize turns a day's aggregates into a few honest sentences; calliday ai suggest-groups finds natural clusters in your activity.

Bring your own key, or your own server

Calliday sells no AI and relays nothing: every call goes from your Mac straight to the provider you chose, on your own account. Add a key in Settings → AI (stored in the macOS Keychain) and pick the provider — Anthropic Claude, Google Gemini, OpenAI ChatGPT, or any OpenAI-compatible server — and the model within it.

That last option is the interesting one. Choose Any OpenAI-compatible server, give it an address, and Calliday talks to whatever is there: Ollama on http://localhost:11434/v1, LM Studio on http://localhost:1234/v1, or a hosted one like OpenRouter or DeepSeek. Local servers usually need no key at all, and when the address is on your own Mac the AI features send nothing over the network — the settings pane says so when it sees a local address.

Consent is asked per destination, and the destination includes the address: agreeing to send something to one company says nothing about the next one, and agreeing to a model on your own Mac says nothing about one on somebody's server. Switching asks again.

Or keep the AI on this Mac

Settings → AI also offers On this Mac (Apple Intelligence). Calliday then runs Apple's on-device model through the system: no key, no network, no bill, and nothing leaves your Mac — not even the aggregated summaries the cloud path sends. It never quietly falls back to a server either: if the model isn't available, the feature says so and stops.

Expect shorter, plainer answers than the cloud providers give — it is a small model, and Calliday asks it smaller questions to suit. Needs a Mac with Apple Intelligence switched on.

14Ask Claude (MCP)

Calliday ships an MCP server, which means AI assistants can query your tracked time on your Mac — current activity, summaries, focus metrics, and your tomato count — and answer in plain language: "Where did my Tuesday go?", "How fragmented was my morning?", "How many tomatoes did I grow this week?"

  • Your journal too — Claude can read a period's journal, search everything you have ever written ("what did I decide about the auth refactor?") with the same words / "phrases" / /patterns/ you would type into the app, and write one on your behalf. Anything it writes is labelled as written by an assistant, never as written by you, and it will not paint over writing that is already there without being told to.
  • One-click connect — Settings → AI has buttons for Claude Desktop and Claude Code. Click, restart the client, done.
  • Nothing is uploaded — the assistant launches the server locally and reads your local database on demand. Claude asks; your Mac answers.
  • Other MCP-capable clients can run the same server via calliday mcp serve.

15The command line

Everything the app knows is reachable from a terminal. Install the calliday command from Settings → General ("Install Command-Line Tool"), then:

calliday report --today      # where the day went, by project
calliday status              # what's being tracked right now
calliday search "invoice"    # find a file or page you spent time in
calliday tomatoes            # today's basket, run by run
calliday goals               # targets & budgets progress
calliday timer start "Call"  # manual timer
calliday journal write       # what today was about, in your words
calliday journal search "x"  # words, "phrases" or /patterns/
calliday sync                # your other Macs, as this one sees them
calliday export --csv        # your data, portable
calliday rules export        # projects & rules as TOML
calliday sense review        # time Calliday isn't sure how to sort
calliday ai summarize        # a few honest sentences about today
calliday doctor              # permission & health check-up

Every command has --help. Reports accept date ranges, grouping options, and app filters; exports produce clean CSV for spreadsheets or invoicing.

16Your data

Your entire history lives in a local database on your Mac and nowhere else — unless you turn on multi-Mac sync, in which case it also lives on your other Macs, and still nowhere else. No server of ours, no account, no telemetry — unplug the internet and Calliday doesn't notice. That's the architecture, not a setting.

Privacy exclusions (Pro)

Some things are nobody's business, including Calliday's. Exclusions drop chosen apps, sites, window-title patterns, and private/incognito browsing before they're written down — not hidden, never recorded. Apps are picked from a searchable list of what's installed, not typed as bundle ids, and an exclusion covers imported Screen Time history too — an app you've excluded stays out even of a backfill. Configure them in Settings → Privacy.

Backfill from Screen Time

Two rescues, both in Settings → Data. When you first install, Calliday can import app-level history from macOS's own Screen Time records, so you don't start from zero. And if the tracker was ever off (a force-quit, a crash), the same import can fill exactly the gap — timestamp-accurate, marked visibly as a Screen Time fill so you always know which minutes are first-hand.

Tamper evidence

Your record is only trustworthy if it can't be silently rewritten. Calliday keeps a cryptographically signed chain over your recorded time; any direct modification of the database — an edit, a force-killed write, a database swapped in from elsewhere — is detected and shown as a banner until you acknowledge it. Acknowledging starts a fresh verified baseline and leaves a permanent entry in the record. The Integrity settings also keep an honest log of every tracker interruption: what stopped it, when, and whether a gap was filled.

Export & backup

Reports export to CSV whenever numbers need to leave the app — invoicing, spreadsheets, a client's timesheet. Back up your Mac and Calliday's data rides along like any other file; restoring on the same Mac keeps the integrity record intact.

For the backup you'd otherwise forget, Settings → Data can also make one on a schedule: pick a folder and the tracker writes an encrypted snapshot there daily (or weekly), sealed with AES-256 under a passphrase you choose and restorable on any Mac. Point it at an iCloud, Dropbox or Drive folder and your own cloud quietly carries the off-Mac copy — calliday.app never holds a byte. Every backup is re-opened and decrypted before it counts as one, and if two runs in a row fail, Settings says so rather than letting you discover it on the day it matters.

17Multi-Mac sync (2- and 3-Mac licences)

A laptop and a desktop are one working life, so Calliday can keep them one history. Every Mac on your licence writes its own record into a single shared folder and reads everyone else's — a folder in your cloud storage: iCloud Drive, Dropbox, a NAS, whatever already syncs your files. There is no Calliday server in the path, no account, and nothing new to pay for; the same promise as everywhere else in the app, just spread across your Macs.

Turning it on

On each Mac, open Settings → Data, switch on Sync with my other Macs, and point every Mac at the same folder — one click on Use iCloud Drive creates a Calliday folder there, or Choose… picks any synced folder you prefer. That's the whole setup. The tracker takes it from there, syncing every few minutes in the background whether or not the app is open; each of your other Macs appears in the same settings section by name, with when it was last seen. A second Mac joining pulls the full history, not history-from-today — and its own past, tracked before you bought the second seat, flows the other way.

What syncs, and how conflicts end

Recorded time arrives exactly as the other Mac sealed it — app, window, site, document, project — and reports simply include it, with a device column in exports so a timesheet can still say which Mac was which. Projects, rules, goals, time entries, bookmarks and journals merge: edit anywhere, and where two Macs disagree about the same thing, the most recent edit wins. Deleting on one Mac deletes on the others. Two Macs that invented the same project name independently become one project rather than a pair of twins. Idle judgement stays local — each Mac decides what counted on its own keyboard — and privacy exclusions are enforced on the Mac doing the recording, so excluded time never reaches the folder at all.

What your cloud sees

Ciphertext. Every file in the sync folder is sealed with AES-256 under a key derived from your licence key, which only your Macs hold — your cloud provider carries the bytes and can read none of them, and neither can anyone who finds the folder. Each Mac also keeps its own cryptographically signed history (see Tamper evidence), and your Macs check each other's seals as they read: a peer that verifies shows history verified next to its name. A Mac that's been offline for a week just catches up when its folder does; sync moves at your cloud's pace, which is minutes, and nothing is ever lost to waiting. From the command line, calliday sync shows the fleet and calliday sync now runs a pass immediately.

18Licensing & updates

PlanPriceWhat's different
Starter$39 lifetime + taxThe complete tracker, one Mac.
Pro$49 lifetime + taxAdds privacy exclusions, one Mac.
Pro, 2 Macs$69 lifetime + taxTwo Macs on one licence, with sync between them through your own cloud folder.
Pro, 3 Macs$89 lifetime + taxThree Macs with sync, plus app-support requests and priority on support email.
  • Per-Mac licensing — your key is issued for the Mac you buy on and delivered as a one-click activation link. No account to create.
  • Bought once — there is no renewal date, no card on file and nothing to cancel. The key works entirely offline: Calliday never checks in to ask whether you are still allowed to run it.
  • More than one Mac — a two- or three-Mac licence is one key that grows to name all of them. It is issued for the Mac you buy on; on the next Mac, paste the same key (or click the activation link there) and Calliday claims a seat with one click. The key is re-signed to cover both, you're emailed the updated copy, and each of your Macs picks it up on its own.
  • Moving to a replacement Mac — self-serve too. Paste your key on the new Mac: when every seat is in use, Calliday offers to move one here and asks which Mac is being replaced. Nothing moves until you click the confirmation link it emails to your address on file — then the new Mac activates itself within a minute, and the old one stops running Calliday the next time it's online (its recorded data stays on its disk). A seat can move once every 30 days; for anything odd — a dead Mac, a lost email address — support moves it by hand.
  • Upgrade any time, for the difference — Starter to Pro, or another Mac on a Pro licence, costs exactly the gap between the two prices, once. Settings → License → Upgrade to Pro… / Add a Mac… opens the upgrade page with your key filled in; after checkout the page hands you the re-signed key on the spot, the email carries a backup copy, and your other Macs adopt it on their own within a day.
  • A refund is the one thing that ends it — a refund or chargeback revokes the licence and the app returns to unlicensed on that Mac. Your data is yours regardless; the licence only ever unlocked the app.
  • Updates — the app checks for updates and installs them in under a minute; the menu bar companion mentions new versions when the app isn't running. One notification per version, never a nag.

19Troubleshooting

SymptomWhat it means & what to do
"The tracker isn't running"The background tracker is stopped. Click Start Tracking; the app and menu bar also restart it automatically once per run.
"Running but not responding"The tracker process is alive but stuck. Restart Tracking clears it; if it recurs, run calliday doctor and write to support.
"Starting the tracker…"Normal for a few seconds after an update or manual start. No action needed.
No window titlesAccessibility permission is missing or went stale after an update — Settings → Permissions shows the state and the fix.
Browser time has no sitesThat browser's Automation permission was never granted (or the browser isn't answering). Settings → Permissions lists each browser's state.
Tampering bannerThe database changed outside normal tracking — see Tamper evidence. Review, then acknowledge to re-baseline.
A gap in today's dataCheck Settings → Data → Tracker interruptions for what stopped the tracker and when; fill the gap from Screen Time right above it.

calliday doctor checks permissions, the tracker's health, and the database in one pass — its output is the most useful thing to include in a support email.

20Support

A human reads every message: support@calliday.app. For license questions, include the email you bought with; the support button in Settings → License pre-fills everything useful.

An app Calliday doesn't know in detail? Pro licenses include a request channel for exactly that. Send the app and what you'd want recorded from it — which document, which conversation, which book — and it gets looked at and answered either way. Supporting an app means reading that app's own storage or its window, so where the detail is there to be read honestly it ships in an update; where an app encrypts it or never writes it down, we'll say so rather than guess. The time itself is tracked regardless — this is only about naming what was open inside the app.