dpx_deckDoc dpx_deckDoc

Auto-generated documentation for your Bitfocus Companion rig

Capture every button, annotate it, ship it as a browsable, editable site — no more live walkthroughs to hand off a show.

Contributors Forks Stargazers Issues

If you run Bitfocus Companion to drive a Stream Deck (or any StreamDeck-style panel) for a show, a real rig can end up with dozens of pages and hundreds of buttons wired to OSC, MIDI, ATEM, vMix, QLab, disguise, and everything else Companion talks to — none of it obvious to someone who didn't build it. dpx_deckDoc turns a live Companion instance into a browsable, editable reference site: a real picture of every button, what it actually does, and a place to write that down — without hand-screenshotting anything.

Try the live demo → Full README & source →
The demo below is a real captured rig — 91 pages, 2823 buttons — and it's fully editable in your browser. Nothing you type there leaves your own browser; a "Reset Demo" button puts it back the way it was. →

Quickstart

Three commands, in order — you don't need to learn the whole tool to get a first result.

git clone https://github.com/dubpixel/dpx_deckDoc.git
cd dpx_deckDoc
npm install
node src/cli.js scrape --host 10.0.0.5 --device my-rig

Replace the IP with your Companion instance and my-rig with whatever you want to call it. This is the only command that talks to Companion — it pulls the config export, walks every page, and captures every button's real rendered image, in one shot. Read-only; nothing on the Companion side changes.

node src/cli.js serve --out devices

Open http://localhost:4321. Every button is already labeled with what it's wired to. Click any button to add a plain-English write-up, then hit Export Site to freeze it into a self-contained handoff folder — no server needed to view it.

The three commands, in plain terms

CommandWhat it's forWhen you'd run it
scrapeCapture a Companion instanceOnce per rig, and again if the layout changes
serveThe editor you write notes inWhenever you're actively documenting
buildFreeze one device to a static siteHandoff time (also the in-browser "Export Site" button)

Each Companion instance you scrape becomes its own device under devices/<name>/ — scrape as many rigs as you want and switch between them in the editor. New devices can also be added straight from the browser via + New Device.

Annotation fields

FieldWhere it comes fromRendered as
HeadingYou write itBold title
BodyYou write itPlain paragraph
NoticeYou write itRed — "don't do this unless..." warnings
NoteYou write itItalic — a quieter aside
CommandAuto-filled from the config exportRaw connection/action reference
Label overrideYou write it, optionalReplaces the on-image text, shown as an overlay

scrape pre-fills Command for every button from the real config export — it never invents text, and never overwrites a hand-edit. Body/Notice/Note/Label override always start empty and are entirely yours.

Screenshots

Both taken from the live demo — real captured button art, not placeholders.

Live editor mid-annotation
The live editor — click any button to write it up.
Static handoff site with editable demo form open
The demo, mid-edit — this is what "editable" actually looks like.

Managing pages & devices

Requirements

  • Node.js — npm install pulls in Playwright, used only during scrape
  • A Companion instance reachable over HTTP (its web UI port, usually 8000)

Testing the tool itself

npm test

Built with

Node.js Playwright Bitfocus Companion

Links