Skip to main content

Network ports and flows

This page lists the ports the Navin Platform listens on and the flows to open, per installation method. The values come from the systemd units of the packages, the Helm chart, the data service manifests and the compose file.

OS packages​

PortProtocolServiceWho connects
8080HTTPControl Plane API (navin-platform-api, EAI_PORT)Browsers through the TLS reverse proxy, SDK, CLI
3300HTTPPortal (navin-platform-portal, NAVIN_PORTAL_PORT)Browsers through the TLS reverse proxy
9464HTTPWorker metrics (EAI_WORKER_METRICS_PORT)Prometheus
9465HTTPMedia worker metrics (EAI_MEDIA_WORKER_METRICS_PORT)Prometheus
5432PostgreSQLLocal database (UNIX socket only by default)API and worker of the same host
8460HTTPSNavin Manager console and API (standalone or manager role)Operators, portal
8461HTTPSNavin Manager agent endpointAgents of the nodes

navin-install preflight checks that 5432, 8460, 8461, 8080, 3300 and 9464 are free (or already served by their own Navin unit) and reports the ports the local firewall still blocks.

Outbound from the platform host: OpenBao (EAI_OPENBAO_URL, 8200 by default), Keycloak (EAI_OIDC_ISSUER), Redis (EAI_REDIS_URL, 6379), LiteLLM (EAI_LITELLM_URL), the OTLP collector (4318) and, when used, the external PostgreSQL server (5432).

Kubernetes​

Exposure​

Entry pointPortObject
APISIX (API <control-plane-host>)9080 HTTP, 9443 TLS (container ports)Service LoadBalancer, externalTrafficPolicy: Local (deploy/apisix/values.yaml)
Portal (<portal-host>)443, HTTP redirected to HTTPSIngress class nginx (portal.ingress)
LiveKit media (voice)7880 signalling, 7881 TCP, UDP range of deploy/livekitManifests of deploy/livekit

In-cluster ports​

ServiceNamespacePort
Control Plane APIenterprise-ai8080
Portalenterprise-ai3000
LiteLLMenterprise-ai4000
vLLMenterprise-ai8000
Ollamaenterprise-ai11434
Worker metricsenterprise-ai9464
PostgreSQL (CloudNativePG)eai-data5432
Rediseai-data6379
NATSeai-data4222 (client), 8222 (monitoring, read by KEDA)
Qdranteai-data6333
Temporal frontendeai-data7243
LiveKiteai-data80 (Service), 7880 (container)
OpenFGAeai-security8080
OPAeai-security8181
OpenBaoopenbao8200 (API), 8201 (cluster)
ClickHouseobservability8443
OpenTelemetry Collectorobservability4317 (gRPC), 4318 (HTTP)
Opik backendobservability8080
Prometheusobservability9090

Flows​

Every namespace starts from a full deny, DNS included, and each workload opens only what it needs. The flow matrix of the chart (Control Plane, worker, migration Job, portal, LiteLLM, vLLM, media workers) and the DNS rules are described in Network and DNS hardening. Only the Control Plane and LiteLLM reach the Internet, through the FQDN list networkSecurity.providerFQDNs (Helm values reference).

Docker Compose​

Published on the host (deploy/compose/docker-compose.yml):

PortService
8080Control Plane API
3300Portal
4000LiteLLM
8081Keycloak
8082OpenFGA
8088Temporal UI
8200OpenBao (dev mode)
7880, 7881, 50000-50100/udpLiveKit
3001Opik frontend (profile opik)
16686Jaeger
4317, 4318OpenTelemetry Collector
9090Prometheus
8333SeaweedFS S3 API

docker-compose.host-ports.yml, added by every make docker-* target unless HOST_PORTS=0, also publishes on 127.0.0.1 only: PostgreSQL 5432, Redis 6379, OPA 8181, Qdrant 6333, NATS 4222, Temporal 7243, ClickHouse 8123, vLLM 8000, Ollama 11434. make docker-env writes the next free port when a default one is taken (for example POSTGRES_HOST_PORT=5433).

Troubleshooting​

SymptomCauseFix
navin-install preflight prints port 8080 is takenAnother program listens on the portss -ltnp 'sport = :8080' shows it; stop or move it
The portal loads but every API call failsNAVIN_PORTAL_API_URL or NEXT_PUBLIC_EAI_API_URL is not the URL the browsers reachSet the public URL of the API, then restart the portal
A pod cannot resolve a nameThe Cilium DNS rule of the workload does not list itUse the fully qualified name (nats.eai-data.svc.cluster.local), see the DNS section of the hardening page