GoModel is written in Go. We also seriously considered Rust. This page explains
why Go won, so you can judge whether our reasoning matches your own priorities.
A gateway is a runtime problem
An AI gateway does one job thousands of times per second: accept a request,
translate it, stream a provider’s response back, and get out of the way. The
language you write it in decides how much of your latency budget the gateway
itself eats.
Go fits that shape well:
- Goroutines make streaming cheap. Every open connection to a provider is a
lightweight goroutine, so long-lived streaming responses do not tie up threads
or force an async framework onto the whole codebase.
- A single static binary. GoModel ships as one file with no interpreter,
no virtual environment, and no dependency tree to install at deploy time. The
container image is small and starts in well under a second.
- Predictable memory. Go’s garbage collector is tuned for low pause times,
and the gateway holds very little state per request, so memory stays flat
under load instead of growing with the number of workers.
The benchmarks page shows what this looks like in practice
against gateways written in Python and TypeScript.
Why not Rust
Rust would give us the same deployment shape and, in some paths, lower overhead.
We chose Go anyway, for reasons that have little to do with the language itself:
- Go is far more widely used. In every developer survey and language
ranking we looked at, Go sits well ahead of Rust in adoption. Part of that is
a gentler learning curve: an engineer productive in another language can
read and contribute to a Go codebase within days.
- Contributors are easier to find. A larger pool of engineers who already
know Go means more people can review, extend, and maintain GoModel, and it
keeps the cost of hiring for it reasonable for the companies that run it.
- Enterprises are already moving to Go. Many organizations that
standardized on Java for backend services now treat Go as their next paved
path for new infrastructure. Shipping a gateway in Go means it fits the
tooling, security review, and operational habits those teams already have.
- Go keeps growing. The share of new infrastructure projects written in Go
has increased year over year. Betting on the language that platform teams
are adopting keeps GoModel easy to run and easy to contribute to for the
long term.
Rust remains an excellent language. For a project whose success depends on a
broad base of contributors and operators, Go’s reach mattered more than the
last few percent of throughput.
Why not Python
Python is the default for AI tooling, and most gateways started there. It is a
good language for experimentation and a poor one for a network hop that sits in
front of every model call. The trade-offs are covered in
Our Values and measured on the benchmarks
page.
What this means for you
- Operators get a small, fast, statically linked service that behaves the
same in Docker, Kubernetes, and on bare metal.
- Contributors get a codebase in a language they likely already know, with
a standard toolchain and no framework to learn first.
- Enterprises get a gateway written in a language their platform and
security teams already approve and support.
Last modified on September 8, 2026