Skip to content

Boutiques

A Python toolkit for the Boutiques descriptor standard — a JSON format for describing command-line tools (inputs, outputs, container images, etc.) in a structured, language-agnostic way.

This repository hosts both:

Two schema versions are supported:

  • 0.5 — the original Boutiques specification.
  • 0.5+styx — a strict superset of 0.5 adding sub-command hierarchy, sub-command alternation, and a couple of file-input attributes used by the Styx ecosystem. Every valid 0.5 descriptor is also a valid 0.5+styx descriptor (only the schema-version field changes).

Install

uv add boutiques            # or: pip install boutiques

For development:

git clone https://github.com/childmindresearch/boutiques_next
cd boutiques_next
uv sync
uv run bosh --help

Quickstart

Validate a descriptor:

bosh validate fsl_bet.json

Generate a sample invocation:

bosh example fsl_bet.json > invocation.json

See the command-line that would run, without running it:

bosh exec simulate fsl_bet.json invocation.json

Actually launch the tool (locally, in docker, or in singularity):

bosh exec launch fsl_bet.json invocation.json -r docker

URLs work everywhere paths do — including GitHub blob links, which get auto-rewritten to raw:

bosh validate https://github.com/boutiques/boutiques/blob/master/boutiques/schema/examples/fsl_bet/fsl_bet.json

Status

Early development. The public Python API is not yet stable; the descriptor spec is. See the roadmap for what's shipped, what's intentionally dropped vs. classic boutiques, and what's open.