Nothing to operate
One small container, bookings in one JSON file you can cat and back up. No database, no accounts, no admin UI.
mig · tiny self-hosted meeting scheduler ·In use
A visitor picks a free slot, and you both get an email with a calendar invite and a cancel link. That's the whole product.
Run it with Docker Compose
# compose.yml
services:
mig:
image: antonshubin/mig:v2.2.0
restart: unless-stopped
ports: ["8080:8080"]
volumes: ["./data:/data:z"]
env_file: .envThis is my real booking page, the same one the Book buttons on this site open. Book only if you want to talk.
One small container, bookings in one JSON file you can cat and back up. No database, no accounts, no admin UI.
Working hours, days off, slot length and the meeting link are environment variables. Change them, restart, done.
Guests see times in their own time zone. Your emails show your time and the guest's side by side.
Every confirmation carries an .ics invite and a signed cancel link. Optional push notifications through NTFY.

Anyone can type any address into the form, so mail to that address says only when the meeting is, with whom, where and how to cancel. The name, the notes and the cancel reason reach you alone.
/embed drops the whole flow into an iframe on your site, resizes itself and takes your site's theme with ?theme=.
<iframe src="https://meet.example.com/embed?theme=dark" title="Book a meeting"
style="width:100%;max-width:36rem;border:0"></iframe>The frame posts its height as its content changes and a message once when a visitor books, so the host page can resize the iframe and count booked calls.
What is not built yet is on the open issues.
The code is on GitHub under the AGPL-3.0 licence.
docker pull antonshubin/mig:v2.2.0From Docker Hub, pinned to v2.2.0.
Need something like this for your team? That's my day job.
internal health probe bridge for services behind SSO proxies.
MCP server that lets AI assistants read and write CalDAV events and tasks.
one-command scaffolder for a self-hosted homelab.