Repository navigation
Ports Routes
Ports and Kong hostnames are derived from BASE_PORT in .env (default 63000) and the per-category slot allocator in bootstrapper/services/topology.py. Move the whole stack with ./start.sh --base-port <port> or by editing BASE_PORT. When the block moves, the next start stops the running stack first (every container is re-published), so expect downtime.
The Ports and Routes reference is the authoritative list of each service's port variables and Kong aliases. It is generated from the service manifests and bootstrapper/services/topology.py.
This page documents route behavior that the generated tables omit: auth and routing per alias (§2), engine port quirks (§3) and localhost port overrides (§4).
Run once to add them to /etc/hosts:
./start.sh --setup-hostsThe flag is part of a normal start: after it writes the hosts entries, it launches the stack with the current .env (without the wizard). On a fresh checkout, run ./start.sh once first so the wizard picks the track and sources.
Active aliases (every *-localhost source also routes through host.docker.internal):
-
airflow.localhost→ Airflow Web UI + REST API (AIRFLOW_SOURCE != disabled; same alias serves UI at/and REST API under/api/v2/). Web UI auth:admin/ auto-generatedAIRFLOW_ADMIN_PASSWORD(FAB session cookie). REST API auth: JWT bearer — POST credentials to/auth/tokenfirst, then attachAuthorization: Bearer <jwt>to/api/v2/...calls. See the Airflow README §6 for the full two-step curl. -
api.localhost→ Backend API (always-on adaptive; protected routes always enforce application bearer identity, while optionalBACKEND_KONG_AUTH=key-authadds an outerapikey: ${BACKEND_KONG_API_KEY}gateway gate) -
asset-baker.localhost→ Asset Baker API (ASSET_BAKER_SOURCE != disabled) -
asset-worker.localhost→ Asset Worker API (ASSET_WORKER_SOURCE != disabled) -
chat.localhost→ Open WebUI (OPEN_WEB_UI_SOURCE != disabled) -
comfyui.localhost→ ComfyUI (COMFYUI_SOURCE != disabled) -
crawl4ai.localhost→ Crawl4AI extraction API (CRAWL4AI_SOURCE=container; Kong basic-auth/ACL plus Crawl4AI bearer token for API calls) -
docling.localhost→ Document processor (DOC_PROCESSOR_SOURCE != disabled) -
flower.localhost→ Flower Celery monitor (CELERY_SOURCE=container; Kong dashboard basic-auth/ACL plus Flower basic-auth) -
graph.localhost→ Neo4j Browser (NEO4J_GRAPH_DB_SOURCE != disabled) -
graphbuilder.localhost/graphbuilder-api.localhost→ LLM Graph Builder UI / API (LLM_GRAPH_BUILDER_SOURCE != disabled; Kong dashboard basic-auth/ACL) -
hermes.localhost→ Hermes Agent dashboard (KONG_API_GATEWAY_SOURCE=container,HERMES_SOURCE != disabled, requested dashboard enabled; Kong requires the dashboard Basic credential) -
jenkins.localhost→ Jenkins CI (JENKINS_SOURCE != disabled) -
jupyter.localhost→ JupyterHub (JUPYTERHUB_SOURCE != disabled) -
label-studio.localhost→ Label Studio (LABEL_STUDIO_SOURCE != disabled; Kong dashboard basic-auth/ACL, then the Label Studio login) -
langfuse.localhost→ Langfuse LLM-trace UI (LANGFUSE_SOURCE != disabled; Kong dashboard basic-auth/ACL, then the Langfuse login) -
lightrag.localhost→ LightRAG API + WebUI (LIGHTRAG_SOURCE != disabled;preserve_host: Truefor the SPA) -
litellm.localhost→ LiteLLM gateway + admin dashboard (always-on; same alias exposes/ui/,/v1/*,/spend/*) -
mcp.localhost→ MCP servers gateway (MCP_SERVERS_SOURCE != disabled; Kong dashboard basic-auth/ACL) -
minio.localhost→ MinIO admin console (MINIO_SOURCE != disabled) -
mlflow.localhost→ MLflow tracking UI (MLFLOW_SOURCE != disabled; Kong dashboard basic-auth/ACL) -
s3.minio.localhost→ MinIO S3 API (MINIO_SOURCE != disabled; S3 clients can also use the directMINIO_PORT) -
n8n.localhost→ n8n (N8N_SOURCE != disabled) -
ollama.localhost→ Ollama upstream (LLM_PROVIDER_SOURCEisollama-container-*orollama-localhost) -
openclaw.localhost→ OpenClaw gateway (OPENCLAW_SOURCE != disabled) -
ray.localhost→ Ray dashboard (RAY_SOURCE != disabled; Kong dashboard basic-auth/ACL) -
redpanda.localhost→ Redpanda Console (REDPANDA_SOURCE=container; Kong dashboard basic-auth/ACL; Kafka API clients use directREDPANDA_KAFKA_PORTor in-networkredpanda:9092, not Kong) -
rerank.localhost→ TEI rerank API (TEI_RERANKER_SOURCE != disabled) -
research.localhost→ Local Deep Researcher (LOCAL_DEEP_RESEARCHER_SOURCE != disabled) -
search.localhost→ SearxNG (SEARXNG_SOURCE != disabled) -
spark.localhost→ Spark Master Web UI — routes to in-containerspark-master:8080(SPARK_SOURCE != disabled) -
spark-history.localhost→ Spark History Server UI — routes to in-containerspark-history:18080(SPARK_SOURCE != disabled) -
stt.localhost→ STT engine — container resolves toparakeet-gpuorspeaches; localhost routes viahost.docker.internal -
tika.localhost→ Apache Tika extraction fallback (TIKA_SOURCE != disabled; Kong basic-auth/ACL) -
trino.localhost→ Trino coordinator UI/API (TRINO_SOURCE=container; Kong dashboard basic-auth/ACL) -
localhost→ Atlas service directory and health dashboard, generated from topology. It shows service cards grouped by category, each with its SOURCE state, auth notes, a reachability check and a link to its Kong alias. It has dark and light themes; the default followsprefers-color-scheme. -
supabase-studio.localhost→ Supabase Studio dashboard (basic-auth:DASHBOARD_USERNAME/DASHBOARD_PASSWORDfrom.env) -
trueforge.localhost→ TrueForge agent runtime UI + API (TRUEFORGE_SOURCE=container; Kong dashboard basic-auth/ACL — TrueForge itself has no login) -
tts.localhost→ TTS engine — container resolves tospeaches:8000orchatterbox:4123; localhost routes viahost.docker.internal -
verba.localhost→ Verba RAG UI (VERBA_SOURCE != disabled; Kong dashboard basic-auth/ACL) -
weaviate.localhost→ Weaviate REST API (WEAVIATE_SOURCE != disabled) -
prometheus.localhost→ Prometheus UI + API (PROMETHEUS_SOURCE != disabled; no auth — the route adds no login, and the scrape paths stay internal-only) -
grafana.localhost→ Grafana dashboards + alerting UI (GRAFANA_SOURCE != disabled; admin login viaGRAFANA_ADMIN_USERNAME/ auto-generatedGRAFANA_ADMIN_PASSWORD)
"Kong dashboard basic-auth/ACL" is the shared DASHBOARD_USERNAME / DASHBOARD_PASSWORD pair from .env. It gates only the *.localhost alias; a direct port bypasses it. Which credential opens each surface is tabulated in Access and Credentials.
Blocked paths. Kong answers 403 for these paths and does not forward them:
-
s3.minio.localhost: the MinIO Prometheus metrics paths/minio/v2/metrics/*,/minio/metrics/v3/*and/minio/prometheus/metrics. MinIO serves metrics without authentication so that Prometheus can scrape it on the internal network. -
prometheus.localhost:/-/quitand/-/reload, the Prometheus lifecycle API.
The direct ports do not apply this filter.
The Kong gateway listens on KONG_HTTP_PORT, which is BASE_PORT + 0 (63000 by default). All aliases above resolve to http://<alias>:${KONG_HTTP_PORT}.
Hermes publishes only its API port, HERMES_API_PORT → 8642. HERMES_DASHBOARD_PORT remains a reserved compatibility allocation; no container host mapping reaches 9119.
Atlas computes HERMES_DASHBOARD_EFFECTIVE from the request and configured sources; raw Compose defaults it to false.
Container Hermes requires configured container Kong to enable its dashboard. This does not monitor gateway health; backend-network peers remain unauthenticated in insecure mode.
Localhost Hermes stays operator-managed, and its Kong route uses HERMES_LOCALHOST_DASHBOARD_PORT.
See the Hermes guide for OAuth provider and provisioned-client requirements.
A few services have engine-specific listen ports that won't match a naive *_PORT env-var lookup:
-
Chatterbox TTS — container listens on
4123internally; the host-facing port isCHATTERBOX_PORT. Kong routestts.localhosttohttp://chatterbox:4123/whenTTS_PROVIDER_SOURCE=chatterbox-container-*. -
Speaches — container listens on
8000; host-facing onSPEACHES_PORT. Used by bothtts.localhostandstt.localhostwhen source isspeaches-container-*. -
Parakeet GPU — container listens on
8000; host-facing onSTT_PROVIDER_PORT. -
Neo4j Browser — container listens on
7474regardless of theGRAPH_DB_DASHBOARD_PORTmapping. -
Ollama — container listens on
11434; same on host forollama-localhost. -
Weaviate — container listens on
8080; same on host forWEAVIATE_SOURCE=localhost.
Localhost and managed-host sources expose explicit port variables, but they do not all share one transport or routing contract. Some HTTP endpoints have a Kong alias, while others are consumed directly by another service; a single service family can expose both kinds. TCP protocols are never rewritten as HTTP.
| Category | Service or mode | Port variable(s) | Transport / consumer | Kong route |
|---|---|---|---|---|
| HTTP + Kong | ComfyUI localhost and managed MPS |
COMFYUI_LOCALHOST_PORT, COMFYUI_MPS_LOCALHOST_PORT
|
HTTP via host.docker.internal
|
comfyui.localhost |
| HTTP + Kong | Docling and Tika |
DOCLING_LOCALHOST_PORT, TIKA_LOCALHOST_PORT
|
HTTP via host.docker.internal
|
docling.localhost, tika.localhost
|
| Direct HTTP localhost | Hermes API | HERMES_LOCALHOST_PORT |
HERMES_ENDPOINT consumers reach the API via host.docker.internal
|
No Kong route |
| HTTP + Kong | Hermes dashboard | HERMES_LOCALHOST_DASHBOARD_PORT |
HTTP via host.docker.internal
|
hermes.localhost |
| HTTP + Kong | LightRAG, OpenClaw, Ollama, TEI reranker, Weaviate |
LIGHTRAG_LOCALHOST_PORT, OPENCLAW_LOCALHOST_PORT, OLLAMA_LOCALHOST_PORT, TEI_RERANKER_LOCALHOST_PORT, WEAVIATE_LOCALHOST_PORT
|
HTTP via host.docker.internal
|
lightrag.localhost, openclaw.localhost, ollama.localhost, rerank.localhost, weaviate.localhost
|
| HTTP + Kong | STT/TTS localhost engines |
PARAKEET_LOCALHOST_PORT, WHISPER_CPP_LOCALHOST_PORT, CHATTERBOX_LOCALHOST_PORT
|
HTTP via host.docker.internal
|
stt.localhost, tts.localhost
|
| HTTP + Kong | Neo4j Browser/API | NEO4J_LOCALHOST_HTTP_PORT |
HTTP via host.docker.internal
|
graph.localhost |
| Direct HTTP managed host | vLLM Metal | VLLM_METAL_LOCALHOST_PORT |
LiteLLM reaches the OpenAI-compatible API via host.docker.internal
|
No Kong route |
| TCP, no Kong | Blender MCP | BLENDER_MCP_LOCALHOST_PORT |
tcp://host:port MCP bridge endpoint |
No Kong route |
| TCP, no Kong | Neo4j Bolt | NEO4J_LOCALHOST_BOLT_PORT |
Bolt clients reach the host database directly | No Kong route |
The generated port and route reference lists every port variable.
SUPABASE_AUTH_PORT, SUPABASE_META_PORT and SUPABASE_STUDIO_PORT are reserved there but not published; use Kong.
BASE_PORT is the only supported way to move ports. Each ./start.sh recomputes every *_PORT from BASE_PORT (port_manager.update_env_ports). A hand-edited *_PORT in .env, .env.user or a consumer manifest's env.values is reset on the next start, so change BASE_PORT or pass --base-port. *_LOCALHOST_PORT variables are not derived from BASE_PORT and stay as set.
Each start also writes the port into the service URLs in .env (for example WEAVIATE_URL, NEO4J_URI, COMFYUI_ENDPOINT).
Env migrations (bootstrapper/services/migrations/) rewrite .env when the port layout changes between versions. They keep your custom values and save a backup to .env.backup.v<N>.<timestamp>.<random>. The wizard and --no-tui both migrate before they apply the run's source, profile, key and model overrides. --no-port-migrate skips migrations for one run.
For duplicate BOOTSTRAPPER_PORT_LAYOUT_VERSION assignments, Atlas uses the last value. If that version is older, it first saves .env.backup.migration-marker.<timestamp>.<random>. It comments the original assignments, writes one active marker, and runs the migration chain. Current or future versions stay unchanged. --no-port-migrate skips this repair too. Invalid duplicate metadata or repair write failures stop startup.
Base-port changes and env migrations snapshot .env first, mode 0600. Supabase JWT key generation (generate_supabase_keys) takes no snapshot. At startup it runs only when all three keys are blank; run by hand, it rewrites all three. Copy .env yourself before you run it by hand.
Atlas keeps the five most recent snapshots per migration version or repair prefix and prunes older ones. Pruning limits the retained copies of rotated secrets. .env.backup.* is gitignored and never committed.
Atlas documentation.
- 1. Overview
- 2. Quick Start
- 3. Core Concepts
- 4. Tracks
-
5. Services
- 5.1. Service Catalog
-
5.2. Service Guides
- 5.2.1. airflow
- 5.2.2. asset-baker
- 5.2.3. asset-worker
- 5.2.4. backend
- 5.2.5. backup
- 5.2.6. blender-mcp
- 5.2.7. celery
- 5.2.8. chatterbox
- 5.2.9. cloud-providers
- 5.2.10. cloudflared
- 5.2.11. comfyui
- 5.2.12. crawl4ai
- 5.2.13. doc-processor
- 5.2.14. docling
- 5.2.15. docling-lightrag-adapter
- 5.2.16. fal
- 5.2.17. globals
- 5.2.18. grafana
- 5.2.19. hermes
- 5.2.20. iceberg-rest
- 5.2.21. jenkins
- 5.2.22. jupyterhub
- 5.2.23. kong
- 5.2.24. label-studio
- 5.2.25. langfuse
- 5.2.26. lightrag
- 5.2.27. litellm
- 5.2.28. llm-graph-builder
- 5.2.29. local-deep-researcher
- 5.2.30. loki
- 5.2.31. mcp-servers
- 5.2.32. minio
- 5.2.33. mlflow
- 5.2.34. multi2vec-clip
- 5.2.35. n8n
- 5.2.36. neo4j
- 5.2.37. ollama
- 5.2.38. open-webui
- 5.2.39. openclaw
- 5.2.40. otel-collector
- 5.2.41. parakeet
- 5.2.42. prometheus
- 5.2.43. ray
- 5.2.44. redis
- 5.2.45. redpanda
- 5.2.46. searxng
- 5.2.47. spark
- 5.2.48. speaches
- 5.2.49. stt-provider
- 5.2.50. supabase
- 5.2.51. supavisor
- 5.2.52. tei-reranker
- 5.2.53. tempo
- 5.2.54. tika
- 5.2.55. trino
- 5.2.56. trueforge
- 5.2.57. tts-provider
- 5.2.58. verba
- 5.2.59. vllm-metal
- 5.2.60. weaviate
- 5.2.61. zeppelin
- 5.3. Provider And Extension Guides
- 6. Configuration
- 7. Operations
- 8. Architecture
- 9. Development
- 10. Reference