Calendar feed
Conatus publishes your dated tasks as an iCalendar feed that any calendar app can subscribe to.
Enabling it
Section titled “Enabling it”Settings → Calendar feed → Enable calendar feed. You get a URL:
https://tasks.example.com/api/ical/8Jx3nQ7pR2vK…Copy it and add it as a subscribed calendar:
| Client | Where |
|---|---|
| Apple Calendar | File → New Calendar Subscription |
| Google Calendar | Other calendars → From URL |
| Thunderbird | New Calendar → On the Network → iCalendar (ICS) |
| Outlook | Add calendar → Subscribe from web |
Refresh intervals are the client’s business, not the server’s. Google in particular can take many hours to pick up changes.
What the feed contains
Section titled “What the feed contains”- Your incomplete tasks that have a due date, up to 500.
- Each becomes a
VEVENTwith the task name as its summary and the description, if any, as its description. - Tasks with a due time get a timed event; tasks without one get an all-day event.
Not included: completed tasks, tasks with no due date, deadlines, durations, priorities, labels, subtask structure, comments, attachments, reminders, or tasks in projects shared with you. The feed is read-only. Editing an event in your calendar app does nothing to Conatus.
Times are floating local time, with no timezone attached. Conatus stores a due
time as a wall-clock value rather than an instant in a specific zone, so there is
no correct timezone to declare. 09:00 shows as 09:00 in whatever zone the
calendar client is displaying.
Security
Section titled “Security”Regenerate issues a new token and invalidates the old URL immediately, so
every subscribed client has to be re-pointed. Disable removes the token entirely
and the URL starts returning 404.
Regenerate whenever you suspect the link has leaked, or after removing it from a shared machine.
Behind a reverse proxy
Section titled “Behind a reverse proxy”The copyable URL is built from the origin your browser is using, so it is correct
as long as you are reaching Conatus at its real external address. If you set up
AUTH_URL and PUBLIC_BASE_URL, that is what
you will see.
The feed route needs no session, so it must be reachable by whatever machine your calendar client syncs from. A phone on mobile data needs the instance published over HTTPS.
Not what you wanted?
Section titled “Not what you wanted?”- For email at a specific time, use reminders.
- For two-way access from a script or an agent, use the REST API or the MCP server.
- For push notifications on changes, use webhooks.
