Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/dwarves

.nornir/guide.md

dwarves — guide

The forge is young; this describes how it is meant to be driven. Everything is xtask.

Running a pipeline

cargo xtask <pipeline>

Pipelines (each pure Rust, each testable):

pipeline what it does
build build the targeted members through nornir
test run the members' test matrices (nornir testmatrix)
bench run the heavy benches and record results to the warehouse
release drive nornir's deps-first release cascade
publish forge the resulting artifacts into holger

How it binds

The dwarves CLI — thin or fat

The dwarves binary drives the forge two ways, mirroring nornir's client modes:

Running the forge as a daemon (dwarves serve)

dwarves serve                 # boot the gRPC forge + durable cron in THIS process
dwarves-server                # the standalone daemon (identical bootstrap)
dwarves-server --install --start   # install + start it as a skidbladnir systemd unit

serve binds $DWARVES_SERVER_ADDR (default 127.0.0.1:7900), historizes into $DWARVES_WAREHOUSE (default ~/.dwarves/warehouse), and spins the durable server-side cron loop: every minute it seeds its dedup from <warehouse>/cron.redb, ticks each registered pipeline's cron through the shared jera Scheduler, and persists the last-fired store back — so a cron pipeline fires exactly once per matching minute, even across a restart. Push-triggered pipelines fire the same way via the Dwarf.Webhook RPC.

Principles