Early access—OpenAVC is pre-v1 and under active development. Great for evaluation and testing, not yet recommended for production spaces.Pre-v1, not yet recommended for production.
Report issues →
Changelog
What's new in OpenAVC. Every release, every feature.
v0.21.0
OpenAVC 0.21.0 adds an MQTT transport for Python drivers and restores device discovery on Linux and Raspberry Pi.
Features
Drivers can control equipment over MQTT, such as televisions with a built-in broker, building-management gateways, and IoT or lighting bridges. It supports plain and TLS connections, including the self-signed certificates many devices ship with. MQTT is available to Python drivers.
Fixes
Device discovery finds devices again on Linux and Raspberry Pi. The network scan had run without the privilege its ping sweep needs, so it reported an empty network even when devices were present. Discovery on Windows, Docker, and the appliance was not affected.
In-app updates are more reliable on Linux and Raspberry Pi. Updating a system carried forward from an older layout could fail and leave you on the previous version, and changes to the background service definition were not applied during an update. A failed update no longer reports itself as successful in the log.
v0.20.0
OpenAVC 0.20.0 fixes the device simulator on Windows, adds pick-from-a-list parameter entry, and reorganizes touch panel bindings into Shows and Does.
Fixes
The device simulator now launches on Windows installs. It had failed to start with an internal error, so you could not test a project against simulated devices.
On Windows the system tray's Start, Stop, and Restart actions always work now, because the background service is installed by default. The tray also reports a failed service action instead of doing nothing.
Variables "Used By" now lists scripts that subscribe to a pattern like device.* as users of the matching variables.
The touch panel preview loads correctly when viewed through a cloud connection.
Features
Pick, don't type. Command and action parameters, macro steps, and touch panel bindings offer dropdowns wherever the choices are known, including presets, inputs, child controls, and variables. Free-text entries are trimmed and validated before being sent to the device.
Touch panel element bindings are organized into Shows (what the element reflects from state) and Does (what it triggers). A control can read a variable or device state directly without a helper macro, and a list's two-way selection updates correctly. Existing projects upgrade automatically when opened.
Multi-unit devices such as matrix switchers, multi-zone amplifiers, and DSPs can address each input, output, or zone as its own child entity with its own controls, including devices whose layout is discovered at connect time.
A new reload action re-reads a YAML driver file you changed outside the Driver Builder and reconnects its devices.
v0.19.3
OpenAVC 0.19.3 fixes the macOS menu-bar Uninstall so it fully removes the background service.
Fixes
The macOS Uninstall OpenAVC menu-bar item now fully removes OpenAVC. In 0.19.2 it quit the menu-bar app but left the background service running, so the server came back after a restart. It now stops the background service and the menu-bar app and removes the application, keeping your projects and settings unless you choose to remove them. The Terminal uninstaller was not affected.
v0.19.2
OpenAVC 0.19.2 adds a proper macOS uninstaller and gives the macOS app its real icon.
Uninstall OpenAVC on macOS
The macOS app now has a proper uninstaller. Click the menu-bar icon and choose Uninstall OpenAVC, or run the bundled uninstaller from Terminal. It stops the background service and the menu-bar app and removes the application, keeping your projects and settings unless you choose to remove them. Dragging the app to the Trash on its own does not stop the background service.
macOS app icon
The macOS app now shows the OpenAVC icon in Finder and the Applications folder instead of a generic placeholder.
v0.19.1
OpenAVC 0.19.1 fixes cloud pairing on the macOS build so an instance connects to the cloud after pairing.
Fixes
On macOS, pairing an instance to the cloud reported success but the connection stayed disconnected, so remote access and monitoring never came online. The macOS build now connects to the cloud right after pairing. Windows and Linux installs were not affected.
v0.19.0
OpenAVC 0.19.0 adds a macOS installer, a no-code way to control devices that do not have a driver yet, and support for serial devices that connect through a network bridge.
Run OpenAVC on a Mac
There is now a macOS installer. It sets OpenAVC up as a background service that starts at boot, adds a menu-bar app for opening the Programmer and checking status, and supports in-app updates and rollback the same way the Windows and Linux builds do.
Control a device that has no driver yet
New Generic device types for TCP, serial, and HTTP let you type a device's commands and responses directly in the Programmer, with no driver file. Define commands with fill-in values, turn replies into device state, and poll for status on an interval. This is useful for one-off equipment or for trying a protocol before writing a full driver.
Reach serial devices through a network bridge
A serial device can now connect through an IP-to-serial gateway such as a Global Cache iTach. Point the device at a bridge port and OpenAVC carries its traffic over the network, so equipment without an Ethernet port still works from anywhere on the local network.
Steadier connections
Devices on TCP, serial, UDP, and OSC now notice a dropped link right away and reconnect, instead of waiting out a timeout. OSC devices can also run over TCP.
Driver Builder improvements
The Driver Builder validates commands, responses, state variables, and frame settings as you build, handles child devices more reliably, and lets you author device settings that send OSC arguments or HTTP bodies and headers.
Fixes
Fixes to the Plugins and Variables screens, sturdier reconnection in the Programmer, and connection-handling fixes across the transports.
v0.18.0
WiFi on/off control in network settings.
New
Turn the host WiFi radio on or off directly from the network settings, on the device's own setup screen and in the Programmer's network card. The scan and join controls appear only when WiFi is on. This keeps WiFi off where site policy requires it, and lets you turn it on for a unit that needs to join a wireless network with no wired drop.
v0.17.1
A small fix release.
Fixes
The announcement that lets the Panel app and other devices find an OpenAVC server by browsing the network now starts reliably on Linux servers. It previously failed silently at startup on Linux installs, so automatic server discovery only worked against Windows servers.
v0.17.0
A reliability release focused on device discovery.
Discovery
Discovery no longer depends on system network tools. The server sends ICMP echo itself where the OS allows and falls back to the system ping command, so minimal and locked-down installs can run a full scan.
The mDNS, SSDP, and AMX beacon listeners join multicast on every network interface, so multi-NIC systems hear every attached network. The pairing announcement the Panel app listens for does the same, and retries if the network comes up after the server starts.
If the environment blocks part of a scan, the Discovery view says what could not run instead of showing an empty result.
Fixes and improvements
Wired IPv4 changes from Settings or the setup screen follow the platform's apply behavior, including platforms that restart to apply.
The Windows installer always installs the server bundle.
v0.16.0
A control surface release. The Stream Deck integration gets a rebuilt live editor, network-attached decks, and full dial and touchscreen support, plus controller network settings in the Programmer and a setup screen for dedicated displays.
Stream Deck
Supported models are the Mini, Mini MK.2, Original, MK.2, Neo, XL, XL V2, Plus, Pedal, and Studio.
The Stream Deck view renders the connected deck live. Click a key, dial, touch strip, or info screen to edit it in the inspector, and shift+click a key to press it for real. Switching page tabs switches the physical deck.
Config changes apply live, so decks no longer blank or reconnect on save.
Network decks are supported through the Elgato Network Dock (PoE or USB-C power) and the Stream Deck Studio's built-in Ethernet port. Decks on the local network segment are discovered automatically, and anywhere else they can be added by IP address. A network deck behaves exactly like a USB deck, and works from Docker and VM deployments where USB passthrough was not an option.
Dials adjust values with configurable step and range and have separate push actions. The touch strip handles taps, long-presses, and swipe-to-adjust per zone.
Live meters and value readouts can be placed on keys and screens. The info screen can show two live values, plus a clock when idle.
Virtual decks let you build a layout with no hardware attached, then transfer it to a real deck later, including between different deck models.
Locked keys hold the same position and assignment on every page, and a key that navigates to a page lights up while that page is active.
Page names, page duplicate and clear, and arrange tools for copy, paste, move, and swap.
Per-deck brightness, idle dimming rules, and default color settings.
Macros can drive the deck, and keys show run feedback while their macro executes.
Controller network settings
On Linux systems with NetworkManager, including the Raspberry Pi image, the controller's static IP, gateway, and DNS can be set from Programmer Settings. Validation stops you from saving a configuration that would cut off your own session.
Setup screen for dedicated displays
A controller driving a dedicated display shows a setup screen while the project has no panel content, with the address to browse to and how to get connected. Once panel content loads, the display switches to the panel automatically.
Fixes and improvements
The Driver Builder flags command shapes that do not match the driver's transport and validates OSC argument values.
Secret fields in device dialogs are masked correctly, and the device detail view validates setting edits and fixes log tailing.
The UI Builder fixes binding validation, duplicate references, and element id collisions.
Convert to Script generates code that matches what the macro engine actually does, and scripts keep the macro call chain across the script boundary.
The Updates view shows updates staged from the cloud, labels rollbacks clearly, and no longer leaves a stuck progress dialog.
SNMP discovery is hardened against malformed device responses.
Projects are stored in the data directory alongside drivers and plugins, and existing projects migrate automatically.
v0.15.1
A small follow-up to 0.15.0 that keeps the room panel login-free and tightens how the Programmer handles passwords.
Wall panels stay open
On a controller with an admin password set, opening the room panel on a wall tablet could trigger the browser's built-in login popup. The panel now loads its theme and plugin data without ever prompting, so tablets and phones reach the controls the moment they connect.
Clearer first-run setup
First-time setup now asks for an admin username alongside the password, prefilled with "admin." It is the username you type on the Programmer sign-in screen, so the login no longer has an empty field with nothing to enter.
Passwords are not pre-filled
Password and secret fields in the Programmer no longer show pre-filled dots or get refilled by the browser's saved-password autofill. A field stays empty unless you type in it.
Driver Builder reliability
The Driver Builder warns before discarding an unsaved driver you are still editing, and keeps your edits straight when a save and a change overlap.
Imported or pasted drivers are checked the same way the form editor checks them, so a bad file loads into the editor to fix instead of failing silently.
v0.15.0
OpenAVC 0.15.0 adds per-device quick actions and setup wizards, SSH device control, and clearer offline diagnostics, on top of a broad reliability pass across the platform.
Quick actions and setup wizards
Quick Actions are handy per-device shortcuts in the device view, one-click buttons for the commands you run while commissioning or troubleshooting a device.
A driver can now define a setup wizard for its device, walking you step by step through tasks like provisioning, so first-time configuration is guided rather than manual.
Control devices over SSH
OpenAVC can now drive equipment that exposes a command-line interface over SSH, using the system's OpenSSH client. Authenticate with a password or an installed key. This covers network switches, servers, and appliances that speak CLI instead of a binary control protocol.
Know why a device went offline
When a device drops, the device card now reports an actionable reason such as authentication failed, connection refused, unreachable, or a changed SSH host key, each with a plain-language next step, instead of a generic disconnect.
Drivers can attach their own hint to the offline banner for device-specific guidance.
Touch panel theming
ThemeStudio adds per-type styling and page background editors. Style buttons, sliders, and labels independently, and set a background image or color per page.
Several color and contrast issues are fixed.
Sharper device discovery
Discovery identifies more equipment, including HTTPS-only devices that previously came back unrecognized. It reads additional vendor signals from devices already on the network and keeps results current as a scan runs.
Driver authoring
Import and export driver bundles straight from the Code view. Companion files for simulation and discovery come along on install and are cleaned up on uninstall.
The general-purpose TCP driver and the Add Device dialog also pick up authoring improvements.
Reliability and hardening
A wide reliability pass touches the scripting runtime, plugin system, device simulator, driver loader, cloud connection, inter-system links, scheduling and triggers, backups, and saved variable state, all more resilient to malformed input, network failures, and edge cases.
Update and rollback handling is more dependable.
v0.14.0
OpenAVC 0.14.0 makes network scans identify more controllers without any setup, and changes the first run so a new instance is protected from the moment it starts.
Controllers identify during a scan
Some telnet controllers send a Telnet negotiation in one network packet and their identifying banner in the next. Discovery now reads across packets, so devices like the TurtleAV Chazy and Darwin controllers are recognized during a network scan without installing the driver first. AMX device discovery also matches more reliably.
Secure by default
A brand new instance now prompts you to claim it and set a password before anything else. There is no unprotected window on first boot, and no default password to remember to change. Existing instances keep their current settings.
Hardened against the network
The rate limiter no longer trusts forwarded-for headers by default, and system updates verify their download and refuse to apply anything that fails the check. Several internal file-path and archive handling paths were tightened.
On the Raspberry Pi image, the OS login is locked down with SSH off and a single password shared with the web login.
Improvements
Running a command from a device page now shows proper controls such as dropdowns, number fields, and toggles instead of plain text boxes, so the right values are easier to enter.
Saving a change to a device no longer drops its sub-devices or any settings queued for an offline device.
The Surface Configurator gains visible-when and auto-page editors for control surfaces.
Per-device logs always capture what was sent to and received from the device, and the console log honors the level you configured.
Video sources send a codec hint from the discovery probe so downstream playback starts correctly.
Driver authors can validate avcdriver files live in their editor against the published schema, now linked from the docs.
v0.13.0
OpenAVC 0.13.0 brings child entities: a single controller like an AV-over-IP system, a video matrix, or a multi-zone amplifier can now expose every encoder, decoder, output, zone, or preset as its own controllable entity. It also adds the Video Panel plugin for live H.264 and H.265 video on the panel, moves community drivers and plugins into the data directory so they survive upgrades, and lets macros navigate panel pages.
Child entities
A driver can declare child entity types, and the platform tracks each child as its own addressable unit. A matrix shows up as one device, but each input and output is an entity you can command, bind to a button, and read state from. The same goes for DSP zones, video-wall presets, and AV-over-IP encoders and decoders.
The Programmer adds a Child Entities tab on the device view, with a searchable command picker and one unified filter that spans device state and child entities, so a controller with hundreds of children stays manageable.
Live child state lives under device.<id>.<child_type>.<padded_id>.<property> and every child carries an online flag. Macros, triggers, scripts, and plugins all read and act on child state the same way they do for any device.
Child state relays to the cloud with per-property priority, so latency-sensitive state like video routing goes up quickly while bulk telemetry relays on a slower cadence, and large snapshots are paced so a big controller does not flood the link.
The project file moves to v0.5.0 to store per-child labels and config. Projects upgrade automatically, and projects without controller-style devices are unaffected.
Video Panel
The new Video Panel plugin shows live H.264 and H.265 video on the panel. Point it at an IP camera or another RTSP source and place the stream on a panel page for a confidence monitor, a camera feed, or an overflow display. Streams are set up from a Video Streams panel in the Project view, and you install it from the plugin library once you are on 0.13.0.
Where drivers and plugins live
Community drivers and plugins now live under the data directory, for example /var/lib/openavc on Linux, instead of beside the program files, so they stay intact across upgrades and reinstalls. Existing installs migrate automatically on the first start after the update, on Windows, Linux, Docker, and the Pi image.
Page navigation from macros
A new ui.navigate macro step lets a macro switch the panel to another page, so a single button can run its actions and move the operator to the right screen. It understands $back, which walks back through the page history.
Plugins
Plugins can register their own HTTP routes, ship custom panel elements that appear in the UI Builder, and keep a per-plugin persistent data directory. These are the building blocks behind Video Panel and are available to any community plugin.
Reliability and polish
Discovery pre-fills a driver's default settings when you add a discovered device, so it lands ready to connect.
Faster state handling on large projects, through a state-key prefix index and bulk subscriptions.
Some plugins would not enable on a fresh install, with no feedback from the Enable button. Both are fixed; the missing dependency is bundled, and plugin enable, disable, and settings errors now surface in the Programmer.
Uninstalling a plugin updates the project revision so other open editors notice the change.
Custom plugin panel elements no longer interfere with editing project state and config.
v0.12.0
OpenAVC now has built-in HTTPS that you can turn on from Settings > Security. The Programmer prompts you to install community drivers a project needs but does not have, and the server can be restarted from inside the IDE after a settings change. Also: save conflicts and slow startup with many devices, devices reporting connected when they were not, and a cloud-restart hang on locked-down service managers.
HTTPS
Off by default. When enabled, the server runs a TLS listener on port 8443 with the full app and a tiny HTTP listener on 8080 that returns a 301 or 308 redirect to the matching HTTPS URL, preserving path and query string. Existing bookmarks, panel apps, and mDNS clients keep working without reconfiguration.
The auto-generated certificate has a 10-year validity and covers localhost, 127.0.0.1, the OS hostname, and every local IPv4 the server can see. If the host's primary IP changes between restarts the server cert is re-issued against the same internal CA, so devices that already trust the CA survive without re-pairing.
The Security card displays the certificate fingerprint and per-OS instructions for installing the CA on Windows, macOS, iOS, and Android.
If you have an internal CA, switch the mode to Provided and point at your PEM cert and key. There is no silent fallback to HTTP on a bad cert; the server writes a precise error and refuses to start the TLS listener.
mDNS advertises scheme=https and the TLS port when HTTPS is on. ISC peers, the cloud tunnel, the Windows tray, and the Pi kiosk launcher all pick up HTTPS automatically.
In-app server restart
The Network and Security cards prompt you to restart when you save a setting that needs a process restart, and the dialog hands the restart back to the service manager. NSSM on Windows, systemd on Linux, Docker, and dev installs all work. The progress dialog tracks the new process coming up and reloads the page automatically when it is reachable again.
Missing drivers prompt
Open a project that references a driver you do not have installed and the Programmer surfaces a modal listing every missing driver, annotated with community-catalog matches. One click installs them and re-activates the orphaned devices so you do not have to add them back to the project by hand.
Reliability
Save conflicts and slow startup when a project has many devices.
Device connected state lying for drivers that do not use the platform transports.
Cloud restart hanging when the service manager could not see the process exit.
device.error.<id> is now emitted from poll errors and send_command errors, not just connect errors, so error-driven triggers fire reliably.
Polish
The script editor's Monaco bundle is now served locally so it works offline.
Embedded panels inside the UI Builder no longer prompt for the panel password.
The Docker build compiles the frontend on the native build arch, avoiding QEMU SIGILL crashes during multi-arch CI builds.
v0.11.0
Discovery rebuilt around driver-declared probes and evidence. Cloud agent supports remote restart, diagnostic actions, and tunneled WebSocket and HTTP traffic with query strings and subprotocols intact. Matrix and audio devices respect audio-follow-video. Driver Builder Live Test works over serial and guards against running on a production project. Pre-release audit findings closed.
Discovery
Discovery is schema-driven; a driver declares its TCP / UDP probes, mDNS service, SNMP OID, or Python companion, and the scan engine runs them. Every identification on the scan card traces back to a probe response or a service the driver said it owns.
The platform itself no longer carries any vendor knowledge; adding a new device family is a driver change, not a core change.
The Driver Builder's Discovery editor has been rebuilt to match. You can write a probe inline, see which signal it provides, and validate it against shipped probe fixtures before any device is on the network.
Companion .py files are hidden from the driver listing but install, update, and uninstall alongside their .avcdriver file.
Common web-app ports are rejected as port_open hints. UDP reachability probes require a poll_interval. mDNS and SSDP scanners bind to the configured control_ip instead of every interface.
Cloud agent
Remote restart and diagnostic actions (ping, traceroute, DNS lookup, port check, tail logs) work end to end.
The agent gates each downstream action on the capability set the cloud negotiated for the session, so an agent whose tunnel capability was revoked silently ignores stray tunnel pushes.
The remote-UI tunnel preserves query strings, custom headers, and WebSocket subprotocols. Frames that arrive before the local WebSocket finishes connecting are queued instead of dropped. The target_port field is honored so the same tunnel can reach the Programmer IDE, the panel, or any other local service.
Cloud-pushed updates are staged; the apply step swaps atomically, and a failed apply clears the pending-update marker instead of leaving the system stuck on next boot.
Windows installer rollback now matches versions correctly across patch releases.
Matrix and audio
Matrix mute respects audio-follow-video; muting a video route also mutes the linked audio route when the matrix is in AFV mode.
Audio routes display their current source in the device test panel.
The cloud's mute and route commands flow through the same AFV-aware path as the local UI.
Driver Builder Live Test
Live Test works against serial drivers in addition to TCP and HTTP.
The panel refuses to run against the live project to keep an in-progress driver from clobbering a deployed room.
Rate-limit errors from the device surface in the test panel directly instead of failing silently.
Plugin hardening
A plugin that fails to register surfaces the error during install instead of disappearing.
min_openavc_version is enforced at install time across both first-party and community plugins.
State-pattern subscriptions with an empty pattern no longer leak state across plugin reloads.
ISC
The inter-system connection drops removed peers and rotates keys when auth changes, so a project reload that swaps an ISC password actually invalidates the old session.
Auth failures back off with deduplicated log messages instead of spamming the log every retry interval.
Other
Macros: the macro engine serializes register-and-preempt within a cancel group so a fast double-tap of system_on / system_off does not race.
OSC: the verify path races the send socket against the listen socket for dual-port devices like grandMA3.
Drivers: the Python driver serial template uses the correct connection field names.
Installers: the starter project bundled with every installer is now in the v0.4.0 schema.
Docs: cancelled macros are not transactional; the docs now say so.
v0.10.3
Plugins can register macro actions and script methods. Audio support in the asset library and panel. Pi image, Docker, and Windows updater fixes.
Plugins
Plugins can register macro actions through a MACRO_ACTIONS schema; their actions appear in the macro builder under a Plugin Actions group with a schema-generated form
Plugins can register script methods through a SCRIPT_API schema; user scripts call them as openavc.plugins.<plugin_id>.<method>(...)
Script editor autocompletes registered plugin methods and shows their docs on hover
Plugin select-field options can now point at a state key, so a plugin can offer dropdowns that update as state changes (e.g. an asset list)
Plugin detail page in the IDE renders an optional usage block as Markdown so users see how to actually use the plugin
Enabling or disabling a plugin refreshes the macro builder action list immediately, instead of after a page reload
Audio in the asset library
Asset uploads accept mp3, wav, ogg, and m4a in addition to images
Per-file caps of 50 MB for images and 200 MB for audio, with a per-project total of 5 GB
Asset browser has filter chips for all / images / audio, with a native preview player on audio entries
Program tab now has an Assets section that lists every uploaded asset
Panels play audio directly through the panel runtime, driven by the new Audio Player plugin; every connected panel plays in sync
Bug Fixes
Pi image: First boot now lands on the OpenAVC panel instead of a blank labwc desktop. The Pi OS rename wizard was overriding our autologin user.
Docker: Discovery scans work inside containers. The shipped Compose file uses host networking with NET_RAW, and the image grants cap_net_raw to ping. Install path simplified to "download Compose file, docker compose up -d".
Windows: Updates now finish on reboot. The post-install scheduled task was being created with a start time in the past because schtasks silently truncates seconds; we now register the task via XML.
v0.10.2
Fixes the reboot button on Raspberry Pi.
Bug Fix
Raspberry Pi: The reboot button in System Settings now actually reboots the device. The previous version invoked the wrong reboot path and silently failed.
v0.10.1
Fixes a silent in-app update failure on Windows.
Bug Fix
Windows: In-app updates were silently failing in 0.10.0. The installer was being killed by the service manager before it could replace files. Updates now run via Windows Task Scheduler.
To get this fix on an existing 0.10.0 Windows install, manually run the 0.10.1 installer once. Updates from 0.10.1 forward will work normally.
Linux, Raspberry Pi, and Docker were unaffected.
v0.10.0
Major Driver Builder overhaul, cloud reliability fixes, and a couple of platform bugs squashed.
Driver Builder
Tab layout collapsed from 10 to 6, with related fields grouped together
Per-tab validation badges so you can see at a glance which sections need attention
Validation messages appear inline next to the field they refer to, not in a wall at the top
Every section has a help link to the relevant documentation page
Built-in drivers visually distinguished from drivers you have added
First-class editor for frame parsers (binary protocols)
First-class editor for Telnet authentication blocks
First-class editor for on_connect lifecycle hooks
First-class editor for OSC argument types and value bounds
First-class editor for discovery hints (UPnP types)
Full command parameter schema editor
Catalog metadata and help fields on the General tab
HTTP commands fully supported, including custom headers
Live Test panel rebuilds the driver against the production code path so what you test is what ships
Duplicate an existing driver as a starting point for a new one
Drivers and Plugins
Cleaner navigation between the driver list and editor
Action toolbar moved into the header for easier reach
Refuses to uninstall a driver or plugin that is in use, with a clear message about what depends on it
Uninstall errors that do happen are clearer about why
Browse Drivers splits multi-brand drivers into one card per brand, so a search for "Sony" actually finds Sony devices
Cloud
Fixed a reconnect loop after a handshake error (a typo in the exception handler meant connections never recovered)
A failed session resume no longer drops the entire connection
AI Assistant
Driver search and device match tools now query the community driver index for real instead of returning placeholder data
Bug Fixes
Windows: Rollback section no longer appears on fresh installs (was offering a "Rollback to v?" button)
Pi image: Fixed an autologin override that left newly flashed Pis sitting on a blank kiosk screen
Documentation
Driver Builder walkthrough rewritten for the new editor
v0.9.0
Browse Drivers refresh, declarative Telnet login for YAML drivers, smarter discovery, and Programmer login.
Browse Drivers Refresh
Video, Streaming, and Power are first-class categories
HTTP and OSC drivers are properly tagged in the catalog
Each driver shows tags, overview, compatible models, and a deprecated badge when set
Declarative Telnet Login
YAML drivers can declare a Username/Password handshake without writing Python
Atlona OmniStream and Lutron HomeWorks QS now work out of the box with login auth enabled
Smarter Discovery
Network discovery uses the community device catalog to identify equipment by exact manufacturer and model
When a model is recognized, OpenAVC suggests the right driver directly
Programmer Login
The Programmer IDE now has its own login screen
Set a Programmer username and password in System Settings to require sign-in for editing
Simulator
Auto-generated simulator now handles HTTP-based YAML drivers
Simulator mirrors the new declarative login handshake for end-to-end testing
Stability and Polish
WebSocket broadcasts fan out concurrently for smoother panel updates
Project files preserve unknown fields, making rollback safer after editing on a newer version
Plugins now use a dedicated variable_write capability for setting user variables
Panels can no longer write outside the var.* and plugin.* state namespaces over WebSocket
Programmer and Panel passwords set at runtime are enforced immediately without a restart
New state.delete WebSocket message replaces the previous workaround for clearing state keys
Programmer IDE debounces plugin event refetches to eliminate flicker on plugin-heavy projects
Driver Definitions
Canonical YAML keys for command and response definitions are now send and match
Legacy string and pattern aliases still load with a one-time deprecation warning
v0.8.2
Brand refresh, Add Device improvements, simulator fixes, and Pi image build fix.
Branding and Theming
Programmer IDE and Simulator now use the OpenAVC brand green palette
Both apps show the OpenAVC favicon and logo
Dark/light theme toggle in System Settings
Add Device Dialog
Selecting a driver auto-fills Device ID and Display Name
IDs generated from driver category with automatic numbering
Driver and Device ID fields marked as required
Simulator
Device cards with many controls now scroll instead of clipping
Closing the simulator tab shuts down the process automatically
Fixed initial state mismatch for OSC drivers with value maps
Pi Image Build
Fixed build script path issue that broke the Pi image CI pipeline
v0.8.1
Bug fix release. Fixes for the update system, macro/trigger concurrency, serial device communication, device reconnection, cloud state sync, and project migration.
Update System
Fixed issues that prevented in-app updates from working on Linux and Pi deployments
Update helper script, release archive format, and artifact naming are now aligned end to end
Windows silent updates and rollback hardened
Macro and Trigger Reliability
Macros called from two different triggers simultaneously no longer incorrectly block each other
Cancel groups now work correctly when two macros in the same group start at the same time
Startup triggers no longer silently fail to fire
Disabling a trigger while a macro is queued now correctly prevents it from firing
Serial and UDP Device Communication
Fixed intermittent wrong state values on serial devices under load
Send lock now held through the full send-and-wait cycle on serial and UDP, matching TCP
Device Reconnection
Manual reconnect no longer causes a spurious double-connect two seconds later
Cloud State Sync
Cloud dashboard no longer shows stale values when many devices reconnect at once
State relay keeps latest value per key instead of truncating, and sends in chunks instead of dropping
Project Migration
Upgrading projects from v0.3.0 to v0.4.0 now correctly preserves device group assignments
v0.8.0
OSC transport, Behringer X32 driver, per-panel page navigation, concurrent device startup, ISC security, project save conflict detection, and a broad security and stability pass.
OSC Transport
Open Sound Control (OSC) is now a built-in transport type alongside TCP, Serial, UDP, and HTTP
Build OSC drivers in the Driver Builder UI or YAML with address paths and typed arguments
Device simulator supports OSC with automatic address-based handlers
Per-Panel Page Navigation
Each connected panel now tracks its own current page independently
Navigating on one panel no longer changes the page on every connected panel
Faster Startup
Devices connect concurrently at startup instead of one at a time
Spaces with many devices come online noticeably faster
Device Connection Visibility
Offline devices show the reason (connection refused, timeout, DNS failure) and reconnect attempt count
Sidebar shows live online/offline device counts
OSC and HTTP devices are now verified on connect instead of always reporting as connected
ISC Security
Inter-System Communication now uses HMAC challenge-response authentication instead of plaintext shared keys
Project Save Conflict Detection
Multiple sessions editing the same project no longer silently overwrite each other
Stale saves get a conflict warning instead of quietly winning
New Drivers
Behringer X32 Digital Mixer (OSC): full console with 32 channels, 16 buses, 6 matrices, 8 DCAs, aux inputs, FX returns, scene/snippet/cue recall. Compatible with Midas M32.
Audio-Technica ATDM-1012 Digital SmartMixer with full device simulator
Audio-Technica ATDM-0604 Digital SmartMixer with full device simulator
Driver Fixes
Fixes across Samsung MDC, LG SICP, Extron SIS, Crestron NVX, Novastar H Series, vMix, Sony Bravia, PJLink, Audio-Technica, Sonos, and Dante DDM
Improved state polling reliability, response parsing, reduced log noise, and corrected simulator controls
YAML Driver Enhancements
On-connect commands: send initialization commands automatically when the transport connects
Simulator push notifications: simulators can broadcast unsolicited state changes to clients
Fader range scaling: map protocol values to display ranges on panels
Security Hardening
Authentication tokens no longer exposed in error responses
Project library and AI proxy endpoints now require authentication
Plugin installation validates filenames, URLs, and version requirements
Driver loading detects and rejects duplicate Python driver IDs
URL inputs validated against SSRF attacks
Programmer IDE
Startup errors surfaced as a popup on Windows instead of failing silently
Clear error message when the server port is already in use
Improved Cloud view UX with copy buttons, uptime formatting, and password field
Discovery scan reports progress during finalize phase
Update system shows which step failed and tracks pending updates
ARIA dialog attributes on all modals
Editor Fixes
Fixes across the variable, macro, and binding editors
Status LED text labels, day-of-week format tokens, matrix drag containment, fader keyboard step
Multi-state feedback labels render correctly on buttons with icons
Engine Reliability
Overlapping project reloads are serialized
Triggers stop before variable cleanup during reload
Device removal serialized to prevent state corruption
Backup restore clears orphaned assets and includes persisted state
Project and driver saves use atomic writes
New/Open/Restore properly clears all previous project data from the UI
Linux Update System
Redesigned around a systemd ExecStartPre helper script for more reliable rollback and service integration
Plugin System
The loader enforces min_openavc_version so incompatible plugins fail with a clear message instead of crashing
v0.6.0
Theme Studio, live panel canvas in the UI Builder, dedicated panel support, and a new wait_until macro step.
Theme Studio
Complete rebuild of the theme editor into a full-screen design workspace with a live-scaled panel preview
Quick Adjust controls for brand accent, corner roundness, surface style, and typography
Click any element in the preview to jump straight to its settings
Modified values are highlighted with per-row reset buttons so you always know what you've changed
Contrast checker flags readability issues between text and background colors
Rich preset gallery renders each built-in theme as a visual card with actual colors, fonts, and surface style
Every panel element is now fully driven by CSS variables from the theme
UI Builder: Live Panel Canvas
The design canvas now runs the real panel renderer instead of simplified previews
What you see in the editor is what the panel looks like, down to the pixel
Edit mode, preview mode, and the live panel all render from the same code path
Theme changes and styling tweaks are immediately visible without saving first
UI Builder: Outline Panel and Project Validation
New Outline tab with a searchable layers list, z-order controls, and per-element locking
Validate Project button scans for dangling references to removed devices, deleted macros, or missing pages
Clickable results navigate directly to the broken element
UI Builder Polish
Multi-select copy/paste with Ctrl+C/V
Escape cancels in-progress resize and drag operations
Scoped undo with descriptions for settings, master elements, page groups, macros, and variables
Autosave with Ctrl+S, manual save button, and a four-state save indicator
Inline element ID rename with automatic reference rewriting across bindings, visibility, macros, and triggers
Alignment buttons work on multi-selections
Click palette items to add at the next free grid cell
Visibility conditions support AND/OR logic
Image elements get object-fit control (contain, cover, fill)
New elements inherit their appearance from the active theme instead of showing hardcoded defaults
Dedicated Panel Support
Server-side pairing page and setup guides cover dedicated panel deployment for wall-mounted tablets
Full Android and iOS guides for basic setup, full lockdown, fleet provisioning, and troubleshooting
Android Panel app available as a signed APK with mDNS discovery, QR pairing, dedicated panel lockdown, and boot-to-panel
iOS app is next
New Macro Step: wait_until
Macros can pause execution until a state condition is met
Configurable timeout with optional fallback steps if the condition is never satisfied
Useful for sequences that depend on a device reaching a certain state before continuing
Matrix and Plugin Improvements
Matrix elements have show_lock and show_mute toggles to hide buttons per instance
Plugin panel elements with a config_schema get a typed form in properties instead of raw JSON
Image Tinting and Frameless Buttons
Image elements support color tinting so a single icon asset can match any theme
Buttons can be set to frameless for transparent, icon-only tap targets
v0.5.14
QR pairing and mDNS discovery for the upcoming Panel apps, plus error recovery in the IDE and platform hardening.
QR Code Pairing for Panel Apps
The Panel Access card now shows a QR code alongside the panel URL
Scan from a tablet or phone to land on a page with Open Panel (browser) and Install App options
Groundwork for the native OpenAVC Panel apps for Android and iOS, in development
Network Discovery for Panel Apps
Server advertises itself on the local network via mDNS as _openavc._tcp.local.
Upcoming Panel apps will use this to auto-find your OpenAVC system without typing an IP address
Can be disabled in discovery settings if your IT policy requires it
Per-View Error Recovery
If a view in the Programmer IDE hits an unexpected error, you now see a recovery screen with a clear message and retry button
The rest of the IDE keeps working while you recover from the crash
Minimum Platform Version for Drivers
Community drivers can declare a minimum OpenAVC version they require
Installing a driver that needs a newer platform version gives a clear error at install time instead of a runtime failure
Fixes
Deleted devices no longer leave stale state in the cloud after the agent reconnects
Hardened project file loading, ZIP extraction, and WebSocket broadcast against malformed input
Tightened plugin recursion limits and regex validation to prevent runaway plugin code from hanging the server
Fixed a throttle state issue that could cause polling to stall after long disconnects
Logged previously swallowed exceptions to make troubleshooting easier
v0.5.13
UDP transport for drivers, plus cloud tunnel fixes for custom ports and asset loading.
UDP Transport
UDP is now a first-class transport option for YAML and Python drivers
Supports configurable local/remote ports, broadcast, and hex encoding
Driver Builder UI includes UDP configuration
Simulator supports UDP device simulation
Cloud Tunnel Fixes
Fixed Panel and Programmer UIs failing to load through cloud tunnels when the server runs on a non-default port
Fixed images and assets not loading when accessing the Panel or Programmer through cloud remote access
v0.5.12
Improved cloud connectivity reliability and cloud-managed system alerts with configurable thresholds.
Cloud Connectivity
State relay and alert monitor now re-initialize automatically when the cloud connection drops and reconnects
Initial device state snapshot is sent when the cloud agent connects, so the portal shows current state immediately
Added reporting when tunnel connections fail on the agent side
Alert System
System resource alerts (disk, memory, CPU) are now managed by the cloud platform instead of being hardcoded in the agent
Alert thresholds, severity, and enable/disable are all configurable from the cloud portal
Threshold alerts now support hysteresis to prevent repeated notifications when a value fluctuates near the boundary
v0.5.11
Fixed a discovery scan performance regression introduced in v0.5.10.
Device Discovery
Fixed scan running slowly and missing device identification due to port scanning performance regression in v0.5.10
v0.5.10
Fixed device discovery missing ports on projectors and other embedded devices, plus UI builder drag-and-drop accuracy.
Device Discovery
Fixed network scanner missing open ports on projectors, DSPs, and other embedded AV devices with limited TCP stacks
PJLink projectors are now reliably detected during scans
UI Builder
Fixed drag-and-drop placing elements to the right of the intended drop position
Fixed button icons disappearing when visual feedback updates the button text
Panel
Fixed clock element not updating when switching between Time, Date, and DateTime modes
v0.5.9
Stream Deck plugin now works on Linux without manual installs, plus panel and builder bug fixes.
Stream Deck on Linux
Stream Deck plugin now installs the HIDAPI library automatically on Linux, matching the seamless Windows experience
Pi images ship with HIDAPI and USB access rules pre-installed
Plugin errors now show clear setup instructions in the Programmer UI instead of raw error messages
Panel
Fixed clock element ignoring Date and DateTime display modes
Fixed images not loading when using uploaded assets
UI Builder
Fixed icons not rendering in Simple (On/Off) visual feedback mode
v0.5.8
Builder and panel now share element styles for pixel-identical rendering, plus slider enhancements and deployment fixes.
UI Builder
Builder element previews now use the same CSS as the touch panel, so what you see in the builder is what you get on the deployed panel
Theme colors, border radius, fonts, and spacing all match exactly between builder and panel
Fixed action bindings on sliders, keypads, matrices, and lists always showing "Incomplete" even when fully configured
Slider
Sliders now support vertical orientation with automatic grid dimension swap
Configurable thumb size for different touch targets
Optional current value display below the slider
Track fill bar shows the current position
Panel
The Connected status indicator now fades out after a few seconds instead of staying visible permanently
Disconnected stays visible the entire time the panel is offline
Pi Kiosk
Fixed Chromium not filling the display on kiosk deployments
Added reboot button to kiosk settings
Fixed touch scrolling and boot experience
Deployment
Fixed driver and plugin installation on Linux deployments
Fixed device discovery on Docker and VPN hosts with multiple network interfaces
Docker image now includes network utilities for discovery
v0.5.6
Programmer preview now runs the real panel, fixing toggle buttons and ensuring identical behavior.
UI Builder
The Programmer preview now embeds the real touch panel instead of a separate reimplementation, so every button mode (toggle, hold repeat, tap/hold) works exactly as it does on the deployed panel
Fixed toggle buttons not firing the off action when the device was already on
Panel supports a page query parameter, so the preview opens directly to the page you're editing
Engine
Hardened toggle and hold action handling to accept both single-action and multi-action button bindings
v0.5.5
Cloud-managed software updates and richer alert conditions.
Cloud
Systems can now receive software updates directly from the cloud platform with verified checksums, instead of discovering releases independently
Alert conditions support new operators including contains, not_contains, and regex matching
Updates
Update download engine refactored for reuse across both GitHub and cloud-managed update flows
Checksum verification extracted into a standalone step for direct hash comparison
v0.5.4
Network adapter control, AI chat improvements, and comprehensive AI safety validation.
Network
Added network adapter selection for device control and discovery, so systems with multiple NICs can target the correct subnet
Cloud & AI
AI chat messages now render with proper markdown formatting
Fixed cloud AI signature failures when returning large discovery scan results
Added device command retrieval via cloud protocol for smarter AI tool use
AI write operations are now validated before saving, catching malformed bindings, invalid macro steps, bad variable types, Python syntax errors, and plugin config mismatches before they reach the project file
Panel
Fixed partial update bug where UI element fields could be left in an inconsistent state if binding validation failed
v0.5.3
Plugin dependency fixes, documentation refresh, and cloud protocol improvements.
Windows Installer
Fixed plugin pip dependency installation failing silently, which caused plugins like Stream Deck to error on startup
Programmer IDE
Added documentation links to empty states throughout the IDE so new users always know where to learn more
Refreshed and audited all user-facing documentation for accuracy
Panel
Fixed hold-repeat buttons continuing to fire after a WebSocket disconnect
Cloud & AI
Added project data retrieval via cloud protocol messages
Cloud handshake now reports the deployment type for better diagnostics
CI/CD
Fixed Pi image build not triggering after a release
v0.5.2
Instant startup experience, Windows installer reliability, and dashboard improvements.
Startup Experience
The server now shows a loading page instantly when opening Panel or Programmer, instead of a browser error while the engine initializes
The loading page automatically transitions to the real UI once the system is ready
Windows Installer
Fixed path resolution across all deployment types so the update system, simulator, and driver loader work correctly in PyInstaller-bundled installs
System tray now properly elevates to admin when controlling the service
"Check for Updates" in the tray opens the Programmer IDE Updates view instead of running silently in the background
Dashboard & UI
Dashboard now shows the actual software version instead of the project format version
Panel access URL is displayed on the dashboard for easy sharing with end users
Updates section is always visible in the sidebar and checks automatically on startup
Fixed stale version display after in-place updates on Linux and Pi
Cloud & AI
Updated all AI tool definitions to match current APIs
Fixed tunnel proxying for plugin iframe content
v0.5.1
Fixes device discovery and cloud heartbeat metrics on deployed installs.
Bug Fixes
Fixed device discovery scan failing with "Invalid scan parameters" on all deployed installs (Windows installer, Docker, Linux archive, Pi image)
Fixed cloud heartbeat sending degraded metrics instead of full system data (CPU, memory, disk, temperature)
Scan error messages now show the actual cause instead of a generic "Invalid scan parameters"
v0.5.0
Built-in device simulator for testing without hardware, major Driver Builder expansion, and a comprehensive driver system audit.
Device Simulator
Simulate devices directly from the Programmer IDE without any real hardware connected
Simulator runs as a managed subprocess that intercepts device connections and responds like real equipment
Interactive Simulator UI with device-specific control panels for projectors, displays, switchers, audio DSPs, and cameras
Auto-generates simulator controls from driver state variables when no custom controls are defined
Inject network conditions (latency, jitter, packet drops) and device errors to test edge cases
Auto-syncs simulated devices when the project changes so new devices appear without restarting
Simulator badge in the Browse Drivers view shows which community drivers support simulation