Warning: This stack is in active beta. Interfaces and schemas change frequently. If deploying in a production environment, be careful with data migrations when updating major versions. Plan ahead for stuff to break.
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).
| Bundle | Total Emitted Size |
|---|---|
| marketing | |
| docs | |
| webapp client | |
| webapp server |
- Control / API plane
- Bridge (
api_gateway): GraphQL gateway and MCP hub - Commodore (
api_control): auth, streams, business logic - Quartermaster (
api_tenants): tenants, clusters, nodes - Purser (
api_billing): usage, invoices, payments - Livepeer Signer: ETH transaction signer for Livepeer Gateway
- Bridge (
- Media plane
- Foghorn (
api_balancing): regional load balancer & media pipeline orchestrator (HA via Redis, cross-cluster federation via FoghornFederation gRPC) - Helmsman (
api_sidecar): edge sidecar, MistServer management via Foghorn - MistServer: ingest/processing/edge delivery
- Livepeer Gateway (golivepeer): transcoding/AI processing
- Chandler (
api_assets): cluster-scoped static media asset server for thumbnails, sprites, VOD metadata, and cached S3 assets
- Foghorn (
- Event & Analytics plane
- Periscope Ingest (
api_analytics_ingest): consumes Kafka, writes ClickHouse - Periscope Query (
api_analytics_query): serves analytics & usage summaries - Decklog (
api_firehose): gRPC ingress → Kafka - Signalman (
api_realtime): real-time event fan-out and WebSocket hub - Kafka: event backbone
- ClickHouse: time‑series
- Periscope Ingest (
- Network & Trust plane
- Navigator (
api_dns): public DNS automation & certificate issuance - Privateer (
api_mesh): WireGuard mesh agent & local DNS - Nginx / Caddy: ingress, reverse proxying, and TLS termination
- Navigator (
- Infrastructure substrate
- PostgreSQL/YugabyteDB: service-owned state and configuration database
- Support & Experience Services
- Skipper (
api_consultant): AI video consultant with RAG, tool-use, and SSE streaming - Deckhand (
api_ticketing): support messaging and Chatwoot adapter - Steward (
api_forms): contact forms and newsletter handling - Parlor (
api_rooms): planned stream interactivity - Listmonk / Chatwoot: newsletter and support backends
- Skipper (
- Interfaces
- Chartroom / Web Console (
website_application): main dashboard - Foredeck / Marketing Site (
website_marketing): public site - Logbook / Documentation (
website_docs): Astro Starlight docs - Player / Studio packages (
npm_player,npm_studio): embeddable playback and ingest components
- Chartroom / Web Console (
- Observability & Operations
- VictoriaMetrics / Prometheus / Grafana / Metabase: metrics, dashboards, and BI
- Lookout (
api_incidents): deferred incident aggregation service
Principles
- Strict service boundaries (no cross‑DB reads)
- Time-series and event analytics live in ClickHouse; service-owned state and aggregates live in Postgres/YugabyteDB
- Type safety by reusing the gRPC types straight from the emitter. Passthrough and leave source data intact as much as possible, with optional enrichment fields
| Component | linux/amd64 | linux/arm64 | darwin/arm64 |
|---|---|---|---|
| Docker images (all services) | yes | yes | — |
| Service binaries | yes | yes | yes (signed) |
| CLI | yes | yes | yes (signed) |
| Edge node (native) | yes | yes | yes |
All darwin binaries are code-signed and notarized via Apple Developer ID. Docker images are linux-only (macOS runs them via Docker Desktop's Linux VM).
Install via Homebrew: brew tap livepeer-frameworks/tap && brew install frameworks-cli
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 upThe 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)
- GraphQL Gateway: http://localhost:18090/graphql
- GraphQL WebSocket: ws://localhost:18090/graphql/ws (subscriptions)
- App via Nginx: http://localhost:18090
- Web Console: http://localhost:18030
- Marketing site: http://localhost:18031
- Listmonk (Admin): http://localhost:9001
- MistServer: http://localhost:4242 (RTMP: 1935, HTTP: 8080)
- Kafka (external): localhost:29092
- Postgres: localhost:5432
- ClickHouse: 8123 (HTTP), 9000 (native)
All build and test commands go through the Makefile. Key targets:
| Target | Description |
|---|---|
make build |
Build all service binaries |
make test |
Run all tests (with race detector) |
make lint |
Run Go + frontend lint checks (matches CI lint jobs) |
make ci-local |
Run main CI checks locally (go/frontend lint, test, build) |
make verify |
Full verification (tidy, fmt, vet, test, build) |
make env |
Generate .env from config/env/ |
Single service: make build-bin-<name> (e.g. make build-bin-purser). See Makefile for all targets.
| Plane | Service | Port | Notes |
|---|---|---|---|
| Control / API | Bridge | 18000 | GraphQL Gateway and MCP hub |
| Control / API | Commodore | 18001 | Health/Metrics |
| Control / API | Commodore (gRPC) | 19001 | gRPC API |
| Control / API | Quartermaster | 18002 | Health/Metrics |
| Control / API | Quartermaster (gRPC) | 19002 | gRPC API |
| Control / API | Purser | 18003 | Health/Metrics |
| Control / API | Purser (gRPC) | 19003 | gRPC API |
| Control / API | Livepeer Signer | 18016 | ETH transaction signer for Livepeer Gateway (not in dev compose) |
| Event & Analytics | Periscope Query | 18004 | HTTP health/metrics only |
| Event & Analytics | Periscope Query (gRPC) | 19004 | gRPC API |
| Event & Analytics | Periscope Ingest | 18005 | Kafka consumer |
| Event & Analytics | Decklog | 18006 | gRPC |
| Event & Analytics | Decklog (metrics) | 18026 | Prometheus metrics |
| Event & Analytics | Kafka (external) | 29092 | Host access |
| Event & Analytics | Kafka (internal) | 9092 | Cluster access |
| Event & Analytics | ClickHouse (HTTP) | 8123 | Analytics database |
| Event & Analytics | ClickHouse (Native) | 9000 | Analytics database |
| Event & Analytics | Signalman | 18009 | WebSocket hub |
| Event & Analytics | Signalman (gRPC) | 19005 | gRPC API |
| Media | Helmsman | 18007 | Edge API |
| Media | Foghorn | 18008 | Balancer |
| Media | Foghorn (internal gRPC) | 18019 | Internal-CA gRPC listener for Foghorn HA relay |
| Media | Foghorn (external gRPC) | 18029 | Public-ACME gRPC listener for Helmsman, edge bootstrap/enrollment, and FoghornFederation |
| Media | Foghorn Redis | 6379 | Foghorn state sync (HA). Separate from Chatwoot Redis |
| Media | MistServer (control) | 4242 | Control API |
| Media | MistServer (RTMP/E-RTMP) | 1935 | Ingest |
| Media | MistServer (HTTP) | 8080 | HLS/WebRTC delivery |
| Media | MistServer (SRT) | 8889/udp | SRT ingest |
| Media | Livepeer Gateway | 8935 | Livepeer compute gateway (transcoding orchestration; not in dev compose) |
| Media | Chandler | 18020 | Cluster-scoped asset serving (thumbnails, sprites, VOD metadata) |
| Network & Trust | Navigator | 18010 | Public DNS management & ACME (production deployments; intentionally excluded from single-node dev compose) |
| Network & Trust | Navigator (gRPC) | 18011 | gRPC API (production deployments; intentionally excluded from single-node dev compose) |
| Network & Trust | Privateer | 18012 | WireGuard mesh agent & Local DNS (production deployments; intentionally excluded from single-node dev compose) |
| Network & Trust | Nginx | 18090 | Reverse proxy |
| Infrastructure | PostgreSQL | 5432 | Primary state database |
| Support & Experience Services | Listmonk | 9001 | Newsletter Admin |
| Support & Experience Services | Chatwoot | 18092 | Support dashboard (via Nginx: /support) |
| Support & Experience Services | Forms API | 18032 | Contact forms |
| Support & Experience Services | Parlor (api_rooms) | 18014 | Planned channel rooms for interactive features |
| Support & Experience Services | Deckhand (api_ticketing) | 18015 | Support ticketing |
| Support & Experience Services | Deckhand (gRPC) | 19006 | Support gRPC API |
| Support & Experience Services | Skipper | 18018 | AI video consultant HTTP |
| Support & Experience Services | Skipper (gRPC) | 19007 | gRPC API |
| Interfaces | Web Console | 18030 | Application UI |
| Interfaces | Marketing Site | 18031 | Public site |
| Interfaces | Documentation | 18033 | Starlight docs |
| Observability & Operations | Prometheus | 9091 | Metrics (CLI deployment only) |
| Observability & Operations | Grafana | 3000 | Dashboards (CLI deployment only) |
| Observability & Operations | Metabase | 3001 | BI Analytics (CLI deployment only) |
| Observability & Operations | Lookout (api_incidents) | 18013 | Deferred incident management service |
Public docs: logbook.frameworks.network (source: website_docs/)
| Audience | Covers |
|---|---|
| Streamers | Quick start, encoder setup, API reference, playback |
| Operators | Architecture, deployment, DNS, CLI, multi-cluster, WireGuard |
| Selfhosted | Self-hosted edge nodes with enrollment tokens |
| Agents | MCP integration, wallet auth, x402 payments |
Internal docs (in-repo, for contributors):
| Directory | Purpose |
|---|---|
docs/architecture/ |
System design decisions (analytics, routing, …) |
docs/standards/ |
Design system, metrics naming, testing policy |
docs/rfcs/ |
Proposals under discussion |
docs/skills/ |
Agent integration & discovery files |
CONTRIBUTING.md |
Dev setup, code style, workflows, PR process |
