Serverless forGo.
Run it on your own server. Deploy any Go backend with one command. Apps sleep when idle and wake on the next request.
$ curl -fsSL https://greyship.tech/install | sudo shFrom a bare server to a live URL.
$ curl -fsSL https://greyship.tech/install | sudo sh Greyship counts installs anonymously (version, OS, a random id). GREYSHIP_NO_TELEMETRY=1 turns it off. Your email, so only you can create the owner account (Enter to skip): [email protected] Get Greyship news by email, about once a month? [Y/n]: y == Docker == gVisor (the sandbox every app runs in) == Node.js (runs the dashboard) == Greyship v0.1.8 == secrets and settings == firewall: only 22, 80 and 443 from outside == starting ✓ Greyship v0.1.8 is running. Open http://203.0.113.7:8000 and create the owner account with [email protected]. Apps you deploy get free addresses like http://<name>.apps-203-0-113-7.sslip.io
$
- Asleepno CPU
- Waking18 ms
- Runningusing CPU
- Grace30s for goroutines
Everything a Go backend needs.
- 01
Your main, as it is
Any router, no Dockerfile, no YAML, no handler wrappers.
http.ListenAndServe(":"+os.Getenv("PORT"), r) - 02
One repo, whole backend
APIs and background workers from one repo. Every cmd/ folder becomes a service.
cmd/api → web · cmd/worker → worker - 03
Goroutines finish
A grace window after the last request lets background work complete.
last request → grace 30s → paused - 04
Safe deploys
A new version only gets traffic after it passes its health check.
health check passed → traffic switched - 05
Rollback in seconds
Go back to any earlier deployment, no rebuild.
grey rollback → ✓ live, no rebuild - 06
Your domains, with HTTPS
Add a domain, create one record, and it turns green by itself.
api.acme.com ✓ valid configuration - 07
Isolated by default
Every app runs in its own gVisor sandbox and network.
runsc · own network · no route to the host
One server runs everything.
Your apps, your data and your users, on a machine you control. The owner adds people and decides how much each may use. Backups, restores and upgrades are one command each.
New releases and what's next, about once a month.
