Self-hosted · Open source · No subscription
nia-todo is a fast, self-hosted todo app with workspaces, recurring todos, location-based reminders and voice-to-todo. One Docker container, your data.
Latest releasev3.1.1No growth hacks, no freemium funnel. nia-todo does what a todo app needs to do. It just happens to run on your own server.
Separate home, family and work into workspaces, with subprojects, sections, and shared projects you work on together with other users.
Daily, weekly, monthly or yearly. Completing one carries reminders and subtasks over to the next occurrence.
Attach todos to a place and get reminded when you're actually driving past the hardware store. Currently available in the Android app.
Turn voice notes into reviewed todo candidates with local or remote whisper.cpp STT and Ollama (local or Cloud) or an OpenAI-compatible LLM endpoint.
Keep checklist subtasks, threaded comments and attachment previews together in one todo detail view.
Day, week and month views for due todos, with the same actions you get in the list view.
Protect accounts with TOTP, WebAuthn passkeys, recovery codes and OIDC SSO, backed by per-user data isolation.
Windows, Android and Debian clients, plus an installable offline-first PWA for everything else.
Use nia-todo in 12 languages, with localized interface text, system emails, and locale-aware date and time formatting.
Manage users, instance settings and everything else from the web UI. No config file ever needs touching.
System, light or dark, plus several accent color presets to match how you like your dashboards to look.
Push notifications for web and PWA, plus local reminders on Windows, Android and Debian that work even offline.
Installable as an offline-first PWA on Android, iOS and desktop, with native Windows, Android and Debian clients bundled directly with your own server. No app store is required.
nia-todo runs as a single Docker container with FastAPI and SQLite. No external services, no telemetry and no dependence on someone else's infrastructure.
docker run -d \
--name nia-todo \
--restart unless-stopped \
-p 8753:8753 \
-v nia-todo-data:/data \
ghcr.io/weedpump/nia-todo:latest