notes & standup · part of toolbox Python 3 · no dependencies · plain Markdown

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.

notes/2026-09-23-daily.mdMarkdown
---
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
What 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.

0 of 9 done
  1. 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 toolbox repo on GitHub. Ask Tobias for an invite.

    Check Both commands print a version number, e.g. Python 3.9.6.

  2. First cd into the folder where you want it to live, such as your home folder or wherever you keep projects. The download creates a toolbox folder 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 repo access, 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 notes command.

  3. ./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 ~/.bashrc instead.

  4. 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 -h prints the help. If it says command not found, run the line below, then open another new window:

    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
  5. notes todo "buy milk" "call mom"
    notes todo "reply to client email" --work
    notes todos

    Quote each item. notes todo buy milk would add two items, "buy" and "milk". --work files an item under Work.

    Check notes todos lists all three items, grouped under Work and Personal.

  6. 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, or notes editor vim.

  7. 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 milk reopens it.

    Check notes todos no longer lists "buy milk".

  8. 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.

  9. This needs Claude Code and a Claude Pro or Max plan. Install Claude Code by following the steps on its site, then run claude once 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 ai shows Claude 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 --work leaves out your personal items, and --personal does the opposite.
It shows up in every new terminal
With the terminal reminder on, notes shows 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
Real output from a demo notebook. The two open items from Tuesday were carried over to today automatically.

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.

Terminal recording: notes todos lists 30 to-dos grouped only by Work and Personal; notes todos --ai regroups them into Finance, Health, Household, Meetings, Technical, Travel, Planning and Learning with urgent items first; a new to-do is categorized with one small call; notes check --ai shows the grouped checklist; notes ai shows the usage report.
A real recording on a demo notebook with 30 to-dos. The wait for Claude is shortened to about a second.

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. notes won'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, notes checks 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 ai to 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.
SettingDefaultWhat it limits
daily_calls20Calls to Claude per day. Set it to 0 to turn AI sorting off.
monthly_budget_usd$2.00Estimated usage per calendar month
max_usd_per_call$0.10Cap passed to each call
batch_size40To-dos sent per call
allow_api_billingfalseWhether 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.