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, watch channels stream, capture waveforms — and codify it all as Python test sequences.
One command on a Raspberry Pi or any Debian box. Free on your bench, forever — no account, no card.
Bench work still means custom scripts, driver hunts, and digging through shared folders.
We made it fast, integrated, and actually fun.
Connect
Plug in and run one command. Guppi scans VISA, USB, Ethernet, serial, and CAN, and matches what it finds against 200+ built-in drivers — power, scopes, DMMs, RF, temperature, vacuum, motion, photonics. No config.
Control
The dashboard is a live control surface: set voltages, flip outputs, arm scope captures — from any browser on the LAN. Watchdog safety limits stand guard under everything you touch.
Automate
When a procedure matters, codify it: plain-Python tests drive the same instruments — phases, measurements, pass/fail limits, sweeps, operator prompts. History lands in plain Postgres.
Plug in. guppi does the rest.
Connect your instruments, run one command, and data streams straight to your browser — instantly. No drivers to hunt down, no addresses to wire up.
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 →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 itinstrument drivers, auto-detected by *IDN? reply
tests are plain code on an open framework — no lock-in
your data, on your box, in a normal database
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, no cloud credentials. One command and your whole bench is online, ready to run with 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, foreverA 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 readyAI test authoring, fleet management, remote sharing, and long-term archive — the conveniences that are hard to self-host. Optional, metered, always additive.
- ▶setup_array
- ○irradiance_sweep
- ○verify_recovery
- ○teardown
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.