Skip to content
OpenCal

Open source · Self-hostable · Headless REST + MCP

Scheduling infrastructure for your team

Availability, routing, assignment, and bookings behind one binary and a Postgres database. Drive it from the booking page, the REST API, or an MCP tool — the same commands, the same guarantees.

The real booking page — the slot picker, the stated time zone, and the explicit confirm are the product, not a mock-up drawn for this page.

0
emails to schedule a meeting
1
binary and a Postgres database
REST + MCP
same commands, two surfaces
1 page
to book, with an explicit confirm

One flow, from the first question to the follow-up

Not just a booking link. Every stage of a scheduled meeting is a command with an audit trail behind it, so the same booking can be driven by a form, an API call, or an agent.

  1. IntakeA routing form asks only what the booking needs, with conditional steps and validation.
  2. RouteAnswers select the destination event and the pool of eligible hosts by typed attributes.
  3. AssignOne-to-one, group, collective, or round-robin — the assignment mode picks the host.
  4. HoldThe chosen slot is held while the attendee confirms; abandoned holds expire on their own.
  5. ConfirmConfirmation snapshots the answers immutably and mirrors the event onto the host calendar.
  6. Follow upWorkflows send reminders and handle cancellation and reschedule from an opaque link.

What you get, stated plainly

Headless by default
Every booking action is a REST endpoint and an MCP tool, so scheduling drops into an existing product or an AI agent without a second integration.
Assignment modes
One-to-one, group with capacity, collective with named roles, and round-robin — configured per event type, not bolted on.
Real time zones
Times are stated in the reader's own zone by full name, never an ambiguous abbreviation, and re-confirmed in both zones before the commit.
Calendars stay honest
Connected calendars block availability and receive booking events; a calendar that fails to sync fails closed rather than double-booking.
Yours to run
Open source and self-hostable: one binary, a Postgres database, and no external service required to take a booking.

Ready to set it up?

Free to use. Self-host it, or ask an administrator for an invitation to a workspace.