Skip to content

What is hlid?

hlid is a self-hosted proxy that sits between your coding agents and your LLM backends. Point any agent at hlid, and it finds the right model — local or cloud, no matter what dialect the agent speaks or the backend expects.

You                                     hlid                               Backends
─────                                  ──────                              ─────────
Claude Code ──┐                                                    ┌── llama.cpp (local)
              │                                                    │
Aider ────────┼──►  http://localhost:8080  ──route + translate──►  ├── vLLM (local)
              │                                                    │
OpenAI SDK ───┘                                                    ├── Anthropic API
                                                                   └── OpenAI API

The problem it solves

If you run models locally (llama.cpp, vLLM, SGLang) and in the cloud, wiring agents to them is messy: every agent speaks a fixed dialect (OpenAI Chat, Responses, Completions, or Anthropic Messages), every backend speaks a different subset, credentials end up scattered across configs, and nothing shows you what actually happened on the wire.

hlid is one endpoint you point any agent at. It holds the credentials and the backend connections, speaks all four dialects, translates only when the backend can't speak the inbound one, and makes every request observable.

What you get

VerbWhat it means
RouteGlob patterns map model names to backends — llama-* local, claude-* to Anthropic, first match wins
TranslatePassthrough when dialects match; full conversion (system prompts, tools, streaming, usage) when they don't
ObserveEvery request captured: latency, tokens, dialect, backend, errors — inspect with curl
SecureBackend API keys held in one place; optional auth on the hlid endpoint itself

What hlid is not

hlid never runs models. It doesn't download weights, size GPUs, or manage server lifecycles. It is only the endpoint in front of whatever you already run — which is why it stays one small binary with one config file.

Next

MIT licensed · built at the workbench