Close

CMSIS-DAP over TCP

A project log for BenchPod

An open hardware bench tool that plugs into your CI: sensor sim, CAN, analog I/O, power control, and a Python SDK with pytest integration

edward-viaeneEdward Viaene 06/24/2026 at 15:010 Comments

BenchPod is a tool that'll plug into CI, for example, GitHub actions. I spent some time building CMSIS-DAP over TCP in the firmware so we can run pytest flash commands within GitHub Actions over TCP. BenchPod opens a WebSocket connection to our Cloud Platform, and we encapsulate DAP packets as JSON messages between pytest (GitHub Actions), the Cloud Platform, and BenchPod.

Our example repo with a GitHub workflow and the pytest code can be found here: https://github.com/embeddedci-com/examples/

Also, an interesting fact: the GitHub Actions workflow doesn't need any credentials. It can fetch an OIDC token that the server can verify. We only need to know the repository owner and name (the IDs actually, as those are unique). The server can then validate ownership without having to put credentials in CI. On the firmware side, we generate a private key that stays on the device, authenticate with the cloud server, and establish an outgoing WebSocket over TCP to the cloud platform.

Discussions