Write Go like you always do. We handle the rest.

Run one command

Type grey deploy or push to GitHub. Every folder in cmd/ becomes its own service.

$
  1. 1

    Write a normal main

    // cmd/api/main.go
    func main() {
      r := chi.NewRouter()
      r.Get("/", hello)
      addr := ":" + os.Getenv("PORT")
      http.ListenAndServe(addr, r)
    }
  2. 2

    Run one command

    $ grey deploy
  3. 3

    Live, then asleep

    You get a URL with HTTPS. When traffic stops your app sleeps and costs nothing, then wakes on the next request.

    • api-acme.greyship.appHTTPS · default
    • api.acme.comHTTPS · custom

Built around Go, not bolted on.

Scale to zero

No traffic, no bill. Idle apps sleep and wake on the next request, usually as a resume in milliseconds, not a cold start. Try it; this demo runs 10× faster.

  1. Asleep$0
  2. Waking18 ms
  3. Runningbilled per second
  4. Grace30s for goroutines
api · last 4sasleep · $0
0 served · billed 0.0s

Your main just works

No Dockerfile, no YAML, no handler wrappers. If it runs with go run, it runs on Greyship.

Dockerfileserverless.ymlhandler wrappergo run .

One repo, whole backend

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

acme-api/cmd/api/cmd/worker/cmd/cron-cleanup/go.mod
apiwebworkerworkercleanupcron

Goroutines that don't die

Apps stay awake for a grace window after the last request, so background work finishes.

last responsegoroutines finishpaused

See inside the Go runtime

Goroutines, heap, GC pauses and one-click pprof flame graphs in the dashboard.

goroutinesheap · GC pause

Never think about ports

Free subdomain, custom domains and HTTPS certificates handled for you.

  • api-acme.greyship.appHTTPS · default
  • api.acme.comHTTPS · custom

Speed only a Go-only platform can give you.

Because every app is a single static Go binary, we can do things general platforms can't.

Wake on handshake

We start waking your app during the TLS handshake, before the request even arrives.

  1. ClientHelloSNI api-acme.greyship.app
  2. resume apistarts now, in parallel
  3. TLS donekeys agreed
  4. GET /app is already awake

Auto-tuned runtime

GOMAXPROCS and GOMEMLIMIT set to your real limits. No throttling, no surprise OOMs.

cpu quotaGOMAXPROCS=1
memory limit 128MBGOMEMLIMIT=115MiB

Faster every deploy

Production profiles feed Go's profile-guided optimisation automatically.

production traffic→cpu profile→default.pgo→next build

govulncheck built in

Every deploy is checked for vulnerable functions your code actually calls.

govulncheck · scanning 142 modules…