REST API
Tokens with full, read-only or agent scope. Writes go through the same sync log as the app, so a task created by a script appears on every device within seconds.
API referenceDevelopers
The app, the command line, AI assistants and your own scripts all write to the same place, so a task created from a script shows up on your phone a moment later.
# add a task from a script
curl -X POST "$OPENTODO/api/v1/tasks" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Renew passport","priority":1}'
# or with the command line
ot add "Renew passport" --priority 1 --due tomorrowTokens with full, read-only or agent scope. Writes go through the same sync log as the app, so a task created by a script appears on every device within seconds.
API referenceA separate static binary for scripts and coding agents: JSON output with schemas, dry runs, idempotency keys and exit codes you can rely on.
CLI referenceConnect the assistant you already use. Read-only by default; changes only when the owner and the person both allow them.
MCP endpointSigned events for Home Assistant, n8n or a chat relay, with retries and a delivery log.
WebhooksTwo-way sync with Apple Reminders, Thunderbird and Android task apps, with a password per device.
CalDAVA Go server with an embedded database and a web app that keeps a full copy on every device, converging through a log of field-level changes.
ArchitectureOpen specifications
Each feature started as an OpenSpec change: a proposal, behaviour with testable scenarios, a design and tasks. The specs describe how OpenTodo behaves today.
Try the demo in your browser. When you like it, install OpenTodo on your server and import your tasks.