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 APIThe 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
| Verb | What it means |
|---|---|
| Route | Glob patterns map model names to backends — llama-* local, claude-* to Anthropic, first match wins |
| Translate | Passthrough when dialects match; full conversion (system prompts, tools, streaming, usage) when they don't |
| Observe | Every request captured: latency, tokens, dialect, backend, errors — inspect with curl |
| Secure | Backend 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
- Quickstart — running in five minutes
- Point your agent at it — Claude Code, Aider, Cursor, SDKs
- Architecture — how a request travels through