Show HN: Rivet – Open-source game server management with Nomad and Rust
Hey HN!

Rivet is an OSS game server management tool that enables game developers to easily deploy their dedicated servers without any infra experience.

We recently open-sourced Rivet after working on it for the past couple of years. I wanted to share some of my favorite things about our experience building this with the HN community.

My cofounder and I have been building multiplayer games together since middle school for fun (and not much profit [1]). In HS, I stumbled into building the entire infrastructure powering [Krunker.io](http://Krunker.io) (acq by FRVR) & other popular multiplayer web games. After wasting months rebuilding dedicated server infrastructure + DDoS/bot mitigation over and over, we started building Rivet as a side project.

Some interesting tidbits:

- ~99% Rust and a smidgeon of Lua.

- Bolt [2] – Cluster dev & management toolchain for super configurable self-hosted Rivet clusters. It’s way over-engineered.

- The entire repo is usable as a library. Our EE repo uses OSS as a submodule.

- Traefik used as an edge proxy for low-latency UDP, TCP+TLS, & WSS traffic.

- Apache Traffic Server is under-appreciated as a large file cache. Used as an edge Docker pull-through cache to improve cold starts & as a CDN cache to lower our S3 bill.

- ClickHouse used for analytics & game server logs. It’s so simple, I have nothing more to say.

- Serving Docker images with Apache TS is simpler & cheaper than running a Docker pull-through cache.

- Nebula has been rock solid & easy to operate as our overlay network.

- We use Redis Lua scripts for complex, atomic, in-memory operations.

- Obviously, we love Nix.

- We keep a rough SBOM [3].

- Licensed under Apache 2.0 (OSI-approved). We seriously want people to run & tinker with Rivet themselves. We get a lot of questions about this: [4] [5]

Some HN-flavored FAQ:

> Why not build on top of Agones or Kubernetes?

Nomad is simpler & more flexible than Agones/Kubernetes out of the box, which let us get up and running faster. For example, Nomad natively supports multiple task drivers, edge workloads, and runs as a standalone binary.

> [Fly.io](http://Fly.io) migrated off of Nomad, how will you scale?

Nomad can support 2M containers [6]. Some quick math: avg 8 players per lobby * 2M lobbies * 8 regional clusters = ~128M CCU. That’s well above PUBG’s 3.2m CCU peak.

Roblox’s game servers also run on top of Nomad [7]. We’re in good company.

> Are you affected by the recent Nomad BSL relicensing [8]?

Maybe, see [9].

> How do you compare to $X?

Our core goal is to get developers up and running as fast as possible. We provide extra services like our matchmaker [10], CDN [11], and KV [12] to make shipping a fully-fledged multiplayer game require only a couple of lines of code.

No other project provides a comparably accessible, OSS, and comprehensive game server manager.

> Do you handle networking logic?

No. We work with existing tools like FishNet, Mirror, NGO, Unreal & Godot replication, and anything else you can run in Docker.

> Is anyone actually using this?

Yes, we’ve been running in closed beta since Jan ‘22 and currently support millions of MAU across many titles.

[1]: https://github.com/rivet-gg/microgravity.io

[2]: https://github.com/rivet-gg/rivet/tree/main/docs/libraries/b...

[3]: https://github.com/rivet-gg/rivet/blob/main/docs/infrastruct...

[4]: https://github.com/rivet-gg/rivet/blob/main/docs/philosophy/...

[5]: https://github.com/rivet-gg/rivet/blob/main/docs/philosophy/...

[6]: https://www.hashicorp.com/c2m

[7]: https://www.hashicorp.com/case-studies/roblox

[8]: https://www.hashicorp.com/blog/hashicorp-adopts-business-sou...

[9]: https://news.ycombinator.com/item?id=37084825

[10]: https://rivet.gg/docs/matchmaker

[11]: https://rivet.gg/docs/cdn

[12]: https://rivet.gg/docs/kv