One fyrer.yml for any language, any stack. Streaming DAG, blake3 cache — if it runs in a shell, fyrer orchestrates it.
Real fyrer output from examples/acme-corp. No waiting — tasks start the instant deps succeed.
Each card maps to a real fyrer.yml field. No marketing abstractions.
No barriers. Tasks start the moment deps succeed — up to concurrency.
Hash of id + cmd + inputs → tar.zst. Second run restores instantly.
If it runs via sh -c, fyrer runs it. Any toolchain, any runtime — no plugins.
Poll + debounce 300ms. Dev servers stay alive until you quit.
Interactive panes with r/K/q — or -n for CI logs.
curl | sh or cargo install. 6 targets. No daemon.
Every run parses fresh, validates, builds a DAG, hashes what matters, and streams tasks as soon as parents succeed.
Real local run. Same commit, no file changes — cache hit.
A single fyrer.yml declares tasks for every runtime. No plugins — just shell commands.
version: 1
packages:
- name: ui
tasks:
build: { cmd: bun build src --outdir dist }
- name: api
tasks:
build: { cmd: cargo build --release }
- name: worker
tasks:
build: { cmd: go build -o bin/worker . }
- name: jobs
tasks:
run: { cmd: python3 jobs/run.py }
# any command via sh -c — if it runs in a shell, fyrer runs it$ fyrer run build -n
[ui:build] ✓ 310ms
[worker:build] ✓ 1.14s
[api:build] ✓ 2.10s
Run 2.10s ✓3 ⚡0 ↷0Every task starts the moment its dependencies succeed — maximum parallelism, zero idle waits.