inthe.am died. FreeCinc died. TaskChamp broke. WingTask broke on TW3. cmdock is a Rust server linking TaskChampion as a library, with a native iOS app. It syncs. It works.
$ task sync Syncing with sync server at https://sync.cmdock.dev Sync successful. $ task +DUETODAY list ID Age Project Due Description --- --- ---------------- ---------- -------------------- 7 3d work.api-rewrite 2026-03-28 Fix auth middleware 14 1w PERSONAL.Health 2026-03-28 Dentist 2pm 23 2d oss.cmdock 2026-03-28 Update Docker recipe 3 tasks $ _
SwiftUI. Widgets. Siri. Geofencing. Focus mode integration. Not a web wrapper. 137 tests.
Rust server with TaskChampion library. 20,000 tx/s validated. Zero SQLite BUSY errors at 500 concurrent users.
Your .taskrc stays yours. task sync works. No wrapper binary. No UDA pollution. The server syncs; the CLI doesn't change.
Mutations queue with POSIX file locking. Replay on reconnect. Share extension queues too. Works on the train.
Server is AGPL-3.0. Self-host for free. All features, no gating. The hosted service pays for infrastructure, not code.
Native Kotlin/Compose. In internal testing. Feature parity with iOS. Same server, same sync.
# Clone and start $ git clone https://github.com/cmdock/server.git $ cd server/deploy $ export DOMAIN=tasks.yourdomain.com $ docker compose up -d ✓ Server running. HTTPS cert provisioned. # Create your account $ docker compose exec server cmdock-server admin user create --username you Created user: usr-a7b3c9 Token: eyJ0eX...kF9mQ (enter this in the app) # Point your CLI at it $ task config sync.server.url https://tasks.yourdomain.com $ task sync Sync successful.
cmdock is in TestFlight beta. If you use TaskWarrior and want it on your phone, we want to hear from you.