Firmware builds
Workflow .github/workflows/firmware.yml in a repository that contains westwind-pipelines (the repository itself, or a fork). The web application dispatches it with workflow_dispatch:
pipeline_b64(required)The westwind.yaml contents, base64 encoded.
request_id(required)A UUID chosen by the caller. The run is named
westwind <request_id>so the caller can find it with the workflow runs API.board(optional)Overrides
target.board.
The run uploads one artifact, westwind-<request_id>, containing the build outputs and manifest.json:
{
"westwind": 1,
"pipeline": "face-detect",
"board": "arduino_uno_q/stm32u585xx",
"zephyr": "0235217d2893",
"executorch": "v1.5.1",
"created": "2026-11-09T18:00:00Z",
"flash": { "method": "esptool", "chip": "esp32", "offset": "0x1000" },
"files": [
{ "name": "zephyr.bin", "role": "image", "bytes": 393904, "sha256": "..." },
{ "name": "zephyr.elf", "role": "debug", "bytes": 4991628, "sha256": "..." }
],
"model": { "name": "blazeface", "pte_bytes": 230112, "max_abs_diff": 3.1e-06 },
"memory": { "flash_bytes": 412000, "ram_bytes": 301000 }
}flash is copied from the board's catalog entry. role is one of image, uf2, hex, signed, debug, model, report.