What is OpenHTF?
OpenHTF is Google's open-source Python framework for hardware testing. History since 2016, who maintains it today, who uses it, what it does and does not do.
Last updated · Verified with OpenHTF 1.6.1
OpenHTF (Open Hardware Testing Framework) is an open-source Python framework for writing the tests that run against physical products: functional tests on a PCB, end-of-line tests on an assembled unit, burn-in and environmental tests, calibration routines. It was created at Google, is licensed under Apache 2.0, and is installed with pip install openhtf.
What it does
A test is a Python script. OpenHTF supplies the structure around it:
SequencingTest steps are phases — functions the framework runs in order, with timeouts, retries, guaranteed teardown, early stop and conditional branches.
Measurements with limitsValues are declared with validators (ranges, regex, custom functions) and units; the framework computes pass/fail and stores value, limits and unit in the record. See Measurements.
Instrument abstractionPlugs wrap instruments, the DUT's interfaces and the operator, with a managed lifecycle (created before the test, torn down after).
Operator interfaceA browser Operator UI shows live phases and measurements and handles prompts ("scan the serial number", "press the button").
Test recordsEvery run produces a structured test record — outcome, phases, measurements, logs, attachments — written to JSON or any sink.
What it is not
- Not a test executive with a GUI editor. Tests are code, versioned in git. There is no drag-and-drop sequence editor like NI TestStand's.
- Not a database or analytics tool. OpenHTF writes one record per run and stops. Storage, yield, Cpk and traceability are left to whatever consumes the records — a folder of JSON, a homegrown database, or a product like TofuPilot.
- Not an instrument driver library. Plugs are your code around PyVISA, pyserial, pymodbus or a vendor SDK. A few plugs ship in the box (ADB, Fastboot, serial capture).
- Not a unit-test runner. It does not discover
test_*functions or run assertions the way pytest does; a run is one DUT through one sequence.
History
| When | What |
|---|---|
| 2016 | Open-sourced by Google (v1.0.0, August 2016). Built for the hardware teams behind Google's consumer devices. |
| 2017–2018 | 1.1 → 1.3: new Angular web GUI, improved logging, station discovery. |
| 2022 | v1.5.0: Python 3.7 minimum, many fixes accumulated over four years. |
| March 2025 | 1.6.0 "roll-up" release: Python 3.10 minimum, protobuf 5, modern packaging. 1.6.1 followed. |
| 2026 | Active development continues on master (version 1.6.2 in pyproject.toml), maintained by a team at Waymo. |
The full list is on Releases.
Who maintains it
OpenHTF is maintained by engineers at Waymo (Alphabet), where it is used in production. In 2025 the TofuPilot team visited the original authors in Mountain View and spoke with the current lead maintainer; the framework is maintained by a dedicated group of about five engineers, with no internal fork and no breaking changes planned. The repository is github.com/google/openhtf — 720+ stars, 230+ forks as of September 2026.
Who uses it
Companies known to run OpenHTF in production include Google, Waymo, Sony, STMicroelectronics and research groups at UC Berkeley. The user base is hardware teams that already write Python: robotics, consumer electronics, automotive, aerospace and medical devices, from prototype bring-up through high-volume manufacturing.
How it compares
- OpenHTF vs pytest — the most common question from software-minded teams.
- OpenHTF vs Robot Framework — keyword-driven vs code-first.
- OpenHTF vs NI TestStand / LabVIEW — open-source Python vs a commercial test executive.
Related
Welcome
OpenHTF (Open Hardware Testing Framework) is an open-source Python framework for hardware testing, originally created at Google. Phases, measurements with limits, plugs for instruments, an operator UI and JSON test records.
Installation
Install OpenHTF with pip on Windows, Linux or macOS. Supported Python versions, optional extras for USB and serial plugs, virtual environments, and common install errors.