boardop v0.1-beta
[SYS.OP] responder resident — read/query path live.

Talk to your grandMA3 console in plain English.

A tireless assistant programmer — it writes, deploys, and self-heals plugins while you point the lights at the audio guy.
$ join --beta read the docs →
dual-AI safety-gated self-healing
@claude
@gemini
history carries over ⇄
op@claude:~$ turn my spots on
CLAUDE · Firing OSC Commands
*checks the group*
Group 69 At 100
[CONTEXT] refreshed in-turn (GETCONTEXTAI) — next prompt sees the updated show data.
[tokens] in 7855  ·  out 104  ·  total 7959  ·  history 12/80
op@gemini:~$ @claude actually revert that
#  ↑ switch engines mid-session — the conversation carries over
op@claude:~$ store the look in sequence 50, label "nice"
[ 01 ] // BEFORE → AFTER

The repetitive work, off your plate.

— THE MANUAL WAY —
1. select the group
2. build a value state
3. store cue 1
4. tweak, store cue 2
5. add MAtricks for random phasing
6. assign it to an executor
…all in exact grandMA3 syntax, in the right order.
with boardop
op@claude:~$ make a sequence with some cues for the song "never gonna give you up"
#  → AI builds the cues + sequence and deploys them to the console
op@gemini:~$ now make it strobe harder
#  one command. any engine.
And the terminal isn't only for firing off commands — ask what is the mode of that fixture?, what's patched, or how you'd build something before you commit. It explains its reasoning in plain English.
[ 02 ] // FEATURE SUPPORT

Everything an assistant programmer should do.

[01] PLAIN ENGLISH → REAL MA3
Sequences, cues, MAtricks, presets, executors — described, not hand-typed.
[02] SELF-HEALING
A broken plugin's error loops back to the AI until it works — If it doesnt, it'll explain why.
[03] POLISH INTO A PANEL
@polish turns a plugin you've made into a resident GUI panel — buttons and fields, imported natively into the plugin pool.
[04] DUAL-AI, ONE HISTORY
Claude and Gemini, swappable mid-session with full context handover.
[05] SAFETY-GATED BY DEFAULT
Destructive commands and every generated plugin pause for your y/n.
[06] GROUNDED IN CONSOLE TRUTH
A harvested, verified object model — 565 classes.
[ 03 ] // HOW IT WORKS

English in. Verified MA3 out.

YOU (terminal)
natural language
server.py — the bridge
safety gates · routing · audit log
AI engine claude / gemini
run_commands · deploy_plugin · query_state
grandMA3 console
OSC /gma3/cmd → /python/feedback
errors feed back — the auto-heal loop redeploys the fix
— WHAT KEEPS IT HONEST —
ruleset ×3Verified MA3 syntax + Lua architecture rules, source of truth. A third, AI-mutable layer holds your custom rules via @update. object model565 classes, 617 enum collections, 156 Lua functions — harvested from the console, not guessed. show contextA live snapshot of your pools — groups, presets, sequences, executors with running cue state — injected every turn. read firstA resident responder lets the AI query the console before it acts — verify an object exists instead of guessing.
[ 04 ] // SAFETY

The bridge proposes. You approve.

Blast-radius filter — destructive keywords pause for manual confirmation before executing.
Plugin review gate — every generated Lua plugin waits for your approval before it reaches the console.
All-or-nothing — reject the plugin and the commands bundled with it never fire.
Safe execution — plugins compile inside a pcall harness; both compile and runtime errors report back.
Startup self-test — the bridge proves the console can report back before declaring ONLINE.
⚠ Guardrails, not guarantees. A programming & previz companion — built for a controlled environment with you in the loop, not to run a live show. Always test on onPC first.
🔍  PLUGIN REVIEW  🔍
344  -- DimmerChase20.lua
345  local seq = "Sequence 42"
346  for i = 1, 20 do
347    Cmd("Store Sequence 42 Cue " .. i)
348  end
luacheck: 0 errors · no destructive keywords
Deploy this plugin to the console? (y/n): 
⚠  BLAST RADIUS WARNING  ⚠
The AI generated a command containing a destructive keyword.
Delete Group 20 /NoConfirmation
Authorize execution? (y/n): 
[ 05 ] // QUICKSTART

Three commands to ONLINE.

step 1/3
$ pip install -r requirements.txt
Python 3.10+, Windows-first. onPC or a real console, v2.x.
step 2/3
$ copy config.example.py config.py
Add an Anthropic and/or Google API key. Sensible safety defaults already set.
step 3/3
$ run_server.bat
Self-test runs, console plugins install themselves, and you're ONLINE.
$ join --beta FSL-1.1-Apache-2.0 · zero-install beta bundle available for testers
[ 06 ] // BETA PROGRAM

Put boardop on your rig.

The beta is open to grandMA3 programmers who want to help shape the tool. Request a seat and the zero-install bundle lands in your inbox.
Zero-install bundle — self-contained, double-click and go. No Python setup required.
Direct line — your bug reports and workflow requests go straight to the dev, not a queue.
Shape the roadmap — beta testers decide what an assistant programmer should do next.
Works with grandMA3 onPC or a real console, software v2.x. Windows-first. You bring your own Anthropic or Google API key.
beta_request.form
[ 07 ] // CONTACT

Open a channel.

Found a bug, have a workflow in mind, or want to run the beta on your rig? The return path is open.
[GITHUB]
open an issue →
Bugs, feature requests, and questions — issues are the fastest path.
[EMAIL]
hello@boardop.dev
For anything that doesn't fit in an issue.
[BETA TESTING]
request the beta bundle →
Zero-install, self-contained — double-click and go.
▙ boardop beta · FSL-1.1-Apache-2.0
"grandMA3" is a trademark of MA Lighting Technology GmbH. Independent, unofficial project — not affiliated with or endorsed by MA Lighting.