Skip to main content
Errand is a task runner built around readability. You write .ern playbooks with tasks, variables, dependencies, and conditions using a structured syntax that stays clean whether you have three tasks or thirty.

What you can do

Define tasks

Write named tasks with shell commands. Each task runs in its own working directory and can depend on other tasks.

Use variables

Declare typed variables with defaults. Pass values from the command line. Use them anywhere in expressions or commands.

Compute values

Derive values at runtime using expressions. Reference variables, call built-in functions, and use results across tasks.

Run concurrently

Errand resolves dependencies automatically and runs independent tasks in parallel when concurrency is enabled.

A quick look

variable "image" {
  description = "Docker image name"
  type        = string
  default     = "myapp"
}

variable "tag" {
  description = "Image tag"
  type        = string
}

computed "registry" {
  expression = env("REGISTRY", "registry.example.com")
}

task "test" {
  description = "Run the test suite"
  commands    = ["go test ./..."]
}

task "build" {
  description = "Build and push the Docker image"
  depends_on  = [task.test]
  commands = [
    "docker build -t ${computed.registry}/${var.image}:${var.tag} .",
    "docker push ${computed.registry}/${var.image}:${var.tag}",
  ]
}
Run it:
errand run build --var tag=1.2.3

Next steps

Installation

Install Errand on Linux, macOS, or Windows.

Quickstart

Write your first playbook and run your first task.

Playbook

Learn the four block types, references, and how a playbook runs.

Functions

Browse all built-in functions with real-world examples.