Portkey is a hosted LLM platform with an open-source Node.js gateway at its core. GoModel is a self-hosted Go gateway where the whole product - routing, dashboard, budgets, audit logs - is the open-source part. Here is how the two request paths measure, and where the product lines actually differ.
Portkey's gateway is small and well engineered for a Node.js service, and its provider catalog is one of the broadest around. The trade-off is that most of what makes Portkey a product lives in the hosted control plane, and the gateway itself carries a JavaScript runtime on every request. Measured numbers are from run 20260829-183422 (29 August 2026) of the reproducible benchmark: every gateway from its public Docker image, one at a time, same in-memory mock backend, same AWS c7i.large. Rerun it yourself with one command.
| Category | GoModel | Portkey |
|---|---|---|
| Measured on the hot path | ||
| Latency overhead (p50) | 2.35 ms | 9.87 ms |
| Latency tail (p99) | 8.80 ms | 32.14 ms |
| Streaming time to first token (p50) | 5.90 ms | 28.54 ms |
| Sustained throughput | 3,610 req/s | 907 req/s |
| Peak RAM under load | 42.7 MB | 123.9 MB |
| Efficiency (req/s per CPU %) | 36.5 | 7.6 |
| Cold start to first request | 0.58 s | 2.17 s |
| Docker image (compressed) | 14.4 MB | 57.9 MB |
| Workloads served | 6/6 workloads | 4/6 (no Anthropic Messages endpoint) |
| Beyond the benchmark | ||
| Open-source release cadence | Releases every few weeks | Last release v1.15.2 on 12 January 2026; last commit 25 May 2026 |
| Runtime | One Go binary | Node.js / TypeScript (also Cloudflare Workers) |
| Provider coverage | 31 providers | 45+ providers, 1,600+ models |
| Anthropic Messages API | Native /v1/messages, streaming included | Anthropic as a provider behind the OpenAI shape |
| Guardrails | Included, MIT | Basic checks open source; central guardrails and PII redaction hosted |
| Usage & cost tracking, budgets | Self-hosted, in the admin dashboard | Portkey Cloud or enterprise |
| Logs and observability UI | Self-hosted dashboard + Prometheus | Portkey Cloud or enterprise |
| Audit logs, SSO, org management | Audit logs MIT; OIDC SSO in GoModel Pro | Enterprise |
| Prompt management | Not a goal | Portkey Cloud |
| Caching | Exact + semantic, self-hosted | Simple open source; semantic hosted |
| MCP gateway | Included | Included |
| Data stays in your network | Always - nothing phones home | Gateway yes; the control plane is hosted unless enterprise |
| License | MIT | MIT gateway + hosted platform / enterprise |
Benchmark: 20,000 requests per workload at concurrency 10, five randomized trials on an AWS c7i.large (2 vCPU, 4 GiB). Retries off everywhere, GoModel's circuit breaker off, per-request logging off. Portkey 1.15.2 has no Anthropic Messages endpoint in this single-provider setup, so both /v1/messages workloads are recorded as failures; its OpenAI-shaped numbers are reported as measured. Portkey's provider and model catalog is a genuine advantage - the benchmark measures the request path, not product breadth. On maintenance: the open-source gateway repository has had no release since v1.15.2 (12 January 2026) and no commit since 25 May 2026 at the time of writing (30 August 2026). It is not archived, and Portkey's hosted platform continues, but the self-hosted gateway is not moving at the pace it once did - worth weighing if you plan to run it yourself.
The real question is not Go versus Node, it is self-hosted product versus hosted platform.
/v1/messages endpoint with streaming, not a translation through the OpenAI shape.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.
docker run --rm -p 8080:8080 \
-e LOG_FORMAT=text \
-e OPENAI_API_KEY="your-openai-key" \
enterpilot/gomodelfrom 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.