Local-only macOS menu-bar to-do

Never drop the baton.

Baton saves the window where you were working on each task. Click a button and that window, Chrome tab, or tmux pane comes back to the front. You spend less time finding your place again.

macOS 14+ · .dmg
  • 100% local
  • No account
  • One SQLite file
  • Signed .dmg

When you add a task, Baton saves the window you were in. Click ↗ and that window comes back to the front.

HUD

A HUD that stays on top

The card stays on top of other Spaces and full-screen apps. It shows every running task in one place. Each row has a session, today, and total timer.

Baton
100%Tue 17:48
PR #142 · per-key rate limiting · GitHub
github.com/Goodtail/baton/pull/142
The Baton HUD with running and queued tasks and session, today, and total timers
The Baton HUD with running and queued tasks and session, today, and total timers
Always visible over Spaces and full-screen apps
Session, today, and total time per row
Project chip and priority on every task
Per-row open ↗, pause, and complete

Collapse to one line

Collapsed, it shows only running tasks in one line. You can adjust its size and opacity.

The collapsed Baton HUD showing only running tasks in one line
The collapsed Baton HUD showing only running tasks in one line

Hold ⌃ to hide it

Hold ⌃ and hover the card. It disappears for three seconds so you can see the window behind it.

A Baton HUD hint saying it disappears while you hold ⌃
A Baton HUD hint saying it disappears while you hold ⌃
Quick-add

Add in one line

Add tasks from the HUD, the board, the menu bar, or the global ⌥⌘Space shortcut. Use symbols to set project, priority, due date, and session in the same line.

The Baton quick-add with @project ⚑priority ▦due 🔗session token hints
The Baton quick-add with @project ⚑priority ▦due 🔗session token hints
@nameSet a project. Creates it if new.
Baton quick-add with @ typed and the project list open
Baton quick-add with @ typed and the project list open
#0–#5Priority. P0 is the highest.
Baton quick-add with # typed and the P0–P5 priority list open
Baton quick-add with # typed and the P0–P5 priority list open
/Bind a session: the current window, tab, or pane.
Baton quick-add with / typed and the open windows, tabs, and panes listed
Baton quick-add with / typed and the open windows, tabs, and panes listed
~Due date. ~+1 · ~3d · ~2h · ~7/22
Baton quick-add with ~ typed and due-date suggestions shown
Baton quick-add with ~ typed and due-date suggestions shown

Set priority with #

Choose P0 through P5. Each has its own color in the board and HUD.

  • P0Urgent
  • P1High
  • P2Medium
  • P3Low
  • P4Later
  • P5Someday

⌥⌘Space⌥⌘Space remembers the window you were in before the shortcut. It also shows running tasks so you do not add duplicates.

Session binding

Open a task, get the window back

The frontmost window is saved automatically just before you add a task. Click ↗ later and that window comes back to the front.

App windows

Brought to the front through the macOS Accessibility API.

Chrome tabs

Opened by URL, so it works even if you move the tab. If the tab is closed, Baton reopens the address.

tmux panes

Switched with the tmux CLI. Panes running AI agents like claude and codex show a ✳ marker.

The quick-add remembers the window you were in before the shortcut and shows running tasks. You bind the right window and avoid duplicates.

Board

Manage everything on one screen

Projects and sessions on the left, status filters on top, a timetable on the right. Open the inspector for task details.

The Baton board with project and session sidebars, status filters, task rows with session chips, and a timetable on the right
The Baton board with project and session sidebars, status filters, task rows with session chips, and a timetable on the right

Project & session sidebar

Projects show as colored dots with counts. Open windows, tabs, and panes are grouped for quick binding.

Status filters

Filter by running, paused, queued, or done.

Task inspector

See priority, due date, subtasks, and activity history in one panel.

Today's timetable

The right panel shows today's time entries as colored blocks by project.

Workday

Clock in, break, clock out

Clock in, break, resume, and clock out are recorded automatically. Starting a task clocks you in. Clocking out creates a day summary. It tracks time, not location.

  1. 1

    Clock in

    Starting a task clocks you in.

  2. 2

    Break

    Pauses running tasks and saves them.

  3. 3

    Resume

    Restarts the tasks you had running.

  4. 4

    Clock out

    Ends the day and creates a summary.

Set a break length
The Baton break popover offering 5, 10, 30 minutes, one hour, or two, with a note field
The Baton break popover offering 5, 10, 30 minutes, one hour, or two, with a note field

Pick 5, 10, or 30 minutes, one hour, or two, or set no length. Running tasks pause and are saved while you are away.

The day summary

Net worked time, total breaks, completed tasks, your focus by time of day, the project you spent longest on, and task counts by state. It appears when you clock out.

The Baton day summary with net worked time, breaks, completed count, focus by time of day, and project share
The Baton day summary with net worked time, breaks, completed count, focus by time of day, and project share
Privacy

All data stays on your Mac

No account, no server, no analytics. All data is stored in a single SQLite file on your Mac. You can export everything at any time.

100% local
Nothing ever leaves your machine.
One file
Every task, timer, and project in one SQLite file.
No account
No login and no tracking scripts.
Export anytime
Export your entire dataset as JSON.
Baton Pro

Buy once, up to 5 devices

Both plans have the same features. Try it free for 14 days, then buy.

Monthly
$4
/mo
Lifetime
$29
one-time
macOS 14+ · .dmg