Skip to main content

DSL Overview (version = "0.5")

Use this page for DSL shape. Use DSL Reference Table for factual field constraints.

Core shape:

version = "0.5"
alias b = build

build [target] [mode="release"]: deps...
    @in ...
    @out ...
    @env KEY=value
    @secret_env TOKEN
    @dir apps/api
    @requires cargo
    @mode graph
    @isolation off
    run command

Top-level variables​

Before the first task header, you can declare workspace-level variables (static strings or $(command) output) that any task can reference via {{ NAME }}:

version = "0.5"
GIT_SHA = $(git rev-parse --short HEAD)

release:
    @out dist/release-{{ GIT_SHA }}.tar.gz
    tar czf dist/release-{{ GIT_SHA }}.tar.gz dist/

See Annotations for the full syntax, evaluation timeout, and caching implications.

Execution inference rules​

  • task with declared @out defaults to graph behavior
  • task without @out defaults to interactive behavior
  • explicit @mode can override inference

Minimal high-signal patterns​

Graph task pattern​

build:
    @in src/**/* Cargo.toml
    @out target/release
    cargo build --release

Interactive task pattern​

dev:
    @mode interactive
    npm run dev

Next​