GoModel vs TensorZero

TensorZero is a Rust LLMOps platform: a gateway plus observability, evals, and model optimization. Its repository was archived on 12 June 2026 and gets no more releases. GoModel is an actively developed Go gateway focused on routing, access control, and cost.

Active
vs archived
TensorZero is read-only since 12 June 2026
6/6
API workloads served
vs 2/6 for TensorZero
23×
lower p50 latency
2.2 ms vs 50.0 ms
8.7×
lower p99 latency
6.9 ms vs 60.1 ms

The benchmark

A gateway sits on every request, so its overhead adds up. Same machine, same mock backend, one gateway at a time.

Median latency
p50, chat completions · lower is better
23× faster
GoModel2.2 ms
TensorZero50.0 ms
Tail latency
p99, chat completions · lower is better
8.7× lower
GoModel6.9 ms
TensorZero60.1 ms
Time to first token
p50, streaming chat · lower is better
TensorZero 3.8× faster
GoModel5.0 ms
TensorZero1.3 ms
Throughput
peak sustained · higher is better
TensorZero 1.1× more
GoModel4,498 req/s
TensorZero4,784 req/s
Memory
peak RAM · lower is better
1.4× less
GoModel74 MB
TensorZero107 MB
Cold start
container start to first request · lower is better
TensorZero 1.4× faster
GoModel0.8 s
TensorZero0.6 s
Docker image
compressed pull size · lower is better
4.3× smaller
GoModel21 MB
TensorZero88 MB

GoModel 0.1.98 vs TensorZero 2026.6.0 on an AWS c7i.large (2 vCPU, 4 GiB), run 20260928-043817 (28 September 2026). 20,000 requests per workload at concurrency 10, five randomized trials. API workloads served: GoModel 6/6, TensorZero 2/6. TensorZero wins three rows, and one cause explains the profile: its server leaves Nagle's algorithm on, so each non-streaming response on a reused connection waits about 40-50 ms for the client's delayed ACK. That idle stall, not compute (5.7% CPU), sets its p50 and p99. Its first streamed token arrives in 1.3 ms, but its streaming p99 is pinned near 60 ms, and its peak throughput grows with every connection the sweep opens (about 19 req/s each) rather than hitting a ceiling. It has no Responses or Anthropic Messages endpoint, so 4 of 6 workloads failed. Rerun it with one command.

Beyond speed

Different goals. TensorZero optimizes models from feedback; GoModel runs the shared gateway.

GoModelTensorZero
Project statusActive, releases weeklyArchived 12 June 2026, read-only
PurposeGateway and control planeLLMOps: gateway, evals, optimization
Client APIsOpenAI Chat, Responses, Anthropic MessagesNative /inference, OpenAI chat, embeddings
Infra for logs, keys, limitsNone; SQLite built inPostgres or ClickHouse, optional Valkey
Keys, budgets, rate limitsAPI keys, budgets, rate limitsAPI keys, token and cost limits
Fine-tuning, prompt optimizationNot offeredSFT, DPO, GEPA, DICL
Evals and A/B testsWeighted routing only, no evalsEvals and adaptive A/B tests
LicenseMIT core + commercial ProApache 2.0

Which one fits?

An honest split.

Pick GoModel if

  • You need a maintained gateway with security fixes.
  • Clients use OpenAI Responses or the Anthropic SDK, not only chat completions.
  • You want keys, budgets, and audit logs without running Postgres, ClickHouse, or Valkey.
  • You want one binary with a built-in, authenticated dashboard.

TensorZero still fits if

  • You fine-tune from production feedback (SFT, DPO, GEPA, DICL) and can maintain a fork.
  • You need built-in evals and adaptive A/B tests over prompt and model variants.
  • You already run it and need time to plan a migration.

Migrating is a base-URL change plus model names: TensorZero'stensorzero::model_name::... becomes a GoModel model or alias.

Try it against your own workload

Benchmarks are an argument; your traffic is the proof. GoModel speaks the OpenAI and Anthropic APIs natively, so pointing an existing app at it is a base-URL change.

1 · Run GoModel
docker run --rm -p 8080:8080 \
  -e LOG_FORMAT=text \
  -e OPENAI_API_KEY="your-openai-key" \
  enterpilot/gomodel
2 · Point your SDK at it
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8080/v1",
    api_key="your-gomodel-key",
)

Full setup, providers, and configuration live in the documentation. Questions? Ask on Discord or book a 30-minute call.