Keeper
Keeper is a TypeScript-based application that provides calendar syncing and booking tool.
Open-source calendar synchronization, honestly reviewed. Built by a founder who needed it, for founders who need it.
TL;DR
- What it is: Open-source (AGPL-3.0) calendar sync tool — pulls events from public iCal/ICS feeds and pushes them as busy blocks to your Google, Outlook, iCloud, or CalDAV calendars so overlapping meetings stop happening [README].
- Who it’s for: Founders, consultants, and anyone running 2–4 separate work/personal/client calendars who needs their availability to look consistent across all of them [README][5].
- Cost: Self-hosted is free. Cloud starts at $0/mo (30-min sync) or $5/mo for 1-minute sync [website].
- Key strength: Simple architecture that does one thing well — aligns time slots across calendar accounts. Includes a read-only MCP server so AI agents like Claude Desktop and Cursor can query your calendar state [README].
- Key weakness: One-way sync only. iCal feeds are read-only by design, so changes made on a destination calendar don’t flow back to the source. Bidirectional sync is architecturally impossible without a different product [5].
- Honest context: 770 GitHub stars, three visible contributors, built by a single founder who needed it for his own workflow. The tool works, but long-term maintenance is a real question mark for anyone betting on it at scale.
What is Keeper
Keeper is a calendar sync tool built by Rida F’kih, a founder simultaneously running three calendars — one for his AI governance startup Sedna, one for work, and one for personal — and growing tired of meetings colliding. He tried other sync services, found them unreliable or tedious to clean up after, and built Keeper instead [README].
The pitch is short: “Keeper is a simple and open-source calendar syncing tool. It allows you to pull events from remotely hosted iCal or ICS links, and push them to one or many calendars so the time slots can align across them all.” [README]. No workflow automation, no AI scheduling optimization, no rich event mirroring — just time slot alignment. That clarity of scope is one of the project’s better qualities.
Keeper is 770 GitHub stars, AGPL-3.0 licensed, and lives at https://github.com/ridafkih/keeper.sh. The website lists three contributors. There is no apparent organizational backing. This is a small, early-stage, founder-built project that happens to be well-documented and well-scoped.
One important research caveat before going further: searching “Keeper review” returns almost entirely coverage of Keeper Password Manager (keepersecurity.com) — an enterprise security product from a completely different company. The name collision is real, and it makes independent research on this calendar tool frustrating. Sources [1] through [4] in our research set all cover the password manager. Only source [5] covers keeper.sh directly, via a SyncDate competitor comparison.
Why people choose it
The most useful third-party perspective available pits Keeper.sh against SyncDate, a proprietary SaaS calendar sync competitor. That comparison [5] surfaces the practical trade-offs clearly:
On sync speed: Keeper uses polling — every 30 minutes on the free cloud tier, every minute on Pro. SyncDate uses webhooks and advertises ~4-second sync. For most use cases, 30 minutes versus 4 seconds is irrelevant. But if you rely on tools like Calendly reading your calendar availability, a 30-minute lag can result in double-bookings when meetings are scheduled in a fast-moving window [5]. The 1-minute Pro tier largely eliminates this risk.
On bidirectional sync: This is the most important architectural fact about Keeper. iCal/ICS feeds are read-only by design — they’re subscription formats, not write protocols. Keeper can pull from a source calendar’s feed and push events to a destination, but any changes made on the destination calendar stay there. They don’t propagate back. SyncDate supports true two-way sync [5]. Keeper cannot without becoming a fundamentally different product.
On privacy: Keeper strips event details before syncing. The event arrives at the destination as an anonymous busy block — no title, no attendee list, no description. Your calendar data doesn’t need to cross into another account’s context. SyncDate does similar by default but allows full detail preservation per sync configuration [5]. For a founder whose calendar contains investor meeting titles, client names, and personal appointments, this privacy-first default is meaningful.
On open source: Keeper is fully auditable under AGPL-3.0 and self-hostable — your calendar data can stay on your own server. SyncDate is proprietary closed-source SaaS. If you’re the kind of person who thinks carefully about what data flows through which vendor’s infrastructure, the distinction matters [5][README].
The creator’s README is admirably direct about what Keeper doesn’t do: it doesn’t sync event details (titles, descriptions, attendees), it only reads from publicly accessible ICS URLs, and its MCP server is read-only. The README explicitly suggests OneCal as an alternative for users who need full event detail mirroring [README]. That kind of honest scope-drawing is rare and worth noting.
Features
Core sync engine:
- Pull events from any publicly accessible ICS or iCal feed [README]
- Push aggregated events to one or more destination calendars [README]
- Supported providers: Google Calendar, Microsoft Outlook, Office 365, Apple iCloud, FastMail, Nextcloud, Radicale, CalDAV, ICS/iCal feeds [website]
- Sync interval: every 30 minutes (free cloud), every 1 minute (Pro cloud), tunable on self-hosted [website][5]
- Orphan cleanup: if a source event disappears, Keeper deletes the corresponding destination event [README]
- Backwards-compatibility purge: stale Keeper-created events with no local tracking record are also removed [README]
- Events flagged with a
@keeper.shsuffix on the remote UID (or a"keeper.sh"category for Outlook, which doesn’t support custom UIDs) [README]
Privacy controls:
- Events synced as time blocks — summaries, descriptions, and attendees are not copied by default [README]
- Configurable per calendar: you control what the synced event title says (or whether it shows anything) [website]
- OAuth tokens encrypted at rest [5]
MCP server:
- Read-only calendar access for Claude Desktop, Cursor, Windsurf, and other MCP-capable AI tools [README]
- Agents can list calendars and query events — they cannot create, modify, or delete [README]
- Free tier caps at 25 API/MCP calls per day; Pro is unlimited [website]
Cloud Pro additions ($5/mo):
- 1-minute sync interval [website]
- Unlimited linked accounts (free caps at 2) and unlimited sync mappings (free caps at 3) [website]
- Aggregated iCal feed — Keeper generates a combined feed of all synced calendars that you can subscribe to from any calendar client [website]
- iCal feed customization, event filters and exclusions, priority support [website]
Pricing: SaaS vs self-hosted math
Keeper cloud:
- Free: $0/mo — 30-minute sync, up to 2 linked accounts, up to 3 sync mappings, 25 API/MCP calls/day [website]
- Pro: $5/mo — 1-minute sync, unlimited accounts and mappings, aggregated iCal feed, event filters and exclusions, full API/MCP access [website]
Self-hosted:
- License: $0 (AGPL-3.0) [README]
- VPS: ~$5–6/mo on Hetzner or Contabo for a 1–2GB RAM instance running Bun, PostgreSQL, Redis, and Caddy
- All Pro-equivalent features, fully under your control
How this compares:
- SyncDate starts at EUR 4.69/mo (~$5/mo) for 9 calendars — proprietary SaaS, webhook-based, bidirectional [5]
- OneCal positions itself for full event detail sync, which Keeper explicitly doesn’t offer [README]. Pricing not in available data.
- Google Calendar is free but doesn’t natively sync across separate Google accounts — it supports read-only ICS subscriptions, not push sync
The honest savings math here isn’t dramatic. Calendar sync tools are cheap. The real argument for self-hosting Keeper is data sovereignty, not bill reduction. Your calendar contains meeting titles with client names, investor conversations, personal health appointments. Routing any of that through a third-party SaaS server is a trust decision. Self-hosted Keeper keeps all of it on infrastructure you control [5][README].
For most founders with 2–3 calendars, the $5/mo Pro cloud tier is a completely reasonable trade — fast sync, no setup, privacy handled reasonably. Self-host if Docker is already in your toolkit and you want full control.
Deployment reality check
The README documents the stack clearly: Bun runtime, Docker Compose, PostgreSQL, Redis, and a Caddy reverse proxy for automatic HTTPS. The dev environment targets https://keeper.localhost and the architecture table lays out every port [README].
What you actually need:
- A Linux VPS with 1–2GB RAM
- Docker and Docker Compose installed
- A domain (Caddy handles TLS automatically)
- Public ICS/iCal URLs for your source calendars
- OAuth credentials for destination calendars (Google, Outlook, iCloud)
What the setup looks like:
The README walks through generating a local root CA, running bun install, and bun dev for local development. Production deployment follows the same Docker Compose pattern, spinning up the API, web frontend, MCP, and cron services alongside PostgreSQL and Redis [README]. For a developer familiar with this stack, it’s not unusual.
What can go sideways:
- Public ICS feeds required. Many corporate Google Workspace setups restrict ICS sharing by default. If your work calendar doesn’t expose a public feed, you can’t use it as a Keeper source [README]. Check this before committing to setup.
- One-way sync confusion. If you set up sync from A→B and also from B→A trying to approximate bidirectional sync, you’ll create duplicate events on both sides. The engine isn’t designed for this [5][README].
- AGPL-3.0 copyleft. If you embed Keeper in a SaaS product or distribute modifications, AGPL requires you to open-source those changes. Fine for personal use, worth reading if you intend to build on it commercially [README].
- Small team risk. Three contributors, no organizational backing, built by a founder who is also running an AI startup. Keeper works today. Maintenance trajectory is uncertain.
Realistic setup time: 1–2 hours for a developer comfortable with Docker, including VPS provisioning and OAuth connections. Non-technical founders should use the cloud Pro plan — there’s no meaningful reason to self-host if Docker is new to you.
Pros and Cons
Pros
- Free to self-host under AGPL-3.0. Your calendar data stays on your server. No vendor lock-in, no data leaving your infrastructure [README].
- Clean, honest scope. Does one thing — time slot alignment across calendar accounts — and documents clearly what it doesn’t do [README].
- Broad provider support. Google Calendar, Outlook, Office 365, iCloud, FastMail, Nextcloud, Radicale, CalDAV, ICS feeds — covers every major calendar platform a founder is likely to use [website].
- MCP server built in. AI tools with MCP support get read-only access to your combined calendar state without any additional integration work [README].
- Privacy-first defaults. Events arrive at the destination as anonymous busy blocks. Event content doesn’t cross calendar account boundaries by default [README][5].
- $5/mo cloud Pro is honest. No per-event pricing, no upsells to access basic functionality. The free/Pro split is logical [website].
- Self-hosted edition is full-featured. No capability castration compared to the cloud version [README].
Cons
- One-way sync only. The fundamental architectural constraint. iCal/ICS feeds cannot accept writes, so Keeper cannot be bidirectional. If you modify a destination calendar, nothing flows back [5][README].
- Polling, not webhooks. 30-minute free-tier lag can cause availability conflicts in time-critical scheduling workflows [5]. Pro brings it to 1 minute, self-hosted is configurable.
- Public ICS feeds only. Private or credential-gated calendar feeds are unsupported. Corporate calendar setups often don’t expose public ICS [README].
- Timeslots, not event details. Titles, descriptions, and attendees don’t follow events to the destination calendar. Intentional, but a hard limit [README].
- MCP server is read-only. AI agents can view calendar state but cannot book, modify, or delete events [README].
- Small project, uncertain longevity. 770 stars, three contributors, no disclosed organizational backing. For a business-critical workflow, this is a meaningful risk.
- AGPL-3.0, not MIT. Commercial embedding requires open-sourcing modifications [README].
- Name collision. “Keeper” surfaces Keeper Password Manager in almost every search, making independent research on this tool unnecessarily difficult.
Who should use this / who shouldn’t
Use Keeper if:
- You’re juggling 2–4 calendars across work, personal, and freelance contexts and meetings keep landing on top of each other.
- You want a set-it-and-forget-it busy-block sync that runs quietly in the background.
- Privacy matters and you don’t want event details crossing calendar account boundaries.
- You use Claude Desktop, Cursor, or other MCP-capable AI tools and want them to have calendar context.
- You’re comfortable with Docker, or happy paying $5/mo not to be.
Skip it if you need bidirectional sync. Any change on a destination calendar needs to propagate back. Keeper can’t do this with its iCal architecture. Look at SyncDate [5] or OneCal [README].
Skip it if you need event details to travel with events. Titles, descriptions, attendees syncing across accounts is a hard no. The README itself points you to OneCal for this [README].
Skip it if your source calendars don’t expose public ICS feeds. Verify this before spending setup time. Many enterprise Google Workspace configurations lock this down by default.
Skip it if you need a battle-tested, supported tool for a critical production workflow. This is a small founder project, not an enterprise product.
Alternatives worth considering
- SyncDate (syncdate.app) — Proprietary SaaS, webhook-based near-real-time sync, bidirectional, EUR 4.69/mo. Better for time-sensitive availability management. Closed source, your data on their servers [5].
- OneCal (onecal.io) — Explicitly recommended by Keeper’s own README for users who need full event detail sync. Pricing not in available data, but positioned for richer sync scenarios [README].
- Nextcloud Calendar — If you’re already running a Nextcloud instance, CalDAV integration covers multi-account calendar management in a self-hosted context. Heavier infrastructure, broader capability.
- Reclaim.ai — AI-powered scheduling optimization, not just sync. Different category entirely, but worth considering if you’re solving scheduling friction broadly rather than just account alignment.
- Fantastical — Calendar client that reads multiple accounts in one view. Not a sync service, but solves the “I need to see all my calendars in one place” problem without syncing anything.
For a non-technical founder who needs bidirectional sync and doesn’t want to touch Docker: SyncDate. For a technical founder who wants self-hosted, AGPL-3.0, privacy-first, one-way time-block sync at zero recurring cost: Keeper.
Bottom line
Keeper.sh is a narrow tool that solves a specific problem without pretending it’s something bigger. You have multiple calendars, meetings keep colliding, and you need the time slots to stay aligned. Keeper pulls from iCal feeds, pushes busy blocks to your destination accounts, and prunes orphan events when source events change. The $5/mo cloud Pro tier is fair. Self-hosted on a cheap VPS is free and gives you full capability. The built-in MCP server is a genuine bonus for anyone using AI tools that benefit from calendar context.
The limits are real, and the project documents them honestly: one-way sync only, timeslots not event details, public ICS sources only, MCP read-only. If your use case fits inside those limits — and for the “availability stays consistent across accounts” use case, it usually does — Keeper does it cleanly and without drama. If you need bidirectional sync or full event detail mirroring, you’ve hit the wall and should look at OneCal or SyncDate instead. The unfortunate name collision with Keeper Password Manager will keep this tool undiscovered by most people who could use it, which is a pity, because it fills its lane well.
Sources
- Vlad, SyncDate Blog — “SYNCDATE vs Keeper: Features, Pricing & Architecture Compared” (April 11, 2026). https://syncdate.app/compare/syncdate-vs-keeper (This article covers keeper.sh, the open-source calendar sync tool — not Keeper Password Manager, which shares the name)
Primary sources:
- GitHub repository and README: https://github.com/ridafkih/keeper.sh (770 stars, AGPL-3.0 license)
- Official website and pricing: https://keeper.sh
Research note: Sources [1]–[4] in the research set (keepersecurity.com, cybernews.com, techradar.com, tomsguide.com) all cover Keeper Password Manager — a separate enterprise security product from a different company — and were not used in this review.
Features
Authentication & Access
- Single Sign-On (SSO)
Integrations & APIs
- Plugin / Extension System
- REST API
- Webhooks
AI & Machine Learning
- AI Agents
Replaces
Related Booking & Scheduling Tools
View all 44 →Cal.com
41KCal.com is the open-source scheduling platform for individuals and teams — a fully customizable, self-hostable alternative to Calendly with round-robin, routing forms, and built-in video.
Postiz
27KStreamline your social media with Postiz. Schedule posts, analyze performance, and manage all accounts in one place.
QloApps
13KFree and open-source hotel reservation system and booking engine
Buildbot
5.4KBuildbot is a self-hosted booking & scheduling replacement for Azure DevOps.
Inngest
5.1KInngest gives you simplify backend processes on your own infrastructure.
Rallly
5KFor event management, Rallly is a self-hosted solution that provides user-friendly, tool for coordinating events and meetings without the hassle of...