The waitlist you own, for every product you launch
Lobby gives each product a signup form, double opt-in, a place in line, referral links that move people up and invite waves. It's one binary and one SQLite file, with no monthly bill.
$ docker run -p 8080:8080 -v lobby:/data ghcr.io/rohansx/lobby
Visitor joins from your landing page → confirms by email → sees their place in line → shows up in your dashboard.
Everything a launch needs, nothing you'll pay for monthly
The parts hosted waitlist tools charge for are included: referrals, invites, webhooks, broadcasts and a dashboard for all your products.
One dashboard for every product
Signups per day, confirm rate, top sources and top referrers. Run the waitlists for all your side projects from one install.

Referrals that move people up
Every confirmed friend moves the referrer 10 places up (configurable), or keep a strict first-come line.
Credit only lands after the friend confirms, and it's capped per IP address and per hour, so a script can't farm it.
Spam handled, no CAPTCHA
A honeypot field, timing checks, rate limits, a disposable-domain list and MX lookups keep bots out without annoying people.
Invite waves
Click Invite next 50. The front of the line gets a magic link and a code bound to their address. Your app redeems it with one API call.
Know the moment it happens
An email to you for each new signup, with its source and referrer. Signed webhooks and a Slack preset for everything else.
Emails that land, and look right
Double opt-in, status, invite and launch-broadcast emails through Resend or any SMTP server, with one-click unsubscribe and bounce suppression.

Private by default
IP addresses are kept only as keyed hashes and cleared after 30 days. Public pages set no cookies. Consent text is versioned per signup. Export to CSV or NDJSON any time.

From first visit to first invite
Sign up
From your widget, a plain HTML form or the hosted page. Gmail dots and +tags fold together, so nobody signs up twice.
Confirm
The confirmation link opens their status page: their place in line, how many are behind them, and a link to share.
Refer
Friends who join and confirm through that link move the referrer up the line. Your dashboard shows who's driving growth.
Invite
Send invites in waves from the front of the line, then a launch broadcast to everyone when you're live.
A status page worth sharing
Every confirmed signup gets their own page showing where they stand and a referral link to copy. It's server-rendered, needs no JavaScript and sets no cookies.
- Place in line and how many people are behind
- One-click copy of their referral link
- Your project name, with no Lobby account needed to view it

Every number that matters, in light or dark
See where signups come from, who refers the most, and how many confirmed. Invite, export, broadcast and manage webhooks from the same place.

Drop it into any site in one line
Every project gives you three ways in. The dashboard shows each snippet with your keys already filled in.
Your launch list is your most valuable list
It's the people who asked to hear from you before you existed. Keep it on your own server.
| Lobby | Typical hosted waitlist | |
|---|---|---|
| Price | Free and MIT licensed. Runs on a $5 VPS next to your other apps | A monthly plan, often priced per list or per signup |
| Where your list lives | One SQLite file on your server, with continuous S3 backup via Litestream | Their database |
| Multiple products | Unlimited projects in one install | Often one list per plan |
| Referrals and invites | Included, with fraud checks | Often on higher tiers |
| Email sender | Your domain, through Resend or any SMTP server | Varies, often their domain |
| Leaving | CSV or NDJSON export, or just copy the file | Export, if your plan includes it |
Running in under a minute
Start the container, open it in a browser, create your admin account and your first project. Then paste a snippet onto your site.
Docker
The image is multi-arch (amd64 and arm64) and includes Litestream for backups.
docker run -d -p 8080:8080 \ -v lobby-data:/data \ -e LOBBY_BASE_URL=https://wait.you.com \ -e RESEND_API_KEY=re_… \ ghcr.io/rohansx/lobby:latest
Dokploy, Coolify, any VPS
Point your PaaS at the image or the repo, mount a volume at /data and set the public URL. A Dokploy template is included.
git clone https://github.com/rohansx/lobby cd lobby LOBBY_BASE_URL=https://wait.you.com \ docker compose up -d
Drive it from the CLI
The binary is also a CLI, and every instance serves its whole API at /llms.txt for coding agents.
export LOBBY_URL=https://wait.you.com export LOBBY_KEY=sk_… lobby stats lobby invite --next 50 lobby export --format csv > list.csv
Questions
Is it really free?
Yes. Lobby is MIT licensed with no paid tier, no signup limits and no phone-home. You pay for the server it runs on and for your email provider, and Resend's free tier is enough for a small launch.
What do I need to run it?
Anything that runs a Docker container: a small VPS, Dokploy, Coolify, Fly.io or Railway. It idles at about 20 MB of memory. Mount a volume at /data so your list survives restarts.
Can I run waitlists for several products?
Yes. Each project has its own form, keys, allowed origins, emails, referral rules and settings, and they all share one dashboard.
How do I stop people gaming referrals?
A referral only counts after the friend confirms their email, credits are capped per IP address and per hour, and addresses are normalized so Gmail dots and +tags can't create duplicates. Disposable domains are rejected.
What about backups?
Set LITESTREAM_REPLICA_URL to any S3-compatible bucket and the database is replicated continuously. On an empty volume Lobby restores from the replica automatically.
How do I let people in when I launch?
Click Invite next N in the dashboard or run lobby invite --next 50. Each person gets a magic link and a code. Your product calls POST /v1/invites/redeem, or you send a launch broadcast to everyone at once.
Start your waitlist today
One command, your own server, and a list that stays yours.
