Open source · AGPL-3.0

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.

On a fresh Ubuntu or Debian server, as root
$ curl -fsSL https://greyship.tech/install | sudo sh
How it works

From a bare server to a live URL.

01Install it on a serverOne command on a fresh Ubuntu or Debian box. No domain needed to start.
root@your-server
$ 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
02Deploy your Go backendgrey deploy in any Go project, or a push to GitHub. It finds every main package and builds it.
~/testapi
$ 
03It sleeps, then wakesIdle apps pause after 30 seconds and hold no CPU. The next request resumes them.
testapi · webtry it: send a request
  1. Asleepno CPU
  2. Waking18 ms
  3. Runningusing CPU
  4. Grace30s for goroutines
api · last 4sasleep · no CPU
0 served · running 0.0s
Built for Go

Everything a Go backend needs.

Every feature
  1. 01

    Your main, as it is

    Any router, no Dockerfile, no YAML, no handler wrappers.

    http.ListenAndServe(":"+os.Getenv("PORT"), r)
  2. 02

    One repo, whole backend

    APIs and background workers from one repo. Every cmd/ folder becomes a service.

    cmd/api → web · cmd/worker → worker
  3. 03

    Goroutines finish

    A grace window after the last request lets background work complete.

    last request → grace 30s → paused
  4. 04

    Safe deploys

    A new version only gets traffic after it passes its health check.

    health check passed → traffic switched
  5. 05

    Rollback in seconds

    Go back to any earlier deployment, no rebuild.

    grey rollback → ✓ live, no rebuild
  6. 06

    Your domains, with HTTPS

    Add a domain, create one record, and it turns green by itself.

    api.acme.com ✓ valid configuration
  7. 07

    Isolated by default

    Every app runs in its own gVisor sandbox and network.

    runsc · own network · no route to the host
Self-hosted

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.

internet · :80 :443
your-server · ubuntu 24.04 · 4 GB● running
RouterHTTPS, custom domains, wakes sleeping apps
API and dashboardone API under the CLI and the web
Your appseach in its own gVisor sandbox
BuildergVisor, one build at a time
Postgres and storage127.0.0.1 only · greyship-admin backup
Everything above is what one install command sets up. Nothing runs anywhere else.
The Go gopher, waving

Open source. On your server. Only Go.

Newsletter

New releases and what's next, about once a month.

About once a month. Unsubscribe in one click.