Write it down. Find it later.
notes is a small terminal tool for daily notes and to-dos. Every note is a plain Markdown file you own. Open to-dos follow you from day to day, and when the list gets long, Claude can sort it for you.
$ notes todo "renew passport" "call dentist"
That's the whole workflow for adding to-dos. No app, no account, no sync service required.
--- title: Daily 2026-09-23 date: 2026-09-23 tags: [daily] --- ## Work - [ ] fix checkout crash on Safari - [ ] prepare slides for Friday's demo - [x] review Maria's PR ## Personal - [ ] renew passport - [ ] call dentist - [ ] pay rent
notes writes to disk: a regular Markdown file. Open it in any editor, grep it, or sync it with iCloud.Get set up
Nine short steps, about ten minutes, and the last one is optional. Most steps end with a quick check, so you know it worked before moving on. Tick each one off as you go; your progress is saved in this browser.
-
git --version python3 --version
Both come with macOS's developer tools. On a fresh Mac, either command may open a dialog offering to install them: click Install, wait for it to finish, then run the commands again. You'll also need access to the private
toolboxrepo on GitHub. Ask Tobias for an invite.Check Both commands print a version number, e.g.
Python 3.9.6. -
First
cdinto the folder where you want it to live, such as your home folder or wherever you keep projects. The download creates atoolboxfolder there.git clone https://github.com/tobiasdossinger/toolbox.git cd toolbox
Git asks for your GitHub username and a password. For the password, paste a classic personal access token with
repoaccess, because GitHub no longer accepts account passwords here. The newer fine-grained tokens don't work for someone else's repo. Other ways to download:- If you use the GitHub CLI:
gh repo clone tobiasdossinger/toolbox - If you have an SSH key on GitHub:
git clone git@github.com:tobiasdossinger/toolbox.git - If you have no GitHub account: ask Tobias for a read-only download link. The toolbox README explains how he creates one.
Keep this folder where it is. The tools run straight from it, and unless you turn on iCloud sync in the next step, your notes are stored inside it too. Moving or deleting it breaks the
notescommand. - If you use the GitHub CLI:
-
./install.sh notes standup
It links both tools into
~/.local/bin, then asks up to three questions:-
Sync notes across devices via iCloud Drive?
Yes if you use more than one Mac, otherwise no. Only asked on a Mac with iCloud Drive turned on.
-
What do you want to use this notebook for?
Both (the default) gives every day a Personal section, plus a Work section on weekdays. Pick Work only or Personal only if that's all you need.
-
Show a reminder of open to-dos every time you open a new terminal?
Yes (the default). Each new terminal starts with your standup.
It also shows which editor notes will open. If that's nano, step 6 covers how to save. The installer edits
~/.zshrc, the macOS default. If you use bash, copy the lines it prints into~/.bashrcinstead. -
-
This matters: your settings from the installer only apply to new windows. If you add to-dos in the window you installed from, they can be saved to the wrong folder.
notes -h
Check In the new window,
notes -hprints the help. If it sayscommand not found, run the line below, then open another new window:echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
-
notes todo "buy milk" "call mom" notes todo "reply to client email" --work notes todos
Quote each item.
notes todo buy milkwould add two items, "buy" and "milk".--workfiles an item under Work.Check
notes todoslists all three items, grouped under Work and Personal. -
notes today
This opens today's note in your editor: the same to-dos, plus room for anything else you want to write down.
In nano (the default editor), save with Ctrl+O, press Enter, then quit with Ctrl+X. Pressing Ctrl+X first asks whether to save, and answering no throws your changes away. Prefer another editor?
notes editor "code -w"for VS Code, ornotes editor vim. -
notes done milk # typo-tolerant match notes check # interactive checklist
In
notes check, use the arrow keys to move, Space to tick, and q to quit. Checked off the wrong one?notes undone milkreopens it.Check
notes todosno longer lists "buy milk". -
standup
On day one there's no yesterday yet, so you'll only see what's open. From tomorrow, it also lists what you checked off today. How it works
Check On a weekday, it starts with
Standup —and today's date. On weekends, it just lists your open to-dos. -
This needs Claude Code and a Claude Pro or Max plan. Install Claude Code by following the steps on its site, then run
claudeonce and log in with your Claude account. After that:notes ai # check the login and limits notes todos --ai # sort your to-dos
Check Next to Login,
notes aishowsClaude subscription ✓. The first sort takes a few seconds, and after that it's instant. More about AI sorting
How your notes stay organized
These all run on their own; there's nothing to set up.
[>] Open items follow you
The first time you use notes each day, it moves yesterday's open to-dos into today's note and marks the old ones - [>], so nothing gets left behind.
## Work and Personal
With "Both", every day gets a Personal section and weekdays also get a Work section. Weekends stay personal.
$ A reminder in every terminal
If you said yes during install, each new terminal opens with a short list of what's still open. It shows your standup summary instead if the standup tool is installed.
~ Typo-tolerant search
notes search, notes edit and notes done all find close matches, so "dentst" still finds "call dentist".
Your standup, already written
standup reads the daily notes that notes already keeps. There's nothing extra to track: what you checked off last time becomes your update, and everything still open is today's list.
- It knows what "yesterday" means
- On a Monday, it reports Friday's work as "Last done (Friday, …)", so the label never claims a day that isn't true. Days without a note are skipped.
- It takes weekends off
- On Saturday and Sunday there's no recap, just your open to-dos.
- Filter it for the meeting
standup --workleaves out your personal items, and--personaldoes the opposite.- It shows up in every new terminal
- With the terminal reminder on,
notesshows your standup instead of a plain list. Nothing to configure.
$ standup Standup — 2026-09-23 Yesterday (Tuesday, 2026-09-22) Work (3) ✓ ship the new onboarding flow ✓ review Maria's PR for the payments refactor ✓ fix flaky login test in CI Personal (1) ✓ book dentist appointment Today — open (5) Work (3) ☐ prepare slides for Friday's sprint demo ☐ reply to client email about contract renewal ☐ hotfix expired SSL cert on staging Personal (2) ☐ renew passport ☐ pay rent
When the list gets long, let Claude sort it
Add --ai to notes todos or notes check. Claude files each open item under a topic like Finance, Health or Meetings, rates how urgent it is, and puts the most urgent items at the top of each group.
- file tax return, deadline next weekurgent
- buy groceries for the weekendnormal
- someday: learn Spanishlow
Your files never change. Sorting only affects what you see, so done, carry-forward and everything else work exactly as before.
Results are saved per item, so only new to-dos trigger a call. Want a fresh sort? Run notes todos --ai --refresh. There's also Markdown output for sharing: notes todos --ai --md.
No surprise bills
AI sorting runs through your Claude subscription, so there's no API key to manage and nothing billed per call.
- Subscription only.
noteswon't call Claude unless Claude Code is logged in with a Claude plan. It also ignores any API key set in your shell, so a leftover key can't turn into a bill. - Hard limits. Before every call,
noteschecks a daily call limit and a monthly budget. When either runs out, you get the regular list and a note saying why. - Every call is logged. Run
notes aito see today's calls, this month's estimated usage and the latest calls. A sort of about 30 to-dos is estimated at roughly $0.03 at API prices, which counts toward your plan's usage limits rather than being charged.
| Setting | Default | What it limits |
|---|---|---|
| daily_calls | 20 | Calls to Claude per day. Set it to 0 to turn AI sorting off. |
| monthly_budget_usd | $2.00 | Estimated usage per calendar month |
| max_usd_per_call | $0.10 | Cap passed to each call |
| batch_size | 40 | To-dos sent per call |
| allow_api_billing | false | Whether an API key may be used |
notes ai --set daily_calls=10 monthly_budget_usd=1
Cheat sheet
Run notes -h for this list, or notes <command> -h for details on one command.
To-dos
- notes todo "text" [--work]
- Add one or more to-dos to today's note
- notes todos [--ai] [--md]
- List everything open, across all notes
- notes done <text>
- Check off the closest match
- notes undone <text>
- Reopen a checked-off item
- notes check [--ai]
- Tick items off in an interactive list
Notes
- notes today
- Open today's daily note in your editor
- notes new "Title"
- Start a new note
- notes search <text>
- Search titles and contents
- notes edit <text>
- Open the note that matches best
- notes list · notes tags
- Browse recent notes and the tags you use
standup
- standup
- Last workday's checked-off items plus everything open
- standup --work · --personal
- Only one section
Setup
- notes init
- Change what the notebook is for: Work, Personal or Both
- notes editor "code -w"
- Choose your editor. The default is nano (save with Ctrl+O, quit with Ctrl+X).
- notes ai
- AI usage and limits
- NOTES_DIR=…
- Keep your notes in a different folder. standup reads the same setting.