Smart todo & habit scheduler
Your todos and habits, scheduled automatically.
Define the time blocks in your week, add your todos and recurring habits, and Auto Cal fits them into your calendar automatically โ by priority, into the right window, rescheduling as things change. Self-hosted, open source, one Docker image.
What it does
Automatic scheduling
Add a todo with a priority and an estimated length; Auto Cal places it into the next free slot of a matching time block. No dragging things around a calendar by hand.
Activity-based time blocks
Define recurring windows for an activity โ "5โ7 pm, exercise", "9โ12, deep work" โ and only matching todos and habits land there. Your day keeps its shape.
Habit tracking
Set a cadence like 3ร per week or 10ร per month. Auto Cal schedules only the instances you still owe and tracks your completion rate over time.
Auto-rescheduling
When a higher-priority item arrives or you finish something early, lower-priority items shift to make room โ the whole plan recomputes, no manual reshuffling.
Subscribe from any calendar
A read-only iCal feed exposes your computed schedule and time blocks. Subscribe from Google Calendar,
Apple Calendar, or anything that speaks .ics.
GraphQL API & keys
Everything is a scoped GraphQL API. Mint acal_ API keys to script your todos, drive the
iCal feed, or wire Auto Cal into your own tools.
Import from Google Tasks
Bring your existing tasks along. Upload a Google Tasks JSON export, map each list to an activity type, and Auto Cal creates the lists and todos โ then schedules them for you.
Passwordless login
Sign in with a magic link โ no passwords to store or leak. On a trusted local network you can enable link-in-response login and skip the email provider entirely.
Ships as one image
A single Docker image builds the web client and the API server. Run it with embedded PGLite for a demo, or point it at Postgres for real use.
How it works
The schedule is a pure function of your current todos, habits, and time blocks โ recomputed fresh whenever anything changes, then written back so the app and your subscribed calendar always agree. Habits only take up as many slots as you still owe for the period; finish one and the rest of the week rebalances.
Run it yourself in a few minutes.
One docker compose up and a browser tab. All your data stays on your box.