The missing standard for server-driven displays.
A wire protocol, a typed schema and a multi-runtime client kit, Apache 2.0, multi-language, broadcast-grade and IoT-grade.
A serveur authoritatif détient un état temps-réel. Il doit le pousser à un display passif (browser, kiosque natif, OBS browser source, iframe, terminal, mobile) qui le rend visuellement. Le display n'a aucune logique métier, ne mute pas le state local, ne fait aucun calcul. Il rend, point.
This pattern is everywhere — broadcast overlays, trading dashboards, NOC walls, esports brackets, ATC consoles, industrial SCADA, live betting tickers, conference Q&A boards, digital signage, game spectator UIs — and is systematically reimplemented ad-hoc in every domain. Lumencast extracts the kernel as :
- LSDP/1 — Leaf State Delta Protocol — a WebSocket protocol that pushes typed state at leaf-grain (
path → value), with snapshot+delta, sequenced delivery, gap detection, reconnect, and token rotation - LSML 1.1 — Lumencast Scene Markup Language — a JSON content-addressed format describing a tree of 9 closed primitives (
stack,grid,frame,text,image,shape,media,repeat,instance), with bindings, GPU-only animations, operator-input metadata, and 1.1+ extensions (universal props, multi-fill / gradients, vendor primitives via §17) - Multi-language — TypeScript / Go / Rust / Python — cross-paradigm, conformance-suite-tested
The "real-time display" pattern is everywhere yet there is no shared protocol :
| Tool | What it gives | What it doesn't |
|---|---|---|
| Phoenix LiveView | HTML diffs server-pushed | Locked to Elixir/Phoenix. Pushes HTML, not state |
| Hotwire / Turbo Streams | HTML fragments | Locked to Rails. HTML, no schema |
| HTMX + SSE | DOM patches via SSE | DOM-only, no typed schema, large XSS surface |
| Liveblocks | Collaborative state | Bidirectional CRDT. Overkill for displays. SaaS |
| PartyKit | WebSocket-as-a-service | Pubsub generic, no rendering contract |
| Apollo subscriptions | GraphQL push | Typed but no rendering protocol |
| Caspar CG | Industry broadcast graphics | C++ from 2007, not web stack |
| Singular.live, Vizrt | SaaS broadcast graphics | Closed, vendor lock, expensive |
Lumencast fills the gap : an open protocol + schema you self-host, multi-language, broadcast-grade and dashboard-ready.
- Push leaf-grain — state travels as
path → valuepatches at the leaf level. The client maintainspath → signal. Only components reading that path re-render. No DOM diff. No reconciliation. - Closed primitive catalog — the runtime renders only the 8 LSML primitives. No
eval, nodangerouslySetInnerHTML, no arbitrary HTML. Security by construction. - Content-addressed scene bundle — the bundle's identity is its sha256 hash. Cache forever. Multiple versions co-exist transparently. Rollback is just an URL change.
| Repo | Purpose | Status |
|---|---|---|
lumencast-protocol |
LSDP/1 + LSML 1.1 specs, conformance fixtures + scenarios, JSON Schema | draft — usable as reference |
lumencast-js |
TypeScript runtime + Node server SDK monorepo | scaffolding |
lumencast-go |
Go server SDK + lumencast CLI binary |
scaffolding |
lumencast-rs |
Rust SDK | scaffolding |
lumencast-py |
Python SDK | v0.1.0 |
lumencast-figma |
Figma plugin — author LSML 1.1 scenes visually, round-trip-stable export + import | v0.1.0 |
More languages and runtimes (Vue, Svelte, Flutter, TUI, native) land in subsequent waves once wave 1 stabilises.
The first Layer 5 authoring tool ships in wave 3a :
lumencast-figma— open-source Figma plugin that exports Figma frames to LSML 1.1 bundles (.lsml) and reimports them back. No JSON written by hand, full LSML 1.1 surface (text / shape / image / frame / stack / instance / multi-fill gradients / Figma variable tokens / operator inputs). Apache 2.0, networkAccess: none, zero telemetry. The plugin is the leftmost arrow of the Figma → Prism → Orion pipeline.
This project is early. Specs are draft, no SDK has shipped a v0 release yet. The conformance suite ships v0 with 16 scenarios covering the LSDP/1 + LSML 1.0 contract surface.
Watch the org for releases — when wave 1 SDKs land their initial v0.1.0, this README will reflect it.
- LSDP/1 — wire protocol
- LSML 1.0 — scene format
- Runtime API contract
- Performance budgets
- Error code taxonomy
- Conformance suite
Apache 2.0 across the entire ecosystem.
The project name "Lumencast" and the LSDP/LSML acronyms are trademarked separately ; only conformance-passing implementations may use the name without qualification (see GOVERNANCE.md § Brand).