Skip to content

Observability

hlid keeps a bounded ring buffer of every request it handles and exposes it over HTTP. No dashboard to run, no metrics stack to deploy — curl and jq are the UI.

List recent requests

bash
curl -s http://localhost:8080/hlid/requests | jq .

Inspect one request

bash
curl -s http://localhost:8080/hlid/requests/<request-id> | jq .

What a capture contains

FieldMeaning
idUnique request id (use it in the URL above)
timestampWhen the request arrived
pathInbound endpoint (/v1/messages, /v1/chat/completions, …)
modelModel name the agent asked for
backend_urlWhere the registry sent it
inbound_dialectWhat the agent spoke
backend_dialectWhat the backend speaks
translatedWhether hlid converted between dialects
statusUpstream HTTP status
latency_msFull round-trip time
token_usagePrompt/completion tokens, when the backend reports them
errorThe error, if the request failed

The buffer

observe_buffer_size (default 1000) bounds how many captures are kept; the oldest are evicted first. Captures hold metadata about the trip — backend credentials are never stored in them.

toml
observe_buffer_size = 1000

Health check

bash
curl http://localhost:8080/health
# → {"status": "ok"}

Wire this into your compose healthcheck or uptime monitor.

Logs

hlid emits structured tracing logs. Control verbosity with the standard RUST_LOG variable:

bash
RUST_LOG=hlid=debug ./hlid

MIT licensed · built at the workbench