Lumencast

The missing standard for server-driven displays.

Reactive scenes. Live state. Leaf-grain updates over a tiny LSDP WebSocket protocol. Drop a mount() on any browser, OBS browser source, CEF wrapper, or embedded frame, and your display becomes a thin reactive client of your backend.

Install

pnpm add @lumencast/runtime @lumencast/protocol

Or load directly in a browser via the npm CDN :

<script type="module">
  import { mount } from "https://cdn.lumencast.dev/@lumencast/runtime@0.1.0/dist/lumencast.js";
  mount({
    target: document.getElementById("stage"),
    serverUrl: "wss://example.com/lsdp/v1",
    token: "<jwt>",
    mode: "broadcast",
  });
</script>

The surface

One protocol (LSDP/1), one declarative scene format (LSML 1.1), a runtime that mounts in three lines.

Packages

Package What it does
@lumencast/runtime Browser runtime — mount(), transport, store, primitives.
@lumencast/server Node server kit — HTTP+WS, scene composition, leaf store, adapters.
@lumencast/protocol Pure protocol code — codec, sequence, types. No IO.
@lumencast/dev-server Mock server for tests — WS + HTTP + /__mock/* control plane.
@lumencast/runtime-svelte Headless Svelte adapter — leaf state as Svelte stores.
@lumencast/runtime-vue Headless Vue 3 adapter — leaf state as Vue refs.
@lumencast/compiler LSML 1.1 → flat RenderBundle compiler.