Documentation
Getting started
A quick orientation to the pieces. Full reference docs live alongside the platform; this is the shape of a typical setup.
1. Describe your product
In your firmware repo, a tensile.yaml declares the toolchain
and the bare-bash build / flash / test commands, plus what hardware it
requires by label.
# tensile.yaml
requires:
- label: nano # matched against a blade's provides[]
phases:
build: make firmware
flash: avrdude -p $TENSILE_NANO_CHIP -P $TENSILE_NANO_PATH -U flash:w:fw.hex
test: pytest tests/hil 2. Label a blade
A machine discovers hardware facts; you supply the semantic
label in blades/<name>.yaml. That label is
the contract key.
# blades/blade-01.yaml
provides:
- label: nano
type: serial
path: /dev/ttyUSB0
usb_id: "2341:0043"
chip: atmega328p 3. Run it from CI
Your existing pipeline is the orchestrator. Validate the contract, then execute the hermetic run loop.
tensile validate --file tensile.yaml
tensile exec --file tensile.yaml # lock → build → flash → test → release Distribution
- Docker: a daemon-less Nix image with the CLI pre-loaded — the primary path for non-NixOS customers.
- Nix flake:
nix run <tensile-core>#tensilefor NixOS users.