OBLETHdocs

Endpoints and ports

The ports each obleth component listens on, and how Docker Compose, the Helm chart and HAProxy expose them.

3 min readUpdated for v2.4.0Edit on GitHub

obleth listeners

The gateway binary opens three listeners.

ListenerDefault bindSet withServes
Data plane0.0.0.0:8080OBLETH_PROXY_LISTENClient API, /mcp/…, /health
Management API0.0.0.0:9180OBLETH_ADMIN_LISTEN/api/v1/…
Metrics0.0.0.0:9091OBLETH_METRICS_LISTEN/metrics

The other components listen on: control plane 3000, compression sidecar 8080, benchmark backend 8081 (BENCHMARK_BACKEND_LISTEN). The provisioner has no listener. Routes are listed in Data-plane routes and Management API.

Docker Compose host ports

ServiceContainer portHost bindingProfile
obleth data plane80808088core
obleth Management API9180127.0.0.1:9180core
obleth metrics9091127.0.0.1:9091core
control-plane30003002core
postgres5432127.0.0.1:5432core
redis6379127.0.0.1:6379core
clickhouse HTTP, native8123, 9000127.0.0.1:8123, 127.0.0.1:9000core
benchmark-backend80818081benchmark
haproxy8080edge
prometheus9090127.0.0.1:9090observability
grafana30003001observability
jaeger UI, OTLP gRPC, OTLP HTTP16686, 4317, 4318127.0.0.1 for eachobservability
dex55565556sso-dev

A binding without an address listens on all host interfaces. These ports reach only the Compose network: HAProxy 8404 (metrics and /stats), the compressor's 8080, ClickHouse 9363 (metrics), postgres-exporter 9187 and redis-exporter 9121.

Kubernetes service ports (Helm)

Every Service is ClusterIP; <release> is the Helm release name.

ServicePortsPresent when
<release>-oblethproxy 8080, admin 9180, metrics 9091always
<release>-control-plane3000controlPlane.enabled
<release>-compressorhttp 8080compressor.enabled
<release>-postgres5432postgres.enabled
<release>-redis6379redis.enabled
<release>-clickhousehttp 8123, native 9000clickhouse.enabled
<release>-benchmark-backend8081benchmarkBackend.enabled

The optional Ingress routes to ingress.servicePort (8080, the data plane). The ServiceMonitor scrapes the metrics port. The provisioner has no Service.

With networkPolicy.enabled, the chart allows only this inbound traffic:

TargetAllowed from
obleth 8080, 9091anywhere
obleth 9180control plane and provisioner pods
Postgres 5432obleth and control plane pods
Redis 6379, ClickHouse 8123 and 9000obleth pods

See Helm values for the settings.

HAProxy frontend

The Compose edge profile runs HAProxy; the Helm chart does not.

PortServes
80Round-robin to the obleth data plane on 8080
8404HAProxy /metrics and /stats (Compose network only)

The shipped config is plaintext and assumes TLS ends in front of it. See HAProxy.

Health checks

GET /health on the data plane and GET /api/v1/health on the Management API need no token and return ok.

curl http://localhost:8088/health          # data plane, Compose host port
curl http://localhost/health               # through HAProxy (edge profile)
curl http://localhost:9180/api/v1/health   # Management API
curl -s http://localhost:9091/metrics | head

A plain cargo run binds 8080 directly, so there the data plane is on localhost:8080. GET /v1/models needs an API key, so use /health for liveness probes.