Warning: This stack is pre‑release and experimental. Do not deploy to production. Interfaces and schemas change frequently. Use for local development and evaluation only.
Sovereign SaaS for live video. Run on your infrastructure, ours, or both—no vendor lock-in.
An open streaming stack for live video: apps, real‑time APIs, and analytics. Services are narrowly scoped. Frontend uses GraphQL; service-to-service uses HTTP/gRPC APIs; analytics and realtime use Kafka events. Each service owns its data (no cross‑DB access).
FrameWorks ships official player and browser-ingest packages:
FrameWorks Player
StreamCrafter (browser ingest)
api_gateway): GraphQL gateway, aggregates all servicesapi_control): auth, streams, business logicapi_tenants): tenants, clusters, nodesapi_billing): usage, invoices, paymentsapi_analytics_ingest): consumes Kafka, writes ClickHouseapi_analytics_query): serves analytics & usage summariesapi_firehose): gRPC ingress → Kafkaapi_balancing): regional load balancer & media pipeline orchestratorapi_sidecar): edge sidecar, MistServer management via Foghornapi_dns): public DNS automation & certificate issuanceapi_mesh): WireGuard mesh agent & local DNSapi_realtime): WebSocket hub for live updateswebsite_application): main dashboardwebsite_marketing): public sitewebsite_docs): Astro Starlight docsapi_forms): contact forms, newsletter (Listmonk)Principles
For local development and testing:
git clone https://github.com/Livepeer-FrameWorks/monorepo.git
cd monorepo
cp config/env/secrets.env.example config/env/secrets.env # edit values as needed
make env # writes .env from config/env
docker-compose up
The Compose stack loads ${ENV_FILE:-.env} automatically. Override ENV_FILE (and pass --env-file to docker compose) when you want to use a different generated env file (for example .env.staging).
Endpoints (local)
| Plane | Service | Port | Notes |
|---|---|---|---|
| Gateway | Bridge | 18000 | GraphQL Gateway |
| Control | Commodore | 18001 | Health/Metrics |
| Control | Commodore (gRPC) | 19001 | gRPC API |
| Control | Quartermaster | 18002 | Health/Metrics |
| Control | Quartermaster (gRPC) | 19002 | gRPC API |
| Control | Purser | 18003 | Health/Metrics |
| Control | Purser (gRPC) | 19003 | gRPC API |
| Data | Periscope Query | 18004 | HTTP health/metrics only |
| Data | Periscope Query (gRPC) | 19004 | gRPC API |
| Data | Periscope Ingest | 18005 | Kafka consumer |
| Data | Decklog | 18006 | gRPC |
| Data | Decklog (metrics) | 18026 | Prometheus metrics |
| Data | Kafka (external) | 29092 | Host access |
| Data | Kafka (internal) | 9092 | Cluster access |
| Data | Zookeeper | 2181 | Kafka coordination |
| Data | PostgreSQL | 5432 | Primary database |
| Data | ClickHouse (HTTP) | 8123 | Analytics database |
| Data | ClickHouse (Native) | 9000 | Analytics database |
| Network | Navigator | 18010 | Public DNS management & ACME |
| Network | Navigator (gRPC) | 18011 | gRPC API |
| Network | Privateer | 18012 | WireGuard mesh agent & Local DNS |
| Media | Helmsman | 18007 | Edge API |
| Media | Foghorn | 18008 | Balancer |
| Media | Foghorn (control) | 18019 | gRPC control API |
| Media | MistServer (control) | 4242 | Control API |
| Media | MistServer (RTMP) | 1935 | Ingest |
| Media | MistServer (HTTP) | 8080 | HLS/WebRTC delivery |
| Media | Livepeer Gateway (CLI) | 18016 | golivepeer control (compute gateway; integration WIP; not in dev compose) |
| Media | Livepeer Gateway (RPC/HTTP) | 18017 | golivepeer public API (compute gateway; integration WIP; not in dev compose) |
| Realtime | Signalman | 18009 | WebSocket hub |
| Realtime | Signalman (gRPC) | 19005 | gRPC API |
| Support | Nginx | 18090 | Reverse proxy |
| Support | Prometheus | 9091 | Metrics (CLI deployment only) |
| Support | Grafana | 3000 | Dashboards (CLI deployment only) |
| Support | Metabase | 3001 | BI Analytics (CLI deployment only) |
| Support | Listmonk | 9001 | Newsletter Admin |
| Support | Chatwoot | 18092 | Support dashboard (via Nginx: /support) |
| UI | Web Console | 18030 | Application UI |
| UI | Marketing Site | 18031 | Public site |
| Support | Forms API | 18032 | Contact forms |
| Deferred | Lookout (api_incidents) | 18013 | Incident management (use Prometheus/Grafana instead) |
| Planned | Parlor (api_rooms) | 18014 | Channel rooms for interactive features |
| Support | Deckhand (api_ticketing) | 18015 | Support ticketing |
| Support | Deckhand (gRPC) | 19006 | Support gRPC API |
Foghorn (api_balancing) can determine geography from either:
It is recommended to point it to a local MMDB file, which ensures all events are enriched with Geo data. Only events originating from the Load Balancer can be enriched via geo headers.
To use a local database, set GEOIP_MMDB_PATH to the path of your MMDB file. If neither headers nor MMDB are available, Foghorn operates without geo routing data.
See website_docs/ for full documentation (Astro Starlight site):