
Self-hosted task and project management
- v0.2.0-beta.3 public beta
- AGPL-3.0
- Docker Compose
- No telemetry

Features
Section titled “Features”Projects and sections
Nest projects, split them into sections, tag across all of them. Four priority levels, the same P1 to P4 you already think in. Sub-tasks carry their own dates and labels.

Recurrence and deadlines
Every day, every Monday, every 2 weeks, every weekday. Due dates and deadlines are separate fields, because they are separate things. An overdue repeat advances instead of piling up.

Comments and attachments
Share a project, argue in the comments, attach the file. Attachments land in your own MinIO bucket, not on someone else’s CDN. Reminders sit on the same panel.

Todoist import
Connect the Todoist API or upload a backup, then review exactly what will land before anything is written. Recurring rules, hierarchy, sections, labels and comments all survive. Then work in list, board or calendar view.

API and webhooks
Scoped bearer tokens, an OpenAPI 3.1 contract at /api/v1/openapi.json, cursor pagination and Idempotency-Key. Webhooks POST task and project events, signed with HMAC-SHA256. An MCP server ships separately for AI agents.
curl -H "Authorization: Bearer tdm_..." \ "https://tasks.example.com/api/v1/tasks?completed=false"{ "type": "task.completed", "taskContent": "Build responsive homepage prototype", "projectName": "Website Redesign", "occurredAt": "2026-09-02T12:48:05.412Z"}X-Webhook-Signature header you verify against the secret shown once at creation.Quickstart
Section titled “Quickstart”mkdir conatus && cd conatuscurl -O https://raw.githubusercontent.com/nojusmorkunas/conatus/main/docker-compose.ymlcurl -o .env https://raw.githubusercontent.com/nojusmorkunas/conatus/main/.env.exampleBefore starting the stack, open .env, replace every replace-with-... value,
and set CONATUS_VERSION=0.2.0-beta.3. The sample values are placeholders, not
safe credentials. For a local install or a reverse proxy on the same host, also
set CONATUS_BIND_ADDRESS=127.0.0.1 so port 4399 is not exposed to your network.
docker compose up -dConatus is now at http://localhost:4399.
Treat the downloaded .env as a checklist. Compose only checks that the
required variables exist; it cannot tell whether you left a placeholder in
place. Set CONATUS_ADMIN_USERNAME and CONATUS_ADMIN_PASSWORD to create an
administrator on first boot. The install guide walks
through credentials, network binding and first login.
The stack. The app, PostgreSQL, MinIO for attachments, a migration job that runs before the app comes up, and a backup timer that dumps the database daily from day one. Everything persists in named Docker volumes, and restoring takes one command.
This is v0.2.0-beta.3, a public beta. Upgrades migrate automatically from any earlier
release, but back up first. Some migrations need a
restore to roll back. On a domain you also want a
reverse proxy.
Support Conatus
Conatus is open source and free. If it has been useful, a GitHub star helps more people find it.
