Live presenting
A standalone deck syncs across your own windows via BroadcastChannel. Run it through the live server and it becomes a shared session: every connected device follows along, and plugins come alive.
Start a session
Section titled “Start a session”liebstoeckel live my-talk # a deck dir, or a built .htmlThis builds the deck (if needed), serves it on your LAN, and prints presenter + audience links:
▶ liebstoeckel live, session a1b2c3d4 on this machine presenter http://localhost:4321/?t=… audience http://localhost:4321/?t=… on the network presenter http://192.168.1.20:4321/?t=… audience http://192.168.1.20:4321/?t=…- Open the presenter link (or press p for the presenter window).
- The room opens the audience link: share it directly, or press q in the deck to show a scannable QR full-screen.
- Navigate: every viewer follows. Plugins (polls, Q&A, reactions) sync in real time.
Roles & sync
Section titled “Roles & sync”State lives in a Yjs document (a CRDT) shared over WebSocket. A small relay (Hub) keeps one doc per session and broadcasts changes.
- Presenter: drives the slide index; everyone follows. Can moderate plugins.
- Viewer: follows the presenter’s index; can still interact with plugins (vote, ask, react).
Roles come from an unguessable token in the URL (?t=…), not a login. A viewer’s
client is scoped to match: the presenter view (p / #presenter) and the
overview grid (o) are presenter-only: they stay disabled and dimmed in the
shortcut help (?) for viewers, so the speaker notes and plugin consoles aren’t
reachable from a shared audience link.
Where code runs
Section titled “Where code runs”- A plugin’s client part does WS + shared-state only and runs in every browser.
- A plugin’s optional server part runs once, on the machine that started
liebstoeckel live, never in the audience’s browsers.
Going beyond the LAN
Section titled “Going beyond the LAN”liebstoeckel live is LAN-first. To reach viewers over the public internet, point it at a relay:
liebstoeckel live my-talk --relay https://relay.example.com --relay-token <token>Code-first presentations your agent can author. One file out, no server.
Comments