Vercel is $20/user/mo (Pro). Semaphore is a self-hosted alternative at $0.99/mo. Here's when each makes sense.
| Semaphore | Vercel | |
|---|---|---|
| Hosting | Self-hosted, your infra | Managed SaaS (cloud only) |
| Data location | Your server, your disk | Vercel's cloud |
| Free tier | 3 projects | Paid only |
| Pro pricing | $0.99/mo | $20/user/mo (Pro) |
| Dependencies | None (single binary + SQLite) | N/A (managed) |
| Setup time | ~30 seconds | Account signup |
| Dashboard | Built-in at /ui | Cloud dashboard |
| License | BSL 1.1 | Proprietary SaaS |
Semaphore is a single Go binary with embedded SQLite. Install it with one command, and you are running in under a minute. Your data stays on your server.
curl -fsSL https://stockyard.dev/semaphore/install.sh | sh
Choosing between Semaphore and Vercel is less about which tool is better and more about what kind of infrastructure you want to maintain. Vercel at $20/user/mo (Pro) handles hosting, backups, and uptime for you. Semaphore at $0.99/mo shifts that responsibility to you — but also shifts the control. If you already run servers, Semaphore adds negligible operational burden. If you do not, Vercel removes it entirely.
The operational difference is significant. Vercel requires you to trust their infrastructure, their security practices, and their business continuity. Semaphore requires you to run a process and keep the data directory backed up. If your server dies, restore the binary and the SQLite file to a new server. The entire recovery procedure fits in a single paragraph because there is nothing else involved.
The migration path from Vercel depends on how much history you need to bring over. If you only need active records, a manual re-entry through Semaphore's dashboard might be faster than writing a migration script. If you need full history, export from Vercel and use Semaphore's POST API to import records. Either way, the process is measured in hours, not weeks.
Single binary. Free to start. $0.99/mo for Pro.