Quickstart
One command, no toolchain
Install the CLI and create an API key at siliconrig.dev/keys:
curl -fsSL https://siliconrig.dev/install.sh | sh
export SRIG_API_KEY=key_...Grab a prebuilt demo image and run it on a real board:
curl -LO https://github.com/raws-labs/srig-examples/releases/latest/download/demo-shell-esp32-s3.bin
srig run demo-shell-esp32-s3.bin --board esp32-s3 --expect "0 failed"srig run reserves a board, flashes it, watches the serial output for the pattern, ends the session, and exits 0 on a match. That exit code is the whole CI integration: nothing else is needed to gate a pipeline on real hardware.
Swap in stm32-h753, stm32-f446 or rp2350 with the matching image from the same release.
Your own firmware
The same command, pointed at your build. Assert on whatever your firmware prints:
srig run build/app.bin --board stm32-h753 --expect "All tests passed"Firmware can set the exit code itself by printing ##srig-exit:N##, which wins over --expect. See the CLI reference for --fail, --timeout and --retries.
STM32 boards also take an .elf or an Intel .hex directly; the conversion happens server side. The RP2350 takes a .uf2.
In the browser
- Sign up at siliconrig.dev and start a session on an available board
- Type
helpin the console. Boards run a demo shell when nothing else is loaded, so one is already answering - Flash your firmware with the flash button, and watch the progress stream
- Use the terminal exactly as if the board were on your desk
In pytest
pip install siliconrig pytestfrom siliconrig import Board
def test_boots_and_answers():
with Board("esp32-s3", firmware="build/app.bin") as b:
b.expect("Ready", timeout=30)
b.send("status\n")
assert "OK" in b.read_until("OK", timeout=5)A worked suite that runs the same assertions on all four board types lives in srig-examples.
Sessions end on their own
A session with nothing attached to its serial console ends after 60 seconds and releases the board. Flashing and power cycling restart that countdown, and srig run holds the console open for you, so this only matters when you drive the API by hand.
Next steps
- CLI Reference for all commands and flags
- CI/CD Integration for GitHub Actions and GitLab CI
- Python SDK for the pytest fixtures
- Sessions for states, credits and limits