Skip to content

URL Directory

Reference for all service endpoints — subdomains in production and ports in development. Routing is handled by Traefik in production; services bind directly to localhost ports in development.


Production (Traefik, TLS)

All production traffic goes through Traefik on port 443 (HTTPS) or port 8883 (MQTT over TLS). No service exposes a direct port to the host. Domains are configured via environment variables in .env.

Environment variable Service Backend port Notes
ORCHESTRATOR_DOMAIN Django API + admin 8000 REST API, admin, WebSocket
UI_DOMAIN Nuxt frontend 3000 Passenger / operator UI
MQTT_DOMAIN NanoMQ broker 8883 (TCP/TLS) MQTT over TLS
RABBITMQ_DOMAIN RabbitMQ management UI 15672 Requires credentials
ANALYTICS_DOMAIN Prefect dashboard 4200 PREFECT_API_URL uses this domain
FLOWER_DOMAIN Flower (Celery monitoring) 5555 Task queue dashboard
DOCS_DOMAIN Documentation (nginx) 80 This site

Example — if your base domain is example.com:

https://api.example.com       — Orchestrator (REST API, admin)
https://app.example.com       — User interface
mqtt://mqtt.example.com:8883  — MQTT (TLS)
https://rabbitmq.example.com  — RabbitMQ management
https://flows.example.com     — Prefect dashboard
https://flower.example.com    — Flower (Celery task monitoring)
https://docs.example.com      — Documentation site

Subdomain names (api., app., flows., flower., docs.) are just examples — use whatever *_DOMAIN values you set in .env. There is no enforced naming convention.


Development (localhost)

In development (compose.dev.yml), services bind directly to localhost ports. No Traefik, no TLS.

URL Service Notes
http://localhost:8000 Orchestrator / API
http://localhost:8000/admin Django admin Superuser required
http://localhost:8000/api/ REST API root
http://localhost:8000/api/docs/ API documentation (ReDoc)
ws://localhost:8000/ws/status/ WebSocket live updates
http://localhost:3000 Nuxt frontend
mqtt://localhost:1883 NanoMQ broker No TLS in dev
http://localhost:15672 RabbitMQ management guest / guest
http://localhost:4200 Prefect dashboard
http://localhost:5555 Flower (Celery monitoring)

Notable paths on the orchestrator

Path Purpose
/admin/ Django admin
/api/ REST API root (DRF browsable)
/api/docs/ ReDoc API documentation
/api/docs/schema/ AsyncAPI schema download (realtime.yml)
/api/create-run/ Create a new run
/api/runs/<id>/state/ Get current run state
/api/runs/<id>/update/ Send a lifecycle event to a run
/api/runs/<id>/history/ Run lifecycle audit log
/ws/status/ WebSocket — live feed status updates

Internal services (not exposed externally)

The following services are internal-only and have no external Traefik route:

Service Role
database PostgreSQL + PostGIS
state Redis
realtime-engine Celery worker (MQTT + telemetry processing)
schedule-engine Celery worker (GTFS-RT building)
scheduler Celery Beat

Source: compose.prod.yml Traefik labels, README.md §Production services.