Skip to main content

Continuous Integration for Embedded Hardware

Project description

BenchCI

Documentation PyPI Early Access Hardware CI Embedded License

Continuous Integration for Embedded Hardware

Run real hardware tests directly from your CI pipeline.

Flash firmware, execute tests on real devices, and validate embedded systems โ€” without manual benches or fragile scripts.


๐ŸŽฅ Demo

Watch BenchCI run real hardware tests directly from CI:

BenchCI Demo

STM32 + Raspberry Pi + GitHub Actions
No simulation. Real device.


๐Ÿงช What this demo shows

  • CI pipeline builds firmware
  • BenchCI schedules a real hardware bench
  • Device is flashed automatically
  • Tests run on actual hardware
  • Results and logs are returned to CI

๐Ÿ‘‰ No simulation. No mocks. Real hardware in the loop.


๐Ÿš€ Quickstart (30 seconds)

pip install benchci
benchci login
benchci run -b bench.yaml -s suite.yaml -a build/fw.elf

Create or access your BenchCI workspace from the dashboard:

https://app.benchci.dev

๐Ÿ‘‰ Thatโ€™s it โ€” BenchCI will:

  • flash firmware
  • execute tests on real hardware
  • validate behavior
  • generate structured artifacts

โšก Why BenchCI?

Most embedded testing is still manual:

  • flash firmware
  • open terminal
  • send commands
  • watch logs

This works โ€” until you need repeatability, collaboration, or CI.

BenchCI turns these workflows into repeatable, CI-driven hardware validation.


BenchCI makes hardware testing:

  • โœ… declarative
  • โœ… repeatable
  • โœ… CI-ready
  • โœ… scalable across teams

๐Ÿง  Mental Model

BenchCI separates hardware and test logic:

  • bench.yaml โ†’ your hardware setup
  • suite.yaml โ†’ your tests
bench.yaml + suite.yaml
        โ†“
   benchci run
        โ†“
   real hardware execution
        โ†“
   results + logs

๐Ÿ’ก Key idea

BenchCI turns real hardware into a testable resource in your CI pipeline.


๐Ÿ—๏ธ How It Works

CI Pipeline / Developer
        โ”‚
        โ–ผ
   benchci run
        โ”‚
        โ–ผ
   Local Runner / Agent / Cloud Backend
        โ”‚
        โ–ผ
   Real Hardware Bench
        โ”‚
        โ–ผ
   DUT / PLC / ECU

BenchCI separates:

  • execution (CLI / CI)
  • hardware access (local runner or Agent)
  • workspace visibility (Dashboard)
  • scheduling and access control (Cloud backend)

This enables:

  • remote labs
  • shared benches
  • private customer benches
  • scalable hardware testing

๐Ÿง  What BenchCI Does

BenchCI connects your CI pipeline directly to real hardware and allows you to:

  • flash firmware automatically (OpenOCD, CubeProgrammer, J-Link, esptool)
  • interact with devices over UART, Modbus RTU/TCP, and CAN
  • control and monitor GPIO (local or remote)
  • control supported relay-backed power resources
  • validate behavior with structured test steps
  • run tests locally, through a customer-managed Agent, or through BenchCI Cloud
  • generate reproducible artifacts

๐Ÿ“„ Configuration Model

BenchCI uses two files:

bench.yaml

Defines your hardware:

  • nodes (DUT, controllers, PLCs, etc.)
  • transports (UART, Modbus, CAN)
  • flashing configuration
  • GPIO control
  • optional bench-level resources such as relay-backed power control

suite.yaml

Defines your tests:

  • test cases
  • step-by-step actions
  • expected behavior

๐Ÿš€ Example

suite.yaml

version: "1"

suite:
  name: "firmware-tests"

tests:
  - name: boot_ok
    steps:
      - expect_uart:
          node: dut
          transport: console
          contains: "[BOOT] OK"
          within_ms: 3000

  - name: ping
    steps:
      - send_uart:
          node: dut
          transport: console
          data: "PING\n"
      - expect_uart:
          node: dut
          transport: console
          contains: "PONG"
          within_ms: 1000

Run:

benchci run -b bench.yaml -s suite.yaml -a build/fw.elf

๐Ÿ”Œ Supported Interfaces

Communication

  • UART
  • Modbus RTU
  • Modbus TCP
  • CAN

Hardware Control

  • Linux GPIO
  • Remote GPIO (via Agent)
  • Mock GPIO
  • relay-backed power workflows

Flashing Backends

  • OpenOCD
  • STM32CubeProgrammer
  • SEGGER J-Link
  • esptool (ESP32)

๐Ÿงช Example Scenarios

examples/
โ”œโ”€โ”€ device_boot_validation/
โ”œโ”€โ”€ local_gpio_reset_and_ready/
โ”œโ”€โ”€ remote_gpio_power_cycle/
โ”œโ”€โ”€ modbus_rtu_plc_validation/
โ”œโ”€โ”€ modbus_tcp_gateway_validation/
โ”œโ”€โ”€ can_ecu_handshake/
โ”œโ”€โ”€ multi_node_system_smoke/

๐Ÿ“ฆ Output Artifacts

BenchCI generates structured outputs:

benchci-results/
โ””โ”€โ”€ <timestamp>/
    โ”œโ”€โ”€ results.json
    โ””โ”€โ”€ nodes/
        โ””โ”€โ”€ dut/
            โ”œโ”€โ”€ flash.log
            โ”œโ”€โ”€ gpio.log
            โ””โ”€โ”€ transport-console.log

Perfect for:

  • CI pipelines
  • debugging
  • traceability

๐Ÿงฐ CLI Workflow

  • benchci login โ†’ authenticate with your BenchCI account/workspace
  • benchci whoami โ†’ show current user and active workspace
  • benchci doctor โ†’ check environment
  • benchci validate โ†’ validate configs
  • benchci run โ†’ execute tests
  • benchci benches list โ†’ list Cloud Mode benches
  • benchci runs list โ†’ inspect Cloud Mode runs

๐Ÿ”„ CI Integration

BenchCI is designed for automation:

  • GitLab CI (example included)
  • GitHub Actions / Jenkins
  • direct Agent execution
  • Cloud Mode through the backend scheduler

๐ŸŒ Dashboard

Use the dashboard to view workspace health, benches, runs, events, failures, and artifacts:

https://app.benchci.dev

๐Ÿ“š Documentation

๐Ÿ‘‰ https://docs.benchci.dev

Includes:

  • quickstart
  • installation
  • configuration guides
  • agent setup
  • CI integration
  • Cloud Mode

๐Ÿ“Œ Repository Contents

This repository contains:

  • documentation
  • configuration examples
  • CI examples
  • helper tools

BenchCI core source code is maintained in a private repository.


๐Ÿ’ผ License and Access

BenchCI is a commercial product.

Current onboarding uses BenchCI accounts and workspaces. Early access and production use are activated manually by the BenchCI team, with monthly invoicing for paid customers.

For evaluation, pilot access, or pricing:

๐Ÿ“ง tech@benchci.dev

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

benchci-0.4.0.tar.gz (73.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

benchci-0.4.0-py3-none-any.whl (85.9 kB view details)

Uploaded Python 3

File details

Details for the file benchci-0.4.0.tar.gz.

File metadata

  • Download URL: benchci-0.4.0.tar.gz
  • Upload date:
  • Size: 73.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for benchci-0.4.0.tar.gz
Algorithm Hash digest
SHA256 da23f7a30e2fbf6268574940d12f74ae08ab221395b9c216bc05cc32a795582b
MD5 f679ceee9d01aac0abb658d512bbdf35
BLAKE2b-256 2eceafbd74ef77f361eb03592cb6c3453f67df68aa582a3cebcbb1d587b0caf2

See more details on using hashes here.

File details

Details for the file benchci-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: benchci-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 85.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for benchci-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7f3b625fb51d561cd7196c59ed967bca6c62e36f67049128e54f9bbb5842b259
MD5 903c823c75b9de8f4ea7d61d549983f8
BLAKE2b-256 c15dc35405971533ad47bc8e3afcfa20d197a07f18119b65b729b8c89688daac

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page