Repository avatar
AI Tools
v1.1.1
active

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

VariableWhat it does
PETODO_TOKENUse this token instead of the signed-in one, for this command only.
PETODO_ENDPOINTPoint at a different API. Defaults to https://app.petodoapp.com/api.
PETODO_HOMEWhere 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.

NPM
petodo-cli
Install Command
npm install petodo-cli