Turn hardware steps into repeatable workflows.
Run sequences locally, add a queue for shared hardware, and trigger the same workflow from CI or from an agent.
Manual device work is where reliability goes to die.
The firmware that worked on someone's desk rarely works the same way on everyone else's. Sequences, leases, and assertions make the same workflow run the same way everywhere — local bench, shared lab, CI pipeline.
What you get
- Sequences
- Job queues
- Resource locks
- Leases
- Retries
- Assertions
- Scheduled runs
- CI triggers
- Agent-triggered runs
- Nightly validation
CI validation on a real device.
A pull request triggers a real-device run. The workflow is the same one you ran on your bench — just executed on Embroid-managed hardware.
- 01Pull request opens and CI builds firmware.
- 02CI requests an Embroid device lease.
- 03Embroid flashes the target with the new build.
- 04Embroid runs the validation sequence.
- 05Serial logs and assertions are captured as the run progresses.
- 06An evidence record is attached to the CI run.
- 07CI passes, fails, or flags for human review.
- 08The lease is released and the device returns to the queue.
# .github/workflows/hardware-ci.yml
- uses: embroid/actions/lease@v1
with:
device-tag: "nrf52-ci"
duration: "10m"
- run: embroid flash $EMBROID_DEVICE ./firmware.bin
- run: embroid sequence run boot-smoke.yaml
- uses: embroid/actions/export-evidence@v1Which product do you need?
All three products run the same sequence model. Choose based on where the automation lives.
Great for local sequences and experiments. CI works if a developer is at the laptop.
Good fit for one always-on CI bench with a local job queue and a single active lease.
Built for shared validation labs — scheduler, resource locks, and parallel workflows across multiple targets.
Jobs run inside typed permissions and explicit leases.
Sequences declare which device verbs they need and which targets they touch. Queues coordinate leases so two jobs never fight for the same device. Every run produces an audit trail.
- Typed verbs — sequences can only call permissions their lease includes.
- Retry and recovery paths are declared in the sequence, not improvised in CI.
- Every run record ties firmware hash, target, operator, and assertion results together.