Skip to main content

Welcome to Pace

Pace is a cross-platform task runner and build orchestration tool built with Go. Define your build tasks, development workflows, and automation scripts in a simple, human-readable configuration format that works the same on Windows, Linux, and macOS.

Why Pace?

  • Cross-Platform: Works identically on Windows, Linux, and macOS
  • Simple Syntax: Human-readable .pace configuration files
  • Task Dependencies: Chain tasks together with automatic ordering
  • File Watching: Re-run tasks when source files change
  • Smart Caching: Skip unchanged tasks based on file hashes
  • Hooks: Run setup/cleanup commands before and after tasks
  • Parallel Execution: Run independent tasks concurrently
  • Flexible: Works with any language or build tool

If you've ever wanted npm run scripts but for Go, Rust, C++, or any other language—Pace is for you. Unlike Make (which has limited Windows support) or language-specific runners, Pace works the same everywhere.

Quick Example

Create a config.pace file:

default build

task build [b] {
description "Build the application"
command "go build -o bin/app main.go"
inputs [**/*.go]
outputs [bin/app]
cache true
}

task test [t] {
description "Run tests"
command "go test ./..."
requires [build]
}

task dev [d] {
description "Development server with auto-reload"
watch true
inputs [**/*.go]
command "go run main.go"
}

Run your tasks:

# Run default task
pace run

# Run specific task
pace run test

# Watch and auto-reload
pace watch dev

# List all tasks
pace list

Getting Started

New to Pace? Here's where to start:

  1. Installation - Install Pace on your system
  2. Quick Start Guide - Learn the basics in 5 minutes
  3. Project Templating - Auto-generate project configurations
  4. Configuration Reference - Complete configuration guide
  5. Commands Reference - Explore all available commands
  6. Examples - Practical examples for different use cases

Key Features

Task Dependencies

Chain tasks together with automatic ordering:

task deploy {
description "Deploy application"
requires [test, lint]
depends-on [build]
command "./scripts/deploy.sh"
}

Smart Caching

Skip tasks when nothing has changed:

task build {
cache true
inputs ["src/**/*.go"]
outputs ["bin/app"]
}

File Watching

Auto-reload during development:

task dev {
watch true
inputs ["**/*.go"]
command "go run main.go"
}

Multi-Language Support

Works with any language or tool:

task backend {
command "go build -o bin/server main.go"
}

task frontend {
working_dir "frontend"
command "npm run build"
}

Need Help?

  • Check out our GitHub repository
  • Open an issue for bug reports or feature requests
  • Contribute to the project - PRs are welcome!
  • Star the project if you find it useful