Stoatworks Labs

User guide

Companion — Mynah user guide

v1.0.3Updated 22 August 2026

This module drives an Analog Way LivePremier (Aquilon) with lighting-desk command syntax, from a Stream Deck or any other Bitfocus Companion surface. Two ways in: type a command, or build one out of key presses.

The README covers installing the module. This is how to use both, and what the grammar will and will not accept.

Before you rely on this: the module has been driven end to end in Companion 5.0.1. The socket it uses is the same Web RCS WebSocket that Analog Way’s own browser UI uses, and it is unauthenticated — keep it on a trusted network, because anything that can reach it can put something on air.

This module was built with AI assistance, directed and reviewed by a human author.


Connecting

Device address and port. 80 for a switcher, 3000 for the LivePremier simulator. The module reconnects on its own if the link drops.


The Command action

Verb first, then what it acts on:

Command What happens
Recall Screen 1 Memory 5 Memory 5 into Screen 1’s preview
Recall Screen 1 Memory 5 Program Straight to program
Recall Screen 1 Thru 4 Memory 7 Four screens at once
Recall Master 12 A whole-desk memory
Recall Screen 3 Layer 1 Memory 8 A layer memory
Store Screen 1 Memory 5 Store program into memory 5
Store Master 12 If Screen 1 + 3 Category Source A masked store
Take Screen 1 Transition preview to program
Label Screen 1 Memory 5 "Wide Open" Name a memory
Delete Screen 1 Memory 5 Erase it

Ranges use Thru, + and -, so Screen 1 Thru 8 - 5 is every screen from 1 to 8 except 5.

Keywords may be shortened to any unambiguous prefix, so R Sc 1 Th 4 Me 7 is the same command as the long form — which matters when you are typing into a button field rather than a console.

The field supports Companion variables, so a command can be assembled at press time.


The two defaults that decide what reaches air

An unqualified Recall goes to Preview. An unqualified Store takes from Program — which is the device’s own default, not an invention here.

So getting to air always takes an explicit Program or a Take. There is no command that puts something on screen by accident because you left a word off.


Ranges

Bank Memories
Screen and Aux 1–1000
Master 1–500
Layer 1–50

Screens are 1–24, auxes 1–96, layers 1–128 plus Native.

Anything outside is refused rather than clamped, and the refusal is logged. A clamp would put memory 1000 on screen when you meant 10000 and typed a digit too many.


Every command names its own scope

Unlike the Mynah web tool, a button has no sticky selection. Every command must name its screen, and Select and Clear are refused for that reason.

This is the right trade for a surface: a button whose meaning depends on which button was pressed before it is a button that does the wrong thing after someone else walks past the desk.


The command builder

Build a command out of key presses instead of typing one.

Drag the Command builder presets onto a page: the numbered slot keys in order, then Back, Home, More, Fire and Save. Then tell the connection how many slot keys you laid out — a Companion module is never told how big a surface is, so it cannot work this out.

Press a slot and the faces change to the next set of choices: the verbs, then what to act on, then a list of screens, with a 123… key to a keypad for anything longer or for a range.

The page never changes; the keys relabel themselves. That is deliberate — a module cannot change Companion’s page, so the builder changes the faces instead. The upshot is that your muscle memory for where Fire is stays true all the way through.

Fire lights as soon as what you have built compiles, which is often before the last question is answered: Take Screen 1 is finished the moment the screen lands, and the offer of Preview or Program is only an offer.

The keypad carries Thru, + and - wherever the grammar takes a range, and hides them where it does not. Back is an undo, one press at a time.

Save parks the line on one of twenty-four macro slots. Macros live in the connection’s own config, so they survive a restart and travel with a Companion configuration export; each macro key labels itself.

What the builder deliberately leaves out

Set and Label.

Label needs a quoted string, and a control surface has no text entry. Set — live layer control — needs the device’s current buffer state, which this module does not track, so the compiler would refuse every one it produced. Offering either would be offering a key that cannot work.

Both are still available from the typed Command action.


Feedbacks

  • Memory is loaded on a screen — the memory sits in one of that screen’s preset buffers. It does not distinguish preview from program: the device reports buffers as A/B/C, and which one is preview differs between screens. Read it as “this memory is in play here”.
  • Connected to the device
  • Screen is selected in the vendor Web RCS — what the browser UI has selected, which is useful when someone else is driving it.
  • Builder: what a slot is showing — colours a slot key by what it holds, so an empty slot goes dark and a Delete goes red with nothing to configure.
  • Builder: the line would fire
  • Builder: the list has more pages
  • Macro: the slot holds a command

Troubleshooting

Symptom Cause
The builder’s slot keys run out The connection was not told how many you laid out.
A command was refused Out of range — the log says which part. It refuses rather than clamping.
Nothing reached air An unqualified Recall goes to preview. Add Program, or send a Take.
Select does nothing It is refused by design; every command names its own scope.
Set or Label missing from the builder Deliberate — see above. Use the typed Command action.
Fire lit before I finished Also deliberate: the line already compiles.

See also

  • README — installing, and the full action/feedback/variable list
  • companion/HELP.md — the same material, in Companion’s help panel

This guide lives in the project's own repository and is rebuilt from it — corrections are welcome as a pull request againstdocs/USER-GUIDE.md. Last updated 22 August 2026.