Skip to main content

Continuous Integration for Embedded Hardware

Project description

BenchCI

Documentation Early Access Hardware CI Embedded License

Run hardware-in-the-loop tests on real embedded devices — locally or in CI.

BenchCI is a lightweight test runner for embedded systems that lets you define hardware tests declaratively and execute them against real devices using UART, Modbus, and GPIO.


⚡ 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 does not scale.

BenchCI turns this into a repeatable, automated, CI-ready workflow.


🧠 What BenchCI Does

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

  • Flash firmware automatically
  • Interact with devices over UART, Modbus RTU/TCP
  • Control and monitor GPIO lines
  • Validate behavior with structured test steps
  • Generate reproducible test artifacts

🏗️ How It Works

CI Pipeline / Developer
        │
        ▼
   benchci run
        │
        ▼
   BenchCI Agent
        │
        ▼
   Hardware Device

🧰 CLI Workflow

BenchCI provides built-in tools to help you validate your setup:

  • benchci doctor — check system dependencies
  • benchci validate — validate configuration files
  • benchci login — authenticate with BenchCI services

These commands help ensure reliable execution before running tests.


🚀 Example (30 seconds)

Define your test suite:

name: firmware_tests

tests:

  - name: boot_ok
    steps:
      - expect_uart:
          contains: "[BOOT] OK"
          within_ms: 3000

  - name: ping
    steps:
      - send_uart: "PING\n"
      - expect_uart:
          contains: "PONG"
          within_ms: 1000

Run it:

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

BenchCI will:

  • flash firmware
  • reset the device
  • execute tests
  • validate responses
  • store logs and results

🔌 Supported Interfaces

BenchCI is designed for real hardware interaction:

  • UART communication
  • Modbus RTU
  • Modbus TCP
  • Linux GPIO (input, output, edge detection)

📦 Output Artifacts

Each run produces structured results:

benchci-results/
├── transport.log
├── flash.log
├── gpio.log
└── results.json

Perfect for CI pipelines and debugging.


🔄 CI Integration

BenchCI is built for automation:

  • GitLab CI support (example included)
  • Works with any CI runner connected to hardware
  • Agent-based execution for remote benches

See: examples/ci/gitlab


📚 Documentation

Full documentation:

👉 https://docs.benchci.dev

Key topics:

  • Quickstart
  • Installation
  • Board configuration
  • Test suite definition
  • CI integration
  • Architecture

📌 Repository Contents

This repository contains:

  • documentation
  • configuration examples
  • CI integration examples
  • helper tools

BenchCI source code is maintained in a private repository.


💼 License

BenchCI is a commercial product.

To request access:

📧 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.1.0.tar.gz (56.1 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.1.0-py3-none-any.whl (66.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for benchci-0.1.0.tar.gz
Algorithm Hash digest
SHA256 38ac1d4fa5d985060f246b0bd43d3e8f4a4cac3bfebbc40361f3c397b4e561c8
MD5 95b9f409edcbbf834602f3390c09ede3
BLAKE2b-256 e0a6a254f4391d74d9112e96376051e2f543bb9a119111edae842e782cb295fc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: benchci-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 66.7 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3618fac6392a39352699f488de49e9332afd89cb71ad50319489565822ed5015
MD5 f34560f251857c256f23d465589bc810
BLAKE2b-256 967a6a0d72e3b6246de27c098f8eb79787f840fd536fb0b6b13ef1b794e7ef54

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