How we deploy

From idea to room, safely

Every change goes through the same path: tested automatically, trialled on our test cloud, approved by a person, then rolled out to rooms when it suits the client. Watch it run, and approve the release yourself.

release 2026.10.06
  1. 01

    Plan with AI

    Engineers and AI agents work from shared repo instructions (CLAUDE.md / AGENTS.md), turning a requirement into a plan grounded in the real codebase.

  2. 02

    Build on the framework

    New work starts from proAV.Net.Core, the driver library and the panel UI library. AI pair-programmers write code, tests and docs together in the same change.

  3. 03

    Pull request & review

    Every change is a pull request reviewed by a person. Docs updates are mandatory in the same PR.

  4. 04

    Automated tests

    800+ API tests, integration tests against a disposable Firebase emulator, and front-end spec suites run on every PR.

  5. 05

    Beta on develop

    Merging to develop publishes dated -beta packages and deploys to test.proav.cloud, where changes are trialled for real.

  6. 06

    Human approval gate

    A release from main pauses until a named approver signs it off. One approval releases everything together.

  7. 07

    Release everywhere at once

    The framework and dashboard NuGet packages, the panel UI npm package, the production cloud deploy and the GitHub Release ship as one dated version.

  8. 08

    Program package intake

    Project repos build their Crestron program (CPZ) and upload it to the tenant's package library automatically, with commit and branch attached.

  9. 09

    Deploy or schedule to rooms

    Compatibility-checked deploys to one processor or a whole estate, now or scheduled out of hours.

  10. 10

    Observe & improve

    Check-ins, metrics, logs, ratings and triage show how the release behaves in the real world, and feed straight into the next plan.

Versions anyone can read

2026.10.06

Releases are named by date. Betas add a revision, like 2026.10.06.3-beta. Anyone on the service desk can tell how current a room is at a glance, and every program package also records the git commit and branch it was built from.

One approval releases all of this together
proAV.Net.Core
the framework on every processor (NuGet)
AppDashboard
the on-processor dashboard (NuGet)
proav-ui-lib
the touch-panel UI library (npm)
proav.cloud
the production cloud portal and API
GitHub Release
release notes and artifacts
Into the rooms

Rolling out to an estate

Once a client's program is built, the portal handles delivery: compatibility checks, scheduling and a record of every deploy.

ManageAvailable now

Config versions & backups

Live config editor, setup wizard, templates, every revision kept with diffs, and property-list backup/restore.

For the client: Every change is recorded and reversible. Swap a failed processor and restore it in minutes.

DeviceRegistry.Api/Endpoints/ConfigEndpoints.cs
DeliverAvailable now

Firmware library

Firmware per model, with which processors are current or outdated across the fleet.

For the client: Security and stability patches tracked and applied deliberately, not forgotten.

DeviceRegistry.Api/Endpoints/FirmwareEndpoints.cs
DeliverAvailable now

Package library

Every control-system program version with release notes, git commit and branch — deploy to one device or many after a compatibility check.

For the client: Consistent rollouts across an estate, and you always know exactly what is running where.

DeviceRegistry.Api/Endpoints/PackageEndpoints.cs
DeliverAvailable now

Shareable package links

Share a specific build with a short public download link.

For the client: Hand a build to a partner or site engineer in one click.

DeviceRegistry.Api/Endpoints/PackageLinkEndpoints.cs
ManageAvailable now

Remote & scheduled actions

Reboot, restart, update, apply a template, update firmware or move a device to another cloud — now or on a schedule.

For the client: Out-of-hours maintenance without anyone on site; fixes in minutes instead of a truck roll.

DeviceRegistry.Api/Services/ScheduledActionDispatcher.cs