How sbernauer/breakwater works
Breakwater is a Pixelflut server: clients send newline-delimited or binary pixel commands, the server parses them into a shared framebuffer, and concurrently enabled sinks display or distribute that canvas. The graph preserves the documented web, native, VNC, RTMP, NDI, and Prometheus capabilities. Server/parser internals and web HTTP/state modules are represented where paths are supported; sink-specific wiring beyond sampled excerpts follows the documented capabilities and sink dispatcher.
Main entry points: mod.rs Sink dispatcher · shared_memory.rs Shared framebuffer · main.rs Runtime startup · server.rs TCP server
Components 25
Server runtime
- Runtime startup
breakwater/src/main.rs - TCP server
breakwater/src/server.rs - Connection buffer
breakwater/src/connection_buffer.rs
Pixel processing
- Command parsers
breakwater-parser/src/lib.rs - Shared framebuffer
breakwater-parser/src/framebuffer/shared_memory.rs - Simple framebuffer
breakwater-parser/src/framebuffer/simple.rs - Time tracking
breakwater-parser/src/framebuffer/time_tracking.rs
Canvas outputs
- Sink dispatcher
breakwater/src/sinks/mod.rs - Web sink
breakwater/src/sinks/web/mod.rs - HTTP and WebSocket
breakwater/src/sinks/web/http_api.rs - Web shared state
breakwater/src/sinks/web/state.rs - egui display
breakwater/src/sinks/egui/mod.rs - winit display
breakwater/src/sinks/winit.rs - VNC sink
breakwater/src/sinks/vnc.rs - FFmpeg stream
breakwater/src/sinks/ffmpeg.rs - NDI source
breakwater/src/sinks/ndi.rs
Statistics and metrics
- Statistics
breakwater/src/statistics.rs - Prometheus exporter
breakwater/src/prometheus_exporter.rs
Other components
- Pixelflut clients
- Web spectators
- Native viewers
- VNC viewers
- RTMP destination
- NDI receivers
- Prometheus scraper
Connections 33
- Pixelflut clients → TCP server: send commands
- Runtime startup → Shared framebuffer: creates
- Runtime startup → TCP server: starts
- TCP server → Connection buffer: buffers input
- TCP server → Command parsers: parses commands
- Command parsers → Shared framebuffer: reads and writes pixels
- TCP server → Statistics: reports connection events
- Runtime startup → Statistics: starts
- Runtime startup → Sink dispatcher: starts enabled sinks
- Sink dispatcher → Web sink: dispatches
- Sink dispatcher → egui display: dispatches
- Sink dispatcher → winit display: dispatches
- Sink dispatcher → VNC sink: dispatches
- Sink dispatcher → FFmpeg stream: dispatches
- Sink dispatcher → NDI source: dispatches
- Web sink → Shared framebuffer: reads pixels
- Web sink → Web shared state: publishes frames and stats
- HTTP and WebSocket → Web shared state: serves shared channels
- Web sink → HTTP and WebSocket: serves routes
- Web spectators → HTTP and WebSocket: connects
- egui display → Shared framebuffer: reads canvas
- egui display → Native viewers: renders
- winit display → Shared framebuffer: reads canvas
- winit display → Native viewers: renders
- VNC sink → Shared framebuffer: reads canvas
- VNC sink → VNC viewers: serves display
- FFmpeg stream → Shared framebuffer: reads canvas
- FFmpeg stream → RTMP destination: streams video
- NDI source → Shared framebuffer: reads canvas
- NDI source → NDI receivers: publishes source
- Statistics → Prometheus exporter: broadcasts information
- Runtime startup → Prometheus exporter: starts exporter
- Prometheus scraper → Prometheus exporter: scrapes metrics