DEMO MODE · simulated sample markets are running (studio only — not labelled on air)
Breaking
News feed · layout 3 screen · text goes live on push / TAKE
Breaking updates · panel module (layout 2 left by default) · newest 2 on air · push to air
Edits stay in the editor until you push (PUSH UPDATES LIVE or TAKE); on air keeps the last pushed list. New updates are timestamped when pushed.
Upcoming events · panel module (top of the layout 2 right rail) · ET · passed events drop off · push to air
Edits stay in the editor until you push (PUSH EVENTS LIVE or TAKE); on air keeps the last pushed list and drops events once their time passes. When the pushed list has events they replace the live schedule; empty = the live C-SPAN schedule when reachable, otherwise the section hides.
Layout 3
Cameras
Show / hide
Run of show
Hotkeys
Shift+F full screen · 1–5 layout · V media show/hide · B banner · F flash · L name straps · M markets · T tickers · P side panels · H top bar · Space start/pause · ←/→ segment · R reset segment · Ctrl+Enter take
Stream Deck: use “Hotkey” actions on these keys with this dock focused, or “Website” actions to trigger.html?do=breakingToggle (same browser profile as the overlay). See README.
Live media
Paste an image URL or any web link (or upload an image), pick the camera box it goes in, then PUSH LIVE. It plays inside that camera slot; "Make full screen" expands it to the whole frame. YouTube/Vimeo play muted, X posts use X's embed, images fill the box; sites that refuse embedding show a clean link card (choose "Web page" to force a frame). For live browsing (scrolling X etc.) choose "Live browser (OBS capture)": the box becomes a transparent window — place an OBS Window Capture of your browser behind the overlay at that box (pixel positions in README).
Single camera LAYOUT 5
Kalshi market = “Chart tile / side” (pick it under Markets / charts with “→ Chart tile / side”): it fills the camera-row chart tile on layouts 1 & 3 (when Chart tile is ON) and the layout 5 side panel (when Side panel = Kalshi market). Live media = whatever is loaded above.
Panels
Left and right side panels, on any layout: the camera row narrows and the panels sit beside it. Pick the modules for each side; they stack in a fixed order (Breaking updates · Upcoming events · Biggest movers · Guest vs market · Resolving soon · Politics Monitor A/B · Kalshi chart C · Live media). Sections with no data hide; rows, then whole sections, drop so a panel always fits. Kalshi chart C = the “Chart tile / side” market; Live media = whatever is loaded above.
Market tickers LIVE · 30s
Type a symbol: stocks AAPL, NVDA · indices ^GSPC^IXIC^DJI · gold GC=F · crypto BTC-USD. Label is what shows on air.
Market cards
The 3-card row under the bar — runs by itself: Kalshi's top politics/elections markets worldwide are discovered automatically (refreshed every 6 h, prices every 10 min), each card shows the outcome that moved most in 24h with Kalshi's own photo, and sets cycle biggest movers first. Nothing to push for auto. Edits here are staged: PUSH CARDS LIVE (or TAKE) puts them on air. Row on/off is immediate.
Markets / charts KALSHI
Live Kalshi prediction-market charts (run the studio with serve.py — it proxies Kalshi's API). “L2 top” = layout 2 left column, top chart · “L2 bottom” = layout 2 left column, bottom chart · “Chart tile / side” = the chart tile that takes over a camera slot on layouts 1 & 3 (when Chart tile is ON), the layout 5 side panel (Side panel = Kalshi market) and the Kalshi side in Panels mode. Changes here go live immediately.
Guest vs market · layout 2 right rail · push to air
Shows on air when name, guest % and a Kalshi event are set.
Right rail watch list · Kalshi series for Biggest movers / Resolving soon
Plus the series of the three picked charts. Kalshi data, cached ~3 min.
Guests / remote cameras VDO.Ninja
One private link per camera slot. Guest opens the invite in Chrome; you paste the OBS view link into a Browser source (1920×1080) under that slot. Name / title / handle are the same fields as the on-air name strap (press TAKE to put them on air).
On-air camera slots · one OBS source
Pick what fills each camera slot in program.html (the single OBS Browser Source). Changes stay staged (yellow) until PUSH CAMERAS or TAKE. The video follows every layout switch; a slot that is not in the current layout just hides (the guest stays connected).