Back to News

Olla v0.0.29: Admin Dashboard, Prometheus Metrics & Failover Fixes

Olla v0.0.29 is the biggest release so far. It ships an embedded, read-only admin dashboard so you can see your whole inference fleet at a glance, a native Prometheus metrics endpoint, and a long list of routing, configuration and security fixes that came out of running Olla in anger.

The new admin dashboard

Olla now serves a read-only dashboard at /internal/ui/, from the same listener as the proxy. No second port, no sidecar, no external exporter. It polls the existing /internal/status* JSON, so it only ever shows you what Olla already knows.

Olla admin dashboard Overview panel showing fleet status, response rate, average latency, a live requests-per-second sparkline and a per-endpoint health table
Overview: aggregate fleet health, live throughput and the herd at a glance.

There are three views. Overview gives you system status, endpoints up, response rate, average latency and a live requests-per-second sparkline, plus a sortable table of every endpoint. Endpoints drills into per-endpoint health, priority, latency and model count. Models shows the discovered inventory grouped by family, with the endpoints hosting each one.

Olla admin dashboard Endpoints panel listing each backend with its health, priority, latency and model count
Endpoints: per-backend health, priority and latency, sorted unhealthy first.

The dashboard has no authentication. Access is controlled by the new dashboard.access_policy block (allowed_cidrs and allowed_hosts), which is loopback-only by default. The published Docker image pre-widens that to the RFC1918 ranges so docker run -p 40114:40114 gives you a working dashboard with no config mount, which also means anyone else on that LAN can reach it through the published port. Read the Admin Dashboard docs for the full security model before you expose it.

What else changed

  • Native GET /internal/metrics in Prometheus text format, built from the same data as the status APIs, so core proxy monitoring needs no external exporter. Contributed by @Puupuls
  • Weak ETags on the status endpoints, so polling clients get 304s instead of re-fetching the whole payload
  • Sticky-session and routing decisions now appear in the structured "Request completed" log line, not just in response headers
  • A request landing on an endpoint with an open circuit breaker now fails over to the next available endpoint instead of failing outright
  • Strict routing no longer lets an unroutable model_aliases entry proxy to the wrong backend; it fails fast instead. Reported by @skaravos
  • config/models.yaml now actually parses. Invalid YAML meant it had never loaded on any install, silently falling back to embedded defaults. Reported by @billford
  • New --validate-config flag checks configuration and provider profiles without starting the server
  • Endpoint URLs with embedded user:pass@host credentials now fail startup instead of leaking into every status response, and status id/url fields are sanitised
  • Refreshed 2026 model catalogue: GPT-OSS, GLM, Kimi, Granite, Nemotron, EXAONE, Hunyuan, MiniMax, OLMo, InternLM, SmolLM, Command-R and Forge, plus MXFP4/NVFP4 quantisation
  • Successful proxy requests log at Info again, and logging.level from config is finally applied to the runtime logger

Breaking changes to check before upgrading: userinfo URLs now fail startup, status id/url are derived from a sanitised URL, a fresh boot with no traffic no longer reports critical (use the new system.has_traffic flag), and a proxy request with zero healthy endpoints returns 503 rather than 502.

Resources