Mission control
for your bench

command your _ with Guppi

The command-and-control plane for anything with instruments. Every instrument on your bench in one live dashboard — set outputs, stream channels, capture waveforms — then lock it down as Python tests.

One command on a Raspberry Pi or any Debian box. Free on your bench, forever — no account, no card.

One plane of control,
three ways to hold it.

Watch it on the dashboard, explore it in data views, codify it as tests — the same instruments, the same live data, three levels of rigor.

Dashboard

Every instrument on one live surface

The moment the rack pairs, every instrument it found appears as a panel: channels streaming live, setpoints you can type into, outputs you can toggle, captures you can arm — from any browser on the LAN.

Hardware abort limits stand armed underneath everything. Cross a threshold and the rig de-energizes itself — the watchdog doesn't care whether a test or a human was driving.

psu1 — BK Precision 9131B
1.voltager/w48.00V
1.currentread2.412 A
1.powerread115.7 W
1.outputwrite
Data views

Every value lands, every window is explorable

Everything that streams also persists. Data views replay any time window: overlay channels, zoom into a transient, and hover to read exact values at any instant. Test runs paint the timeline green and red, so you can see at a glance where things passed and where they didn't.

Scope captures pin to the timeline where they happened, attached to the run that produced them. Underneath it's plain Postgres on your box — psql, pandas, and Grafana all work.

⠿Live · last 5 min⊟⏸✕
psu1.1.voltageVdut1.temp°C
50403020
14:06:00
28.48 V
21.9 °C
14:05:0014:07:3014:10:0014:12:30now
Tests

Procedures become code, results become records

A test is a Python file: phases, measurements, pass/fail limits. Guppi derives the plan from your code, shows it for approval, then drives the same instruments the dashboard does — sweeps, operator prompts, safety guards included.

Every run is a permanent record: measurements against limits, waveforms, logs, and the DUT it ran against — reopenable in seconds.

tests/power_qualification.pydut SN-0042 · exec 7f3a91c2
✓setup_array
✓irradiance_sweep
vout_min4.96 V4.9–5.1✓
harvest_ratio0.93≥ 0.85✓
▶verify_recovery
prompt · confirm DUT bolted to cold plateanswered by operator
○teardown
12/12 measurements in limits

A test is a Python file.
That's the whole contract.

Declare limits, assign measurements, list your phases. Guppi derives the test plan from your code, binds your real instruments as plugs, and streams every measurement live as it runs — on an open framework, not a proprietary sequencer.

Read the test-writing guide →
tests/check_rail.py
import openhtf as htf

@htf.plug(PSU=PSU1)
@measures(htf.Measurement("vout")
    .with_units(units.VOLT).in_range(4.9, 5.1))
def check_rail(test, PSU):
    PSU.set_voltage(1, 5.0)
    PSU.set_output(1, True)
    test.measurements.vout = PSU.measure_voltage(1)

TEST_PHASES = [check_rail]  # that's it
200+

instrument drivers, auto-detected by *IDN? reply

Python

tests are plain code on an open framework — no lock-in

Postgres

your data, on your box, in a normal database

Offline

no account, no cloud dependency, air-gap it

Runs on the bench you own.

Guppi installs like a CLI on a Raspberry Pi — no Docker, no database to configure, no cloud credentials. One command and your whole bench is online, ready to run with guppi-rack.

$ sudo bash install.sh
✓ dependencies installed
✓ VISA bus scanned — 3 instruments
✓ USB-CAN adapter detected
✓ paired with agent · claim code A7F3
$ guppi-rack

Zero config

No address, database, or cloud credential to set.

Never inbound

It dials out. Nothing is ever exposed to the network.

Auto-detect

Scans the bus on every boot and finds your hardware.

Local-first. Cloud-powered.

Cloud test tools store your results. Guppi runs your bench — and the cloud comes with it. The bench you own is free and stays that way; the cloud adds memory, reach, and intelligence when your team needs it.

The bench

free, forever

A complete, deterministic test bench. Auto-detects hardware, runs your tests, and keeps working offline — no account, air-gapped if you want it.

The cloud

when you're ready

AI test authoring, fleet management, remote sharing, and long-term archive — the conveniences that are hard to self-host. Optional and always additive; your bench never depends on it.

RUNNINGtests/solar_array_qualification.py
  1. ▶setup_array
  2. ○irradiance_sweep
  3. ○verify_recovery
  4. ○teardown
sas1.1.current-0.07 A
dut1.vout5.00 V
dut1.power_out-5 W

Get your bench up to speed

Blank SD card to live telemetry in under 15 minutes. No signup, no card, no setup call.

One command on a Raspberry Pi or any Debian box. Free on your bench, forever — no account, no card.