Skip to content

Hardware-in-the-loop testing for engineers and their AI agents.

Your team and its coding agents write the firmware. Stout tests every pull request on your real hardware, reports pass or fail on the PR, and shows you which failures are real firmware bugs.

app.stoutdata.ai/boxes/all

Boxes

NameGroupsIP AddressLager VersionLockHealth
100.96.12.410.49.0Online

Main bring-up bench. nRF5340 target on a J-Link, UART console on an FT232H, rails on the LabJack.

Heartbeat 35 seconds ago · Stout Online · bench-01.local · linux/arm64

100.96.12.580.49.0Online
100.96.13.70.48.0Online

GPIO and rail checks for the sensor node. The LabJack moves between this bench and bench-04.

Heartbeat 41 seconds ago · Stout Online · bench-03.local · linux/amd64

100.96.13.220.49.0Online
100.96.15.300.45.1Offline
100.96.13.610.47.1Degraded
100.96.14.90.49.0Degraded
Stout v0.19.0What's newSupport
© 2026 Stout Data, Inc.

Manage every test bench in the fleet: health, updates, access, groups, and locks.

Built for firmware teams and the AI agents they work with. Every pull request runs on real hardware before it merges, and every red result gets sorted into firmware bug, bench problem, or flake.

01 Loop

Every pull request runs on real hardware

Three steps on every change, and nobody has to walk over to the bench.

01.1 Write

Engineers and agents write firmware

Your team writes the code. So do your AI coding agents. Either way the change lands as a pull request on GitHub.

00How it works

01.2 Test

A PR Reviewer tests it on a real box

Stout reads the diff, plans a hardware test, picks a box in your fleet, runs the test on real hardware, and posts the check on the pull request. A person approves the plan first unless you turn that off.

P3PR Reviewers

01.3 Learn

CI Metrics sorts the failures

Every red result is sorted into a real firmware bug, a bench or harness problem, or a flake, so you fix the right thing and trust the ones that pass.

P2CI Metrics

02 Fleet

One place for every test bench

Boxes, Workbench, and Factory look after the benches the loop runs on.

02.1 Boxes

Fleet management

See every box in the lab, its health, its Lager version, and who holds the lock. Update boxes on a schedule, group them by line or site, and control who can reach each one.

P1Boxes

02.2 Workbench

Bench controls in the browser

Set a supply, load a rail, toggle a GPIO, read a thermocouple, flash a target over J-Link, and open the UART console. Every control is a named net and every command is logged.

P4Workbench

02.3 Factory

Production test suites

Import a Python test suite, run it on any box, and keep the step results and logs for every run.

P5Factory

04 Lager

Built on Lager

Lager is fully open-source (Apache 2.0), with no private fork, no patched binaries, and no paywalled core, so if Stout ever stops fitting, your boxes, scripts, and tests keep running on vanilla Lager.

05 FAQ

Frequently asked questions

Common questions from engineering teams evaluating Stout.

What is Stout?

Stout is a control plane for hardware-in-the-loop testing. It runs hardware tests on your pull requests, sorts the failures into firmware bugs, bench problems, and flakes, and manages the fleet of Lager test boxes the tests run on. Under it all is the open-source Lager runtime.

What does the PR Reviewer do?

When a pull request opens or updates, the reviewer reads the diff, plans a hardware test with tool access to the Lager runtime, picks a box, runs the test, and posts pass or fail on the PR. By default a person approves the plan before it runs. You bring your own AI provider key, either Anthropic or any OpenAI-compatible endpoint.

What is CI Metrics?

CI Metrics tells you what your hardware CI is really finding. It reports which merges were checked on hardware, which failures were real firmware bugs, which were caused by a bench or harness change, and which tests are flaky. An admin can confirm or dismiss any row.

Can our AI coding agents use Stout?

Yes. Agents open pull requests like anyone else, and the PR Reviewer tests them the same way, on the same hardware. Nothing in your agent setup has to change.

What is Lager?

Lager is an open-source (Apache 2.0) hardware test automation platform. A Lager box is a Linux machine that runs the Lager runtime in Docker and drives the instruments on a test bench, such as oscilloscopes, power supplies, debuggers, and the devices under test, through a Python API and CLI. Stout manages fleets of these boxes.

Does Stout replace Lager?

No. Lager is the open-source runtime that controls your hardware; Stout is the control plane that governs and scales it across teams. It connects to your existing Lager boxes unchanged, and Lager stays Apache 2.0, so if you ever stop using Stout, your boxes, scripts, and tests keep running on vanilla Lager.

How is Stout different from generic CI tools like Jenkins or GitHub Actions?

Generic CI runners assume interchangeable compute. A test bench is the opposite: each box has specific instruments wired to a specific board, and two jobs cannot share a power supply. Stout adds the hardware layer. It picks a box, locks it, runs the test, streams the log, and posts the result to GitHub as a check. It plugs into the CI you already have instead of replacing it.

Can we trigger hardware-in-the-loop tests from CI?

Yes. A PR Reviewer runs on every pull request through the Stout GitHub App and posts a check run, so branch protection can require a hardware pass before merge. Your own CI can also report its hardware runs to Stout, and CI Metrics shows which merges were checked on real hardware.

How do SSO and access control work?

Users sign in through your identity provider over SSO (OIDC or SAML), with just-in-time provisioning on first login. Role-based access control scopes exactly who can view and run what across organizations, teams, and individual boxes, and removing a user in your IdP immediately revokes their access.

How does Stout keep our hardware and data secure?

Every action is recorded in an immutable audit log (who did what, on which box, and when), and accounts can require MFA. Stout runs as a managed cloud service: your boxes open an authenticated outbound connection to it, so there are no inbound ports to expose on your test network.

What does pricing look like?

Pricing scales with your team and fleet size. Book a demo and we'll put together a quote that fits.

06 Demo

See Stout in Action

In a 20-minute call we'll open a pull request, watch a PR Reviewer test it on a real box, and walk through the fleet.

What to Expect

  • A 20-minute walkthrough on real Lager boxes, not slides
  • Watch a PR Reviewer plan and run a hardware test
  • No commitment required