bluegreen runs a TCP server behind a tiny supervisor.
It keeps one stable process running (blue), starts a second one on SIGHUP (green), and promotes green after a short stability window. The old process is then terminated. If either process dies, it is restarted.
The listening socket stays open across restarts, and the child process receives it via LISTEN_PID/LISTEN_FDS style socket activation env vars.
go run . -L 127.0.0.1:8080 ./your-server [args...]Send SIGHUP to trigger a rollout.