Keeper.sh
Syncs events between Google, Outlook, iCloud, Fastmail, CalDAV and ICS calendars, and exposes a REST API and MCP server to manage them all.
About
Keeper.sh pulls events from Google Calendar, Outlook, iCloud, Fastmail, CalDAV servers and remote iCal or ICS links, then pushes them to one or many destination calendars so time slots line up across all of them. Google, Outlook, iCloud, Fastmail and CalDAV work as both source and destination, while ICS links are pull-only.
It is built for people juggling several calendars at once and for anyone who wants AI agents to manage them through the REST API and MCP server. Deletions are tracked by a mapping row that outlives the event it pointed at, so an event removed at the source still gets cleaned from the destination, and the sweep only ever touches events Keeper.sh created.
Key features
Google, Outlook, iCloud, Fastmail and CalDAV each work as a source or a destination
Remote iCal and ICS links can be ingested pull-only
Incremental syncing on Google and Outlook via provider sync tokens
Pushes aggregate events to one or more calendars
Per-source privacy controls strip event names, descriptions and locations
REST API under /api/v1 with API token authentication
MCP server gives AI agents access to your calendars
Combined iCal feed you can subscribe to from any calendar app
Requirements
PostgreSQL and Redis, with the same Redis instance shared by the API, cron and worker services. A reverse proxy in front of the keeper-standalone image is the recommended setup. You register your own Google and Microsoft OAuth apps for sign-in. Self-hosting includes every Pro feature, so there are no account or mapping limits.
Ways to run it
Docker image: keeper-standalone
Docker image: keeper-services
Five granular Docker service images
Docker Compose for local development