Skip to main content
You want a pull request to fail when the firmware’s captured UART is missing what you expect.

What you’ll do

1

Create a personal access token

On API Keys, create a personal access token and give it a name. Chiplab shows the token once. Copy it into a CI secret. The job sends it as a bearer token, CHIPLAB_API_KEY.
2

Start from the GitHub Actions template

The examples repository ships .github/workflows/claude-chiplab-smoke.yml. It runs when someone comments /smoke-test on a pull request, builds examples/bare-metal/stm32f4-discovery, and checks the captured UART. Treat it as a template: the trigger, the agent, and the example path are yours to change.
3

Run on the virtual board

The job calls ask for the current boards, tools, and gotchas, produces an ELF, uploads it, and runs it on the target board with the UART the firmware writes. It then waits and downloads stdout.
4

Fail when the expected output is missing

Fail the pipeline unless stdout contains what you expect. The public examples expect Hello world!.
Details of the token, the workflow, and the check are on CI/CD.

Ask your agent

What you get back

The job downloads stdout and fails the pipeline unless that output contains what you expect. The public examples expect Hello world!.

Next

CI/CD

Run the same tools from a pipeline with a personal access token.

run

Execute an ELF on a virtual board and read the UART.
Last modified on October 2, 2026