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>#tensile for NixOS users.

← Back home