Skip to main content

Quick Start: Orchestrate Monorepo Tasks with fyrer

This guide walks you through installing fyrer, writing your first fyrer.yml, and running concurrent builds and dev servers across a multi-package monorepo — from zero to a fully cached, dependency-aware task graph in minutes.

1

Install fyrer

2

Install the fyrer binary — pick any method from the Installation page:

3
# via install script (Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/07calc/fyrer/main/install.sh | sh

# via cargo
cargo install fyrer
4

Once installed, run fyrer --version to confirm it's on your $PATH. You should see fyrer 0.5.0.

5

Create your fyrer.yml

6

Create a fyrer.yml file in your monorepo root. This single file describes every package, its tasks, dependencies, and caching behaviour. Here's a complete example with three packages — a shared UI library, a Rust API, and a Bun web frontend:

7
version: 1
cache:
provider: local
env:
NODE_ENV: development
packages:
- name: ui
root: ./packages/ui
tasks:
build:
cmd: bun build src/index.ts --outdir dist
inputs:
- src/**
outputs:
- dist/**
ignore:
- node_modules/**
cache: true

- name: api
root: ./apps/api
env_file: .env
tasks:
build:
cmd: cargo build --release
inputs:
- src/**
- Cargo.toml
outputs:
- target/release/api
ignore:
- target/**
cache: true
dev:
cmd: cargo run
depends_on:
- api:build
cache: false
persistent: true

- name: web
root: ./apps/web
env:
PORT: "3000"
env_file: .env
tasks:
dev:
cmd: bun --watch src/index.ts
depends_on:
- ui:build
cache: false
persistent: true
build:
cmd: bun build src/index.ts --outdir dist
depends_on:
- ui:build
inputs:
- src/**
outputs:
- dist/**
ignore:
- node_modules/**
cache: true
8

A few things to notice in this config:

9
  • cache: true on every build task — fyrer hashes all inputs and skips the task on future runs when nothing has changed.
  • depends_on wires the graph: api:dev waits for api:build, and both web:dev and web:build wait for ui:build to finish first.
  • persistent: true marks long-running dev servers; fyrer keeps them alive until you quit.
  • Root-level env sets NODE_ENV for every task, while env and env_file on individual packages override or extend it as needed.
10

List available tasks

11

Inspect every package and task fyrer can see:

12
fyrer list
13

Example output:

14
ui build
api build
api dev
web dev
web build
15

Preview the execution plan

16

Before running anything, print the topological execution plan to verify that dependency ordering looks correct:

17
fyrer plan build
18

fyrer resolves the full dependency graph and prints levels (for display only — execution is streaming) in the order tasks will become runnable. This is especially useful when wiring up a new depends_on relationship and you want to confirm the order is right.

19

Run your build

20

Execute the build task across every package:

21
fyrer run build
22

fyrer resolves the dependency graph, runs tasks in streaming order as soon as dependencies finish (up to the concurrency limit), and streams every task's output through the TUI. On the second run, if no input files have changed, each task is reported as ⚡ Cached and completes instantly — no recompilation needed.

23

Start dev servers

24

Boot all dev servers at once:

25
fyrer run dev
26

Tasks marked persistent: true stay alive and keep streaming logs until you press q or Ctrl+C. The TUI shows all running tasks on the left and the selected task's log output on the right — use the keyboard shortcuts below to navigate between them.

TUI Controls

When fyrer run opens the full-screen TUI, the following keys are available:

KeyAction
q / Ctrl+CQuit (kills all spawned process groups)
j / k or / Select previous / next task
u / d or PageUp / PageDownScroll the log pane
g / GJump to top / tail (follow)
rRestart the selected task
K (Shift+k)Kill the selected task
Mouse wheelScroll the log
EnterBrowse task logs after run finishes

Pass the -n flag (--no-tui) to get plain, prefixed, colorized log output instead of the interactive TUI — perfect for CI pipelines and log aggregators:

fyrer run build -n
i

Now that you have fyrer running, explore the Configuration reference to learn all available options — including per-task env and env_file overrides, timeout, cwd, watch mode, and the full caching model.