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

Flash firmware, run automated tests on real devices, and validate embedded systems in CI โ€” using simple YAML configs.


๐Ÿš€ 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?

Testing embedded firmware usually looks like this:

  • flash firmware manually
  • open serial terminal
  • send commands
  • watch logs
  • write ad-hoc scripts
  • repeat for every release

๐Ÿ‘‰ This is manual, fragile, and not CI-friendly


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

๐Ÿ—๏ธ 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.3.4.tar.gz (72.5 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.3.4-py3-none-any.whl (85.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for benchci-0.3.4.tar.gz
Algorithm Hash digest
SHA256 220ffc75e2930f10c21ba2b592a08513bbf6de87f60914734ba0012024593770
MD5 fc8432fbf129d34f013cf3d30b933e0f
BLAKE2b-256 0e805df87341ef9dc90e0818978b336942f401e31c41dc43214eeb90c5c7969a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: benchci-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 85.2 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.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 52bf3b65d268fc5087c97fc4fbbd1076a855d5219768edc4df164b9b35c2fed3
MD5 012c98090c07b1beeb30f9b74e9d726b
BLAKE2b-256 9e3d1747ce0eadedf07bef26f63935e8c813cf689db2fd4c25559d055828ff96

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