Cockpit
A Mac app for my tasks, calendar, meeting prep and approvals, connected to my local task system.
Why it exists
I replaced my paid Todoist workflow with Cockpit, a native Mac app for my tasks, calendar, meeting preparation, briefings and approval queue. Todoist's task list was fine. The rest was somewhere else, and I was reading files and terminal output to see any of it.
Cockpit reads and writes the same records as everything else in my Chief of Staff OS, the local system I use to run my working day. That system consists of Markdown and YAML records, commands, scheduled jobs and a review queue for generated suggestions.
I started Cockpit in March 2026, at work, as a tool for myself. Claude Code built it, and Codex reviewed it. The review is in the commit history.
What it shows
The app is a two-column workspace: prioritized tasks beside the day's calendar and a meeting-preparation panel. Items waiting for approval have compact approve and dismiss actions, and a floating reminder shows what's next. Briefings are in the app too. Anything a scheduled job or background worker generates waits in the approval queue, and the system writes it to the records only after I accept it.
The app uses Tauri 2, with a Rust core and a web front end built with React 19 and TypeScript. A small state store sits between the views and the records. Adapters translate between the record files and what the interface needs.
How it stays in sync
I have to keep the screen current while scheduled jobs, background workers and other sessions change the same files outside the app. If Cockpit cached those files, it would show stale tasks and stale approvals. The app watches the record files and re-reads them whenever they change. Every write it makes is atomic, so another process never reads a file halfway through that write.
The adapters let me change the file layout and the screen independently. Cockpit sends approval actions through the same shared task service as every other entry point in the system (the commands and the jobs). "Accepted" and "completed" mean the same thing whether I press a button in Cockpit or run a command. The app has no separate definition of either state.
Native reminders also needed explicit handling of focus, window placement and expired events. If a reminder takes focus away from my editor or appears on the wrong screen, I close it without reading it.
What it got wrong
Cockpit initially displayed calendar focus blocks as meetings, so time I had held looked like a commitment with other people. I changed the calendar display to distinguish held time from meetings. An expired reminder could also suppress the reminders after it. Now the app retires each reminder once its event has ended.
The root README is still the unmodified starter template. An installation, data-boundary and architecture guide would make the project easy to hand to someone else, and I haven't written it.
Status
I have Cockpit installed on my Mac and have used it daily at work since March 2026. I keep the code private because the records it reads contain my employer's context. A sanitized screenshot is on my list and not on this page yet.