|
Local-first analytics, automation, and dashboards for Todoist with optional AI summaries and read-only chat.
Quick links |
Todoist Assistant is a local-first Todoist toolkit. It syncs your Todoist data into a local cache, gives you a dashboard to explore it, and lets you run automations on top of that data.
The main product is the dashboard and automation workflow. Optional AI features can summarize your local activity and power a read-only chat view, but the core value of the project is local analytics and automation. After the first sync, most day-to-day usage runs against your local cached data.

- A local dashboard for Todoist activity, trends, and task analysis
- A Python package and API for working with cached Todoist data
- A set of automations such as environment updates, task multiplication, and Gmail task import
- An optional local AI layer for summaries and chat over your cached history
- Todoist users who want a local dashboard instead of only Todoist's built-in views
- People who want to automate recurring Todoist workflows
- Developers who want a Python codebase they can extend
v0.3.4
Release assets live on GitHub Releases:
- Windows:
TodoistAssistantSetup.exeor the.msi - macOS:
.dmgfor the app,.pkgfor CLI-only installs - Linux: source checkout or Docker
- Android: native client APK for a reachable local API
- Download
TodoistAssistantSetup.exefrom GitHub Releases. - Run the installer.
- Paste your Todoist API token during first-run setup.
- Open the dashboard and let the first sync complete.
More Windows details: docs/windows_installer.md
- App + dashboard: install the
.dmgrelease asset - CLI-only: install the
.pkgrelease asset or use Homebrew
Full instructions: docs/INSTALLATION.md
- Run from source
- Or use Docker Compose
Setup details: docs/INSTALLATION.md
Build the native Android client from source:
make android_apkRun the local API on a reachable machine, then point the app at http://10.0.2.2:8000 on an emulator or http://<computer-lan-ip>:8000 on a physical device.
Android details: docs/ANDROID.md
Compose runs the API and frontend services. The published container workflow builds the same two images for GHCR.
docker compose up --buildOpen:
- Dashboard: http://127.0.0.1:3000
- API: http://127.0.0.1:8000
Container workflow: docs/DOCKER.md
Prerequisites:
- Python 3.11
uv- Node.js 20+
- A Todoist API token
git clone https://github.com/mtyrolski/todoist-assistant.git
cd todoist-assistant
cp .env.example .env
# set API_KEY in .env
make init_local_env
make dashboardOpen:
- Dashboard: http://127.0.0.1:3000
- API: http://127.0.0.1:8000
make setup # first sync and local setup
make dashboard # start the dashboard without AI
make dashboard_codex # start the dashboard with Codex CLI AI
make update_env # refresh local cache and run short automations
make run_observer # keep syncing in the background
make run_demo # run the dashboard with demo/anonymized dataCommand details: docs/USAGE.md
- Paste your Todoist API token.
- Confirm or adjust project mapping for archived or moved projects.
- Let the first sync build the local cache.
- Use the dashboard, automations, or chat against local data.
- Runs locally against cached Todoist data
- Shows trends, counts, priorities, and activity summaries
- Works well for repeated analysis after the initial sync
init_envandupdate_envkeep local data current- Multiplication automation expands tasks based on labels
- Gmail automation can turn emails into Todoist tasks
- Observer mode keeps refresh and short automations running continuously
Automation setup lives in configs/automations.yaml.
- Local summaries over cached Todoist history
- Read-only dashboard chat
- AI task breakdown for labeled Todoist tasks
AI is opt-in. The user-facing commands are explicit:
make dashboard: default raw dashboard; no AI backend module is loadedmake dashboard_codex: uses the local Codex/langgraph-codex backend for chat and task breakdown
Advanced users can still set TODOIST_AGENT_BACKEND in .env; supported values are disabled and codex.
The project does not currently support arbitrary OpenAI-compatible HTTP endpoints, Anthropic-compatible HTTP endpoints, uncatalogued local model ids from the dashboard, or write-capable AI agents.
Usage details: docs/USAGE.md
todoist/contains the main Python packagefrontend/contains the Next.js dashboardconfigs/contains automation and dashboard configurationdocs/contains longer-form documentationtests/contains API, integration, platform, and nested unit test segmentscore/contains the core-only package variant
Code layout details: docs/CODE_LAYOUT.md
- docs/README.md: docs index
- docs/INSTALLATION.md: installation by platform
- docs/USAGE.md: commands, dashboard, and automations
- docs/DOCKER.md: container workflow
- docs/BUILDING.md: packaging and CI
- docs/gmail_setup.md: Gmail automation setup
- core/README.md: core-only package
- tests/README.md: test layout and coverage notes
Run this before closing code changes:
uv sync --locked
make test_all
make coverageCI also runs a dashboard smoke test in raw/demo mode and a Docker image workflow for the API and frontend images. Workflow details live in docs/BUILDING.md.
Issues and pull requests are welcome. Read AGENTS.md and SKILLS.md for repository rules and workflow expectations.
MIT. See LICENSE.


