AI Gateway for
Tracking, Decoupling, Debugging
your AI Usage

Architecture diagram showing client applications connecting through GoModel for authentication, planning, and provider routing. OpenAI SDKAnthropic SDKHTTP requestAUTHGoModelAI GatewayROUTEOpenAIAnthropicGeminixAIOllama+ 17 more
Try it in10 seconds
curl -fsSL https://gomodel.enterpilot.io/install.sh | sh
OPENAI_API_KEY="your-openai-key" gomodel
http://localhost:8080/admin/dashboard
irm https://gomodel.enterpilot.io/install.ps1 | iex
$env:OPENAI_API_KEY = "your-openai-key"; gomodel
http://localhost:8080/admin/dashboard
docker run --rm -p 8080:8080 \
  -e LOG_FORMAT=text \
  -e OPENAI_API_KEY="your-openai-key" \
  enterpilot/gomodel
http://localhost:8080/admin/dashboard
GoBuilt with Go
MIT Licensed
OpenAI & Anthropic-Compatible API
GitHub stars
vv0.1.52

Problems GoModel Solves

When provider switching, debugging, and usage tracking start leaking into application code, GoModel moves that logic into one gateway layer.

Coupled to one provider

Switching vendors shouldn't be a code project. One stable API decouples provider choice from your app - swap models with a config change.

One behavior doesn't fit every team or app

One path needs cache, another audit, another guardrails. Scoped workflows set behavior per provider, model, or user path.

The same prompts burn budget twice

Identical requests shouldn't pay full price twice. Exact-match response caching returns duplicates faster and cheaper.

Costs nobody can attribute

Provider dashboards show one total. Per-request usage tracking maps spend to teams, tenants, and features.

Incidents nobody can reconstruct

A fallback fired and nobody knows why. Audit logs and runtime metadata make every request traceable.

The gateway becomes its own project

Running the gateway shouldn't out-scale running the app. One binary with a built-in admin UI and storage that grows with the workload.

How GoModel Works

GoModel authenticates each request, applies the matching workflow - guardrails, cache, budgets, rate limits - and routes it to the right provider with automatic failover, behind OpenAI- and Anthropic-compatible APIs.

Architecture diagram: client SDKs send requests through the GoModel pipeline - auth, workflow, guardrails, cache, limits, provider - with cache hits returned instantly, usage and audit recorded on every response, and automatic failover across AI model providers. YOUR APPS / PROJECTS / TEAMSOpenAI SDK - openai.Client(), any languageOpenAI SDKopenai.Client()Anthropic SDK - native /v1/messages supportAnthropic SDKAnthropic()POST /v1/chat/completionscurl / HTTPPOST /v1/chat/c...GoModelAuthWorkflowGuardrailsCacheLimitsProvidercache hit · no provider callEVERY RESPONSE RECORDSusage & costaudit trailcache writelive dashboardautomatic failover · retry · circuit breakerAI MODEL PROVIDERSOpenAIAnthropicGeminiAzure OpenAIAWS BedrockGroq+ 16 more
POST /v1/chat/completionsPOST /v1/responsesPOST /v1/messages

OpenAI- and Anthropic-compatible. Change the base URL, keep your SDK.

SSE streamingPrometheus /metricsSQLite / Postgres / MongoDB

GoModel Features

Everything the gateway does today, grouped by what you need it for. All of it ships in the single open-source binary - nothing here is a paid tier.

Routing & Providers

22 Providers, One API

OpenAI, Anthropic, Gemini, Bedrock, Vertex, Azure, Groq, Ollama, vLLM, and more behind one endpoint - with round-robin rotation across multiple keys per provider.

Aliases & Virtual Models

Publish stable names like smart-chat and remap the real provider and model behind them - a config change, not an application change.

Load Balancing

Spread a virtual model across targets with weighted round-robin, or let cost-based routing pick the cheapest capable model for each request.

Automatic Failover

Availability errors fail over to the next model or provider; retries with backoff and a circuit breaker absorb flaky upstreams.

Provider Passthrough

Call any provider's native API through /p/:provider/* and keep GoModel's auth, usage tracking, and audit on the way through.

Control & Safety

Scoped Workflows

Toggle cache, audit, usage, budgets, guardrails, and failover per provider, model, or user path - versioned, most specific scope wins.

Guardrails

Inject system prompts or rewrite messages with an LLM before dispatch, in ordered steps that run as parallel groups.

Virtual API Keys

Hand teams managed keys bound to a user path and labels instead of raw provider credentials - revoke and rotate from the admin UI.

Rate Limits

Cap request rate and concurrency per user path, provider, or model - saturated routes are routed around when alternatives exist, 429 + Retry-After when not.

Cost

Budgets

Durable spend limits enforced before dispatch - shared across gateway instances, so a burst on one node can't blow the monthly cap.

Response Caching

Exact-match caching out of the box, plus semantic caching backed by Qdrant, pgvector, Pinecone, or Weaviate.

Usage & Cost Tracking

Token and dollar accounting per request, user path, and label - with per-model pricing overrides when list prices don't match your contract.

Observability

Audit Logs

Every request with its resolved route, workflow, cache result, and provider attempts - bodies and headers logged only when explicitly enabled.

Admin Dashboard

Embedded UI for live request logs, usage breakdowns, keys, budgets, workflows, and provider status - no separate deployment to run.

Request Tagging

Labels from headers or key metadata flow into usage and audit, so spend and incidents map to teams, tenants, and features.

Prometheus Metrics

/metrics with request, provider, and circuit-breaker gauges, plus health endpoints and optional pprof profiling.

Beyond Chat

Full OpenAI Surface

Chat, embeddings, the Responses API with gateway-managed conversations, files, and batches - not just /v1/chat/completions.

Anthropic Messages API

Native /v1/messages and token counting - point the Anthropic SDK at GoModel and route to any provider behind it.

Audio & Realtime

Text-to-speech, transcription, and realtime speech over WebSocket and WebRTC, through the same gateway pipeline.

MCP Gateway

Aggregate MCP servers behind one endpoint with namespaced tools - every tool call gets usage tracking and audit like any other request.

Run It Anywhere

One Binary

A single Go binary with Docker, Compose, and Helm recipes - the admin UI is embedded, so there is nothing else to deploy.

Storage That Grows

Start on SQLite with zero setup, move to PostgreSQL or MongoDB when traffic and retention demand it - same binary, different config.

First-Class Streaming

SSE streaming with usage and audit recorded from the stream itself - no buffering, no lost accounting on long generations.

What teams use it for

The same gateway, six different jobs.

Bill AI back to tenants

A multi-tenant SaaS issues a virtual key per customer, tracks usage by user path, and enforces per-tenant budgets - invoices come from the dashboard, not guesswork.

One internal AI endpoint

A platform team publishes aliases like smart-chat with scoped workflows behind them - product teams ship features without ever holding provider keys.

Stay up through provider outages

Production traffic rides failover chains with retries and circuit breakers - a provider incident becomes a routing event, not a customer-facing one.

Cut spend without code changes

Caching absorbs duplicate prompts, cost-based routing picks the cheapest capable model, and budgets stop end-of-month surprises.

Pass the audit

Compliance reviews replay any request: resolved route, guardrail versions, provider attempts, and full bodies where logging is explicitly enabled.

Same API from laptop to prod

Developers run Ollama or vLLM locally behind the same endpoint the cloud providers serve in production - switching is config, not code.

Quick Start: Deploy GoModel

Launch GoModel, open the dashboard, and send your first OpenAI-compatible request in three steps.

1

Install and run GoModel

Install the binary with one command - or run it with Docker, either standalone or as the full local stack with Docker Compose.

curl -fsSL https://gomodel.enterpilot.io/install.sh | sh
OPENAI_API_KEY="your-openai-key" gomodel
irm https://gomodel.enterpilot.io/install.ps1 | iex
$env:OPENAI_API_KEY = "your-openai-key"; gomodel
docker run --rm -p 8080:8080 \
  -e LOG_FORMAT=text \
  -e OPENAI_API_KEY="your-openai-key" \
  enterpilot/gomodel
cp .env.template .env
# Add your API keys to .env
docker compose up -d
2

Open the dashboard

Inspect models, aliases, workflows, usage, cache, and audit logs in the admin UI once the gateway is running.

3

Send your first API call

Keep the OpenAI-compatible request shape and point it at GoModel.

API Call
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5-chat-latest",
    "messages": [{
      "role": "user",
      "content": "Hello!"
    }]
  }'

GoModel vs LiteLLM Comparison

A gateway sits on every request, so its runtime footprint charges rent forever. Numbers below are from the reproducible June 2026 benchmark - four gateways (GoModel, LiteLLM, Portkey, Bifrost), same mock backend, same AWS box. Read the full benchmark →

15×
throughput
4,900 vs 324 req/s sustained
17×
lower latency overhead
1.8 vs 30.6 ms p50
62×
less memory
37 MB vs 2.3 GB peak under load
45×
faster cold start
0.56 vs 25.5 s to first request
CategoryGoModelLiteLLM
Measured on the hot path
Latency overhead (p50)1.8 ms30.6 ms
Latency tail (p99)6.9 ms39.3 ms
Sustained throughput4,900 req/s324 req/s
Peak RAM under load37 MB2.3 GB
Efficiency (req/s per CPU %)522.6
Cold start to first request0.56 s25.5 s
Docker image (compressed)16 MB372 MB
Beyond the benchmark
Runtime & deploymentOne Go binaryPython + per-vCPU workers
Provider coverage22 providers100+ providers
ConfigEnv vars + optional YAMLYAML config file
Audit logsIncluded, MITEnterprise license
SSO & access controlOn the roadmapEnterprise license
Dependency surfaceSmall, std-lib-heavy Go treeLarge Python dependency graph
LicenseMITMIT core + enterprise license

Benchmark: 8,000 requests per workload at concurrency 10, six API workloads, two randomized trials on an AWS c7i.large. LiteLLM ran its recommended two workers; retries and GoModel's circuit breaker were disabled for fairness. LiteLLM's broader provider catalog is a real advantage - the benchmark measures the request path, not product maturity.

Supported AI Model Providers

All 22 supported providers behind one OpenAI-compatible endpoint - 700+ models measured across their live catalogs. Most need a single env var; the tricky ones have dedicated setup guides.

OPENAI_API_KEY

OpenAI

gpt-5.5120+ models
ANTHROPIC_API_KEY

Anthropic

claude-sonnet-410+ models
GEMINI_API_KEY

Google Gemini

gemini-2.5-flash30+ models
VERTEX_PROJECT + GCP CREDS

Google Vertex AI

google/gemini-2.5-flash
AZURE_API_KEY + BASE_URL

Azure OpenAI

gpt-5
AWS CREDENTIALS + REGION

Amazon Bedrock

anthropic.claude-3-5-haiku
OPENROUTER_API_KEY

OpenRouter

google/gemini-2.5-flash300+ models
GROQ_API_KEY

Groq

llama-3.3-70b-versatile15+ models
XAI_API_KEY

xAI (Grok)

grok-4.5~10 models
DEEPSEEK_API_KEY

DeepSeek

deepseek-v4-pro
FIREWORKS_API_KEY

Fireworks AI

fireworks/gpt-oss-120b
BAILIAN_API_KEY

Alibaba Bailian

qwen3-max140+ models
MINIMAX_API_KEY

MiniMax

MiniMax-M3
KIMICODE_API_KEY

Kimi Code

kimi-for-coding
ZAI_API_KEY

Z.ai

glm-5.1
XIAOMI_API_KEY

Xiaomi MiMo

mimo-v2.5-pro~10 models
META_API_KEY

Meta Muse Spark

muse-spark-1.1
KILO_API_KEY

Kilo AI

anthropic/claude-sonnet-4.5
OPENCODE_GO_API_KEY

OpenCode Go

glm-5.1
ORACLE_API_KEY + BASE_URL

Oracle GenAI

Experimental
openai.gpt-oss-120b
OLLAMA_BASE_URL

Ollama

llama3.2your local models
VLLM_BASE_URL

vLLM

Llama-3.1-8B-Instructanything you serve
OPENAI_EAST_API_KEY

Your own instances

Any OpenAI-compatible backend, as many instances as you need

Model counts are approximate, read live from provider catalogs. Multiple API keys per provider rotate round-robin, and suffixed env vars register extra instances of the same provider type.

Roadmap to GoModel v0.2.0

What already shipped, what is left before v0.2.0, and what comes right after - kept in sync with the project's public roadmap.

v0.1.x

Available Today

Aliases & virtual modelsScoped workflowsExact + semantic cacheUsage analyticsAudit logsAdmin dashboardGuardrailsMultiple API keysBudgetsPricing overrides/responses lifecycleAnthropic /messagesPrompt cache visibilityCache visibility in the dashboardFailover + circuit breakerRate limitsMCP gateway
0.2

Road to v0.2.0

v0.2.0 scope7 of 11 shipped
More providers: Cohere Command A + moreFull /conversations lifecycleGuardrails rework: custom + response-sidePassthrough for every provider
Next

Right After v0.2.0

Intelligent routingContext window compressionCluster modeSSOOAuth 2.0Dashboard customization

Intelligent routing, context compression, and cluster mode are planned as commercial features.

GoModel FAQ

Common questions about deployment, provider switching, GoModel as a LiteLLM alternative, local models via Ollama, vLLM, and LM Studio, caching, usage tracking, and the v0.2.0 roadmap.

What is GoModel?

GoModel is an open-source AI gateway written in Go and released under the MIT license. Your apps talk to one OpenAI- and Anthropic-compatible endpoint, and the gateway handles provider routing, model aliases, scoped workflows, caching, failover, budgets, rate limits, audit logs, and usage tracking behind it. It ships as a single small binary with an embedded admin dashboard, so there is nothing else to deploy.

Can I keep using the OpenAI or Anthropic SDK with GoModel?

Yes - in most cases you only change the base URL. GoModel serves the OpenAI API (/v1/chat/completions, /v1/responses, embeddings, files, batches) and the Anthropic Messages API (/v1/messages) natively, so the OpenAI SDK, the Anthropic SDK, and plain HTTP clients all keep working while routing, caching, and usage visibility move into the gateway.

Which AI providers and models does GoModel support?

22 providers, including OpenAI, Anthropic, Google Gemini and Vertex AI, Azure OpenAI, Amazon Bedrock, OpenRouter, Groq, xAI, DeepSeek, Mistral-class open models through Ollama and vLLM, and more - roughly 700+ models read live from provider catalogs. You can register multiple API keys per provider for round-robin rotation, and any other OpenAI-compatible backend can join as its own provider instance.

How does GoModel compare to LiteLLM?

In a reproducible June 2026 benchmark on the same AWS box, GoModel showed 1.8 ms median latency overhead vs 30.6 ms, sustained 4,900 req/s vs 324, used 37 MB of RAM under load vs 2.3 GB, and cold-started in 0.56 s vs 25.5 s. LiteLLM still supports more providers today - the trade-off is runtime footprint on the request path, which matters most at high volume, on small machines, or in front of fast local models.

What do scoped workflows control?

A workflow toggles cache, audit logging, usage tracking, budgets, guardrails, and failover per provider, model, or user path - the most specific matching scope wins. Workflow versions are immutable, so you can see exactly which policy a given request ran under. One gateway, different runtime policies for different workloads.

Does GoModel cache LLM responses?

Yes, two ways. Exact-match caching returns identical non-streaming requests straight from the gateway - no provider call, no cost. Semantic caching goes further by matching similar prompts, backed by Qdrant, pgvector, Pinecone, or Weaviate. Cache lookups run after alias and workflow resolution, so policy decisions still apply, and cache hits are visible in the dashboard.

Can I track AI usage and cost per team, tenant, or feature?

Yes. Tag requests with X-GoModel-User-Path or labels from virtual API keys, and GoModel records tokens and dollar cost per request against that path. The dashboard breaks spend down by team, tenant, model, and label, pricing overrides keep numbers accurate when your contract differs from list prices, and budgets enforce hard spend limits before a request is ever dispatched.

What happens when a provider goes down?

GoModel retries with backoff, trips a circuit breaker on repeated failures, and fails over to the next configured model or provider - skipping routes that are rate-limited or saturated. Every attempt lands in the audit log with the resolved route, so an outage becomes a routing event you can reconstruct rather than a mystery.

Can I use GoModel with local models via vLLM, Ollama, or LM Studio?

Yes - point OLLAMA_BASE_URL or VLLM_BASE_URL at your server and local models sit behind the same endpoint as the cloud providers. LM Studio, llama.cpp, and similar servers connect the same way through their OpenAI-compatible endpoints. Because the gateway itself is a 16 MB image that runs in about 37 MB of RAM, it is cheap enough to run next to the models - on a laptop, an edge box, or a sidecar.

How do I deploy and operate GoModel?

The fastest path is one docker run; Docker Compose, Kubernetes with the Helm chart, and the plain binary all work too. Storage starts on SQLite with zero setup and moves to PostgreSQL or MongoDB when traffic and retention grow. Operations run through the embedded admin dashboard and API, with Prometheus /metrics and health endpoints for your existing monitoring.

What is planned for GoModel v0.2.0?

Most of the v0.2.0 scope has already shipped: budgets, pricing overrides, the full /responses lifecycle, Anthropic /messages, and prompt cache visibility including the dashboard view. Still open are broader provider support (Cohere Command A among others), the full /conversations lifecycle, a guardrails rework with custom and response-side guardrails, and passthrough for every provider. Right after the release come intelligent routing, context window compression, cluster mode, SSO, OAuth 2.0, and dashboard customization.

Contact the GoModel Team

Need help deciding whether GoModel fits your project, or planning a switch between AI model providers? Join Discord, book a 30-minute call, or call directly.