
petodo
io.github.gaby3637/petodo
Your Petodo to-do list for AI assistants: list, add, complete, edit and report on tasks.
Documentation
petodo-cli
Your Petodo to-do list from the terminal: and an MCP server, so Claude Code, Claude Desktop and Cursor can work the same list directly.
Petodo itself is a desktop pet that holds your to-do list. This is the same list, reached over the network, so it works whether or not the app is running on the machine you are typing on.
npx petodo-cli login
npx petodo-cli add "call Sam 2pm"
Install it properly if you use it more than once:
npm install -g petodo-cli
petodo list
Node 18 or newer. No dependencies.
Signing in
petodo login
Prints a short code and opens your browser. Check the code on screen matches the one in the terminal before approving. That is what stops someone else's sign-in attempt landing in your account.
The token is written to ~/.petodo/config.json, readable only by you. petodo logout revokes it and removes the file.
Everyday use
petodo list [--all|--done] [--today|--tomorrow]
petodo add "call Sam 2pm" times in the text are understood
petodo done <id> an id prefix, or part of the title, is enough
petodo undo <id>
petodo rm <id>
petodo edit <id> [--title "..."] [--due "3pm"] [--clear-due] [--today|--tomorrow]
petodo report what is overdue, due soon, and your streak
petodo whoami
Ids are UUIDs and petodo list shows the first eight characters, which is all
you ever need to type. If that is still ambiguous the command says so rather
than guessing:
$ petodo done bbbb
"bbbb" matches 2 tasks. Use more of the id.
Words that name a time are read out of the title in your own clock:
petodo add "call Sam 2pm" files the task for 2pm today and arms the
reminders. Pass --due only when you want to override that.
So are words that mean "again":
$ petodo add "gym every weekday at 6pm"
repeating 4f2a91cc gym
Every weekday at 6:00 PM
first one 6:00 PM
A repeat appears one day at a time. petodo list shows today's with a ↻,
and the rules themselves underneath. petodo done on one finishes that day;
petodo rm on a rule stops it repeating and takes the days still to come.
With an assistant
petodo mcp runs an MCP server on stdin and
stdout. You do not normally run it yourself; you register it once:
petodo connect claude-code # or claude-desktop, or cursor
petodo connect --print # the config, to paste yourself
The assistant can then list, add, complete, edit, delete and summarise your tasks. Everything it does is under your own account and shows up in the app immediately.
For an assistant that wants HTTP rather than MCP, make it its own key:
petodo keys create "Claude"
petodo keys list
petodo keys revoke <id>
A key reaches the list and nothing else. It cannot read your email address, make another key, or remove a device. Take one away and only that assistant loses access.
Environment
| Variable | What it does |
|---|---|
PETODO_TOKEN | Use this token instead of the signed-in one, for this command only. |
PETODO_ENDPOINT | Point at a different API. Defaults to https://app.petodoapp.com/api. |
PETODO_HOME | Where the config lives. Defaults to ~/.petodo. |
The environment always wins over the stored config, so a one-off override stays a one-off.
Licence
MIT.
petodo-clinpm install petodo-cli