Skip to content

Self-hosted Todoist alternative

Conatus is an open-source task manager you run on your own server. It was built by someone who used Todoist for years and wanted the same workflow on hardware they control. The parts you use every day work the way you already expect: quick add, P1 to P4, #project, @label, recurring rules and saved filters.

It is not a clone, and it is currently a public beta. This page is the honest version: what carries over, what does not exist yet, and what you get in return.

Conatus Todoist
Hosting Your server, Docker Compose Todoist’s cloud
Licence AGPL-3.0 Proprietary
Cost Free. You pay for the box it runs on Free tier, then Pro and Business per user
Projects, filters, labels Unlimited Capped per plan
File attachments Your own MinIO bucket Todoist’s storage, size capped per plan
Telemetry None Product analytics
Data export JSON export, plus daily database dumps you own Account export
Clients Web. Android in development Web, macOS, Windows, iOS, Android
Automation REST API, webhooks, MCP server REST API, MCP server, integration directory

Todoist’s plan limits and prices move; check their pricing page rather than this table. Last compared September 2026.

Worth knowing before you spend an evening on a migration.

  • Mobile and desktop apps. Conatus is a web app today. The Android client is on the roadmap, not released. iOS is not planned before v1.0.
  • Push notifications. Reminders are absolute datetimes only, delivered by email and an in-app bell, and email needs SMTP configured. No relative reminders, no location reminders, no phone push.
  • Offline work. Every client talks to the server. The offline sync API is a v0.3 target.
  • The full recurrence grammar. every day, every monday, every 2 weeks, every weekday and friends work. Multi-weekday and positional rules such as “every 3rd Friday” do not.
  • Teams, workspaces and seats. Sharing is per project, by username, on your own instance. One owner, the rest editors. That is the whole permission model.
  • An integration directory. There is no marketplace. There is an OpenAPI 3.1 contract, signed webhooks and an MCP server, and you wire up the rest.
  • Karma, and years of polish. Conatus is at v0.2.0-beta.3.

If any of those is a dealbreaker for you, stay where you are. The list is here so you can decide in two minutes instead of after the import.

  • The data is yours. PostgreSQL and MinIO on your own machine, no third party in the path, backed up daily from first boot with a one-command restore.
  • No caps. Projects, sections, labels, filters, collaborators and attachment sizes are bounded by your disk, not a plan.
  • No per-seat billing. Add everyone in the house or the team; the price does not change.
  • Deadlines and durations as separate fields, on the row, next to priority, repeat, sub-task counts and labels. You do not open a task to see its state.
  • Automation built in, not bolted on. Scoped bearer tokens, cursor pagination, Idempotency-Key, HMAC-SHA256 webhook signatures, and an MCP server so an AI agent can work your task list against your own instance.
  • You can read the code, fork it, and keep running the version you have.

There is a built-in Todoist importer, and it is the reason this page exists. Paste a Todoist API token, or upload the .zip backup, and you get a per-project preview of sections, tasks, subtasks, comments and warnings before a single row is written.

Projects and their nesting, sections, tasks and descriptions, sub-task hierarchy, priorities, due dates and times, deadlines, durations, labels, comments, and recurring rules that map onto Conatus rules all transfer.

Completed tasks, filters, attachments, reminders, activity history and Todoist collaborators do not. The full table spells out both columns.

The token is used for one request and never stored, name collisions are flagged so you choose rename or skip per project, and nothing is written until you confirm step two. Run it against a fresh instance first if you want to see the result before committing. For the step-by-step version, see Migrate from Todoist.

Installing takes three commands and about five minutes:

mkdir conatus && cd conatus
curl -O https://raw.githubusercontent.com/nojusmorkunas/conatus/main/docker-compose.yml
curl -o .env https://raw.githubusercontent.com/nojusmorkunas/conatus/main/.env.example

Fill in .env. Every replace-with-... value is a placeholder, not a safe credential. Then docker compose up -d. The install guide covers credentials, network binding and first login, and the reverse proxy guide covers putting it on a domain.