Stoatworks Labs

Software

Everything we've built

77 open-source projects, grouped by the part of the job they belong to. Every one of these has a public repo you can read, build and fork. Narrow them by what will run on the machine in front of you, what they load into, and what gear they talk to — then download a build straight from the card, watch the ones that have a video without leaving the page, or try the ones with a live demo in your browser.

Discipline
Runs on
More filters
Plugs into
Talks to
Type
Status
Only show
Hide

77 projects

RFutils — RF coordination & mic monitoring

RFutils

In development

RF & Wireless · Audio / Application/ TypeScript/ v0.3.1

A browser-based RF suite for radio mics: WWB/WSM/PMSE file exchange, live Shure and Sennheiser monitoring with headphone cueing, IM-aware coordination, and device programming.

WSM–WWB Bridge — Shure to Sennheiser, both ways

WSM–WWB Bridge

Field proven

RF & Wireless / Application/ Python/ v1.0.1

Moves frequency-coordination data between Shure Wireless Workbench and Sennheiser Wireless Systems Manager. Reads and writes both native formats, reverse-engineered from real exports, plus a generic CSV column mapper.

PMSE → WWB — Ofcom licence to Workbench

PMSE → WWB

Field proven

RF & Wireless / Application/ Python/ v0.1.0

Turns an Ofcom PMSE licence schedule PDF into Shure Wireless Workbench import files — a documented frequency list, a CSV reference sheet, and an experimental native .shw show file.

MicWizard — Wireless mic fleet monitor

MicWizard

Released

RF & Wireless · Audio / Application/ TypeScript/ v0.1.2

Discovers and monitors Shure and Sennheiser wireless receivers on the network: AES67 metering, battery and RF status, local headphone cue, and optional Companion-driven Dante routing.

SimpleCue — Audio cue player for theatre

SimpleCue

Field testing

Audio · Show Control / Application/ C++ / JUCE/ v0.3.2

A platform-independent audio cue player for theatre and live events — cues, fades, links, loops and vamps, with a per-cue output routing matrix. Driven by OSC, MIDI, MSC, MMC, Art-Net or sACN.

Contourtonist — Equal-loudness EQ that tracks the room

Contourtonist

Field testing

Audio / Plugin & Module/ C++ / JUCE/ v0.1.1

Measures how loud the room actually is — from a calibrated measurement microphone or an SPL meter's live output — and applies the ISO 226:2003 equal-loudness correction needed to hold the tonal balance the system was tuned for as the show level moves.

squawk — Open partyline intercom

squawk

In development

Audio · Networking & Infrastructure / Application/ Rust

The software half of a partyline intercom rig: a server that mixes, and endpoints with up to ten keys each. Every key is its own AES67 stream carrying either a partyline bus — minus that endpoint's own voice — or a direct point-to-point path.

Dante BabelBox — Cross-vendor Dante control

Dante BabelBox

Gathering captures

Audio / Application/ Rust/ v0.1.1

A cross-vendor Dante control bridge: preamp gain and phantom control across Behringer/Midas, Allen & Heath and Yamaha, plus radio-mic telemetry from Shure and Sennheiser.

SRT Router — SRT crosspoint router

SRT Router

Field testing

AV Systems · Networking & Infrastructure / Application/ Rust/ v0.1.3

A broadcast-router-style crosspoint for SRT: any number of inputs and outputs, each output live-switchable to one source, added and removed at runtime from a web UI. Pure relay, no transcode. NDI transport included.

Rookery — One cue, every WebLinked

Rookery

Released

AV Systems / Application/ Rust/ v0.1.1

One web UI for a fleet of WebLinked instances: tag them into groups, fan any WebLinked command out to a group or the whole fleet over OSC, and watch each instance's real state come back over HTTP. A lighting desk or cue stack can drive the same groups with one OSC message, reusing WebLinked's own verbs so an existing button is retargeted by editing the front of the address.

WebLinked — A URL in, SDI, NDI and a screen out

WebLinked

Field proven

AV Systems / Application/ C++/ v0.7.1

Renders any web page offscreen through Chromium at a broadcast raster and rate, then sends it to DeckLink and AJA over SDI, to the network as NDI and OMT, and fullscreen to a GPU-attached display — every output taking the same frame. It can run several such pipelines at once, each with its own browser, clock and raster, so a page that hangs on one feed cannot touch the others. The engine clocks the browser one frame at a time rather than letting it paint on its own timer, so 50 ticks a second really is 50 paints. Settings, live diagnostics and an interactive preview are all in the browser, so a rack machine needs nothing but an HTTP port.

Kestrel — One wide shot in, several tighter shots out

Kestrel

In development

AV Systems / Application/ Rust

Takes a single video input — typically a locked-off wide of a stage — lets you draw any number of regions of interest on it, and sends each region back out of a Blackmagic DeckLink, cropped and scaled to the output raster.

atem-scopes — Scopes around an ATEM multiview

atem-scopes

Released

AV Systems / Application/ TypeScript/ v0.1.0

Video scopes arranged around a live ATEM multiview. Waveform, vectorscope, histogram, false colour, zebras and focus peaking on any multiview window — program and preview included — with sources named live from the switcher's own multiviewer config. Desktop app and browser build.

ATEM Overseer — ATEM fleet dashboard

ATEM Overseer

Field testing

AV Systems / Application/ TypeScript/ v0.2.2

A browser dashboard to monitor and control a fleet of Blackmagic ATEM switchers, styled after the BMD multiviewer. Ships as a desktop tray app too.

ATEM Fleet Admin — Provision every ATEM at once

ATEM Fleet Admin

Field testing

AV Systems / Application/ TypeScript/ v0.3.0

Provision a whole fleet of ATEM switchers at once. Model-aware config forms export loadable XML plus a media folder, or apply live over the network — instead of one unit at a time on a flight case at 02:00.

animATEM — ATEM control with DVE preview

animATEM

In development

AV Systems / Application/ TypeScript/ v0.1.2

Control for ATEM Mini Pro/Extreme ISO with something the hardware doesn't give you: a software-composited SuperSource/DVE preview, built by capturing the switcher's own multiview over UVC. Touchscreen operator UI plus a Companion module.

caspar-AV — CasparCG media server console

caspar-AV

In development

AV Systems · Content Management / Application/ Rust/ v0.1.1

A live-events media server built on CasparCG — screens on a canvas, frame-accurate cues, a media library, GDD template forms and a trigger grid, all in a browser. Verified against a real CasparCG 2.5.0.

Resolume OFX Bridge — OpenFX plugins in Resolume

Resolume OFX Bridge

Field testing

Video FX / Plugin & Module/ C++/ v0.8.1

Runs OpenFX plugins — the format DaVinci Resolve uses — inside Resolume Arena and Avenue. Point the app at your OFX folder, choose where the results go, press Start: it writes one FFGL plugin per OFX plugin, each carrying that plugin's real parameters into Resolume's own UI. No compiler needed.

Resolve Configurator — Build a Resolve project from CSV

Resolve Configurator

Field testing

AV Systems · Content Management / Application/ Python/ v0.1.3

Scaffolds an entire DaVinci Resolve project — theatre and day bins, per-session timelines, imported media and smart-bin recipes — from the same session CSV that drives the file-drop workflow.

Presentation Commander — Server — NDI matrix for live events

Presentation Commander — Server

Field testing

Content Management · AV Systems / Application/ TypeScript/ v1.0.2

Master control for a presentation room: a real-time NDI video matrix router, layered scene compositor, presenter-notes hub, and a Control Surface with a JSON-RPC automation API.

Presentation Commander — Client — A presenter for the stage laptop

Presentation Commander — Client

Field testing

Content Management / Application/ TypeScript/ v1.1.2

The presentation-laptop half: a bespoke PDF/Keynote/Google Slides engine with dual NDI outputs — Program and Next Slide — driven remotely from the Server.

Presentation Converter — Slides to PDF, notes intact

Presentation Converter

Field testing

Content Management / Application/ TypeScript/ v0.1.2

Converts Keynote, PowerPoint, Google Slides and ODP to PDF with a presenter-notes sidecar, so notes survive the conversion. GUI, CLI, server and a Nextcloud app from one codebase.

PowerPoint Font Manager — The fonts a deck actually uses, and the ones you are missing

PowerPoint Font Manager

In development

Content Management / Browser app/ TypeScript

Drop in a .pptx and find out which fonts it actually uses, which of those are installed on the machine looking at it, and what to do about the rest. The hard part is that a plain search of the file is wrong: every Office theme carries a script-fallback table naming around thirty CJK and Indic fonts whether or not the deck contains a single such character, so three real presentations report 39, 36 and 9 typefaces where the true answers are 2, 4 and 6. Decks also name faces rather than families — "Helvetica Neue Medium", "Poppins Regular", "Times Roman" — which a naive check calls missing when the font is sitting right there. It resolves both before it says anything. Missing fonts that Google Fonts publishes can be fetched, and anything left over goes into a sidecar .zip with per-platform installers. A desktop build installs them outright.

File Drop Batch — Bulk file drops in Nextcloud

File Drop Batch

Released

Content Management / Plugin & Module/ PHP/ v1.4.2

A Nextcloud app for production teams: build a show from a CSV, the browser or a live Google Sheet, and it creates a folder and upload-only drop link per session, emails each presenter, and can create per-theatre accounts scoped to their own folder.

Companion — Presentation Commander Server — Companion module

Companion — Presentation Commander Server

Released

Show Control · Content Management / Plugin & Module/ JavaScript/ v1.1.0

Bitfocus Companion module: route outputs, recall scenes, blackout, send stage notes and drive next/previous slide from a Stream Deck.

System Graft — Graft modules into an initrd

System Graft

Field testing

Networking & Infrastructure / Application/ Python/ v0.2.0

Injects out-of-tree kernel modules into a SquashFS initrd and writes it to bootable removable media. You supply the image and the modules — useful when an installer doesn't know about your NIC or RAID card.

av-launcher — Tray launcher shell for the web-server apps

av-launcher

Released

Networking & Infrastructure / Application/ Rust/ v0.1.1

A menu-bar tray launcher shell for the local web-server apps in this fleet. Pick a network interface and port, start and stop the server, open the web UI — without each app building its own.

stoatworks-unraid — Container packaging for the web fleet

stoatworks-unraid

In development

Networking & Infrastructure / Library & Protocol/ JavaScript

Dockerfiles, compose files and Unraid Community Applications templates for the self-hostable apps in this fleet — all generated from two JSON files rather than written by hand.

gh-fleet-analytics — GitHub numbers, before GitHub forgets them

gh-fleet-analytics

Released

Networking & Infrastructure / Library & Protocol/ Python/ v0.1.0

Snapshots every repo an account owns into per-repo JSON committed to git, and renders a password-gated dashboard from it — because GitHub keeps traffic for 14 days and reports stars and downloads only as a running total.

Blend Calc — Projector edge blends, costed

Blend Calc

In development

AV Systems / Browser app/ TypeScript

A projector edge-blend calculator that runs entirely in the browser. Flat or cylindrical canvas, any array, and the solver closes the array on the screen exactly — then reports the system resolution, the doubled and quad-covered overlap you pay for twice, the lens needed per position, a PDF report and a Resolume Arena advanced-output file.

Pixel Peeker — LED wall layout and capacity

Pixel Peeker

In development

AV Systems / Browser app/ TypeScript

A browser tool for designing LED video walls: lay out cabinets, add NovaStar or Brompton processors, wire the ports, and see each port's load and headroom. The capacity model accounts for the power-of-two packing controllers actually use, so it reproduces the manufacturers' published per-port figures rather than overstating them.

Aspect Calc — Ratio, pitch, size and PowerPoint slides

Aspect Calc

In development

AV Systems / Browser app/ TypeScript

An aspect ratio, pixel pitch and display geometry calculator that runs entirely in the browser. Resolution × pixel pitch = physical size, so any two of the three give the third — and it names the ratio the way the trade does, telling you that 3440×1440 is 21:9 rather than 43:18, and that 1366×768 is 0.049% off 16:9 rather than pretending it is exact. It sizes PowerPoint slides on the same arithmetic, working around the 56-inch slide limit and pointing out when the better answer is to leave the deck alone and raise the export DPI.

simpleRTA — Real-time analyser in a browser tab

simpleRTA

In development

Audio / Browser app/ TypeScript

A real-time audio analyser that runs entirely in a browser tab: an RTA from 1/3 to 1/48 octave, a spectrograph sharing its frequency axis, and a full-height meter with peak, RMS, peak hold and broadband Z/A/C. The transform chain is pinned by tests at every size and window, and the built-in pink noise source is the check that it reads level before you trust it about a room.

LEQtion — Sound level meter and dual-channel analyser

LEQtion

Field testing

Audio / Application/ Rust / Tauri/ v0.1.1

A desktop sound level meter and dual-channel analyser: fractional-octave RTA, spectrograph, time-weighted SPL and as many LEQs as you care to define, plus level history charts, CSV logging, a signal generator and transfer function measurement with phase, coherence and delay finding — on a grid of tiles you lay out yourself.

Test Card — A test pattern for every physical output

Test Card

In development

AV Systems / Browser app/ TypeScript

Generates test patterns for every physical output in a show, from the file that already describes the outputs. Import a Resolume advanced output, a Pixel Peeker wall or a Blend Calc array and get one PNG per output at that output's exact raster — or a single composition-sized image with every output's region labelled, which proves the output map is what you think it is.

Thumbnail Generator — Source thumbnails for a whole rig, in one go

Thumbnail Generator

In development

AV Systems / Browser app/ TypeScript

Builds the labelled source thumbnails an Eventmaster or an RCS2 shows on its multiviewer, for a whole rig at once. Type or paste the source list, give each one an icon, a size and a colour, and download a ZIP with one image per source named after it — plus a manifest matching file to source. Runs entirely in the browser.

Porthole — Fisheye and defish for Resolume

Porthole

Field proven

Video FX / Plugin & Module/ C++ / GLSL/ v1.0.0

A variable fisheye and defish warp as an FFGL effect. It re-photographs the picture through a different lens rather than drawing a bulge on top of it, so the Projection control is which lens — and defish exactly undoes fish.

Asciify — ASCII art for Resolume

Asciify

Stable

Video FX / Plugin & Module/ C++ / GLSL/ v1.0.0

An ASCII art FFGL effect that matches each character cell on how much ink it wants and on where that ink sits, so edges pick up characters that lean the right way instead of being flattened into a brightness ramp.

Tinsel — LED outlines for Resolume

Tinsel

Stable

Video FX / Plugin & Module/ C++ / GLSL/ v1.0.0

An FFGL effect that finds the outlines in a clip and lights them like a string of LEDs, running the patterns an LED controller runs — chases, comets, twinkles, fire — over twenty patterns and sixteen palettes.

NESolume — Retro console hardware for Resolume

NESolume

Stable

Video FX / Plugin & Module/ C++ / GLSL/ v1.0.0

Retro console video hardware as an FFGL effect: a real machine's raster, palette and attribute cells, plus scroll-register distortion and glitches that corrupt the indices — so nothing a failing machine shows is ever outside its palette.

Cartridge — A console emulator as a live Resolume source

Cartridge

Released

Video FX / Plugin & Module/ C++ / GLSL/ v0.1.0

A libretro frontend that runs inside Resolume as an FFGL generator: point it at a core and a game and the console becomes a layer, with the joypad MIDI-mapped onto whatever controller is already on the desk. Ships as two builds — in-process, and an out-of-process helper that keeps the show up when a core crashes. No cores, BIOS images or games are included.

av-test-roms — Test ROMs for the video path

av-test-roms

In development

Video FX · AV Systems / Application/ Assembly

Three test programs — a moving test card, a controller mapping tester and an overscan display — built from source for as many consoles as have a toolchain in Homebrew. For people who care about the video path rather than emulation accuracy.

Outrun — Breakaway neon strokes for Resolume

Outrun

Stable

Video FX / Plugin & Module/ C++ / GLSL/ v1.0.0

Neon synthwave strokes as one FFGL effect with two engines: trace the clip's outlines as glowing tubes that can break away from the real geometry, or generate synthwave paths outright — the perspective grid with the striped sun, tunnels, circuits, skylines, and the routed audio as an oscilloscope.

Idler — The Windows 95/98 screensavers, for Resolume

Idler

Stable

Video FX / Plugin & Module/ C++ / GLSL/ v1.0.0

Eleven Windows 95 and 98 screensavers — Mystify, 3D Pipes, 3D Maze and eight more — rebuilt as an FFGL source and a matching mask effect. Every saver is a pure function of time and a seed, so nothing drifts with the frame rate and the whole thing can be scrubbed and beat-locked.

Orrery — Animated shapes for masks and pixel maps

Orrery

Stable

Video FX · Lighting / Plugin & Module/ C++ / GLSL/ v1.0.0

Primitive shapes moving on deterministic paths, as an FFGL source and a matching mask effect. Eight shapes, five paths, and a phase that can be locked to the host's bar — for quick animated masks and for chroma chases driving a pixel map.

Flipbook — Play a sprite sheet in Resolume

Flipbook

Stable

Video FX / Plugin & Module/ C++ / GLSL/ v1.0.0

A page of stills, cut into a grid and played as an animation — as an FFGL source and a matching effect for Resolume, and an OpenFX plugin for Resolve. Up to sixty-four copies with a stagger, so one animation travels through the field rather than sixty-four doing the same thing at once.

Coinop — Fourteen arcade games as a Resolume plugin

Coinop

Stable

Video FX · Lighting / Plugin & Module/ C++ / GLSL/ v1.0.0

Snake, Bricks, Marchers, Rally, Drift, Stacker, Chase, Girders, Swarm, Trails, Reflex, Rafters, Duel and Flapper, as an FFGL source and a matching effect for Resolume. Play them from a MIDI pad or an OSC fader, or leave the autopilot to play and lose on its own — and in the effect, the brick field is built out of the clip, so breaking a brick punches a hole through to the layer below.

ArrayCAD — A CAD model or a PDF plan in, ArrayCalc or Soundvision out

ArrayCAD

In development

Audio / Browser app/ TypeScript

Turns a venue drawing into a d&b ArrayCalc venue file. An ArrayCalc venue is a few dozen parametric planes; a CAD export of the same theatre is tens of thousands of triangles, so the work is the reduction — weld, merge coplanar regions, recover each outline, and write it back as the quads and triangles ArrayCalc actually accepts. It also reads the drawing on the way in: layers named as dimensions, rigging or services are left out, plane types come off the names, banks of separately modelled seats become the audience plane they stand for, and meshed surfaces are re-cut from their own outlines — a seat-by-seat theatre plan lands as 17 objects instead of 3,710, all of it visible and one click from being put back. Imports DXF, glTF, IFC and the usual mesh formats, and there is a Vectorworks plug-in that skips the intermediate file entirely. No 3D model? Drop a PDF or an image of the plan instead: set the scale, click inside a room to detect its outline, and type a height at each corner — level, raked, raised or sunk. It also writes L-Acoustics Soundvision 3D room data, where a surface is a free polygon so an awkward outline goes across whole. The .dbacv format is undocumented; this reproduces a real export byte for byte and has been round-tripped through ArrayCalc itself until every object came back untouched.

MixerReturn — Dugan automix, inserts intact

MixerReturn

Field testing

Audio / Plugin & Module/ C++ / JUCE/ v0.3.0

An interface for Waves SuperRack Performer: run the Dugan Automixer across a console's channel direct outs and return the automixed result summed to a single stereo pair, into a group's external input — leaving every insert slot free.

stagewash — Lighting levels on the deck, before the venue

stagewash

In development

Lighting / Browser app/ TypeScript

Models a stage and a lighting rig and works out the illuminance on the deck before anyone gets to the venue. Build the rig from truss, bars and stands, focus each fixture at a point on the stage and let it resolve the pan and tilt, then read the levels off a heatmap with the beam cones drawn over it. The part worth having is a single toggle between a horizontal plane and a vertical one: a rig can be perfectly even on the floor and flat and shadowless on faces, because overhead light arrives nearly edge-on to a vertical surface, and flipping between the two inverts the ranking of your fixtures. Every fixture carries a badge saying whether its numbers were measured from an imported IES or EULUMDAT file, transcribed from a named datasheet, or synthesised from an archetype — because a lux figure computed from a guess is worth nothing unless you can tell which is which.

simpleVIS — See your lighting programming, before the room

simpleVIS

Field testing

Lighting / Application/ TypeScript/ v0.2.0

A lightweight lighting visualiser. Drop in an MVR and it reads the rig straight out of it — fixture positions, patch, and the GDTF definitions embedded alongside, so it knows which channel is pan, how wide the beam opens and whether the colour mixes additively or subtractively. Then feed it Art-Net, sACN or DMX off a USB interface and watch the programming in volumetric haze, from anywhere you care to put the camera. Pixel-mapped fixtures work properly: a wall that declares four template channels across a hundred references is resolved to the three hundred it actually occupies, one DMX slot per pixel. The desktop build takes the live input; the hosted build imports and flies the same rig in a browser tab with a built-in demo look, because Art-Net and sACN are UDP and a browser cannot receive it.

UnMapper — Rehearse an LED rig without the LED

UnMapper

In development

AV Systems / Application/ Rust

Reads the Resolume Advanced Output slice map that drives the real wall, receives Resolume's outputs over NDI, and composites them onto a virtual reconstruction of the rig. Drive that to connected monitors as a stand-in wall, or view it as 3D previz of the set.

openrcs — Modern control for Analog Way switchers

openrcs

In development

AV Systems / Application/ Rust/ v0.4.0

A modern control surface for Analog Way Midra and LiveCore series video processors. Its Workspace puts sources, every screen and memories on one window-filling page — build in program, preview or both at once — backed by a graphical layer editor, memories, takes, a multiviewer/confidence-output designer, EDID writer and a full variable inspector.

openrcs-protocol — The Analog Way control protocol, written down

openrcs-protocol

Released

AV Systems / Library & Protocol/ Markdown

A reference for the TCP control protocol of Analog Way Midra and LiveCore series video processors — the wire format, the variable model, and the complete variable tables. Documentation only.

BirdDog PLAY Patcher — Remote access for an NDI decoder that has none

BirdDog PLAY Patcher

Field testing

AV Systems · Networking & Infrastructure / Browser app/ JavaScript

A BirdDog PLAY is an NDI decoder with no way in from outside the room it is sitting in. This builds an installable firmware package that adds one: an SSH key, Tailscale, and an NDI KVM endpoint that turns the keyboard and mouse on the PLAY's USB port into control of whatever machine it is displaying. The surprise is that it needs nothing from you but a public key — the stock updater runs a script from the uploaded archive as root with no signature check, so a valid package is an ordinary gzip'd tar and there is nothing to decrypt. That means no upload, no vendor keys, and the whole thing assembles in the browser: tar, gzip and SHA-256 are native APIs now. The installer is readable bash that refuses to run on the wrong hardware, stays off the recovery path, and cannot reach the kernel or bootloader. Confirmed on a real unit — Tailscale carries 195 Mbps over userspace networking, and the KVM agent drove a Windows machine using only the free NDI SDK.

How the filters work

Discipline is the part of the job a project belongs to, and a project can sit in more than one. Runs on is counted from the release builds that actually exist, so a project claims Linux only where a Linux artefact was cut — anything that lives inside another application has no platform of its own and appears under Plugs into instead. Talks to is the gear and the wire protocols at the far end. Chips within a row are or-ed together and rows are and-ed, so macOS or Windows, and Blackmagic is one question you can ask. Hide is the one that subtracts: there is a Companion module for most of the apps here, and turning it on takes all 13 of them out so what is left is the applications themselves.

Audio

Cue playback, DSP, amplifier and console control.

What we've built for it

AV Systems

Switchers, routers, media servers and stream transport.

What we've built for it

Video FX

Effects, generators and plugins that run inside somebody else's host.

What we've built for it

Lighting

DMX, Art-Net and sACN distribution.

RF & Wireless

Radio mic coordination, monitoring and licensing.

Content Management

Getting presenter files in, converted, and on screen.

What we've built for it

Show Control

OSC, MIDI, MSC and Companion integration.

Networking & Infrastructure

The plumbing under a multi-room event.

What we've built for it