Multi-Backlog & Multi-Project
By default, every rauf command operates on a single backlog root: <project>/.rauf/. That’s
the right model for a project with one queue of work. But feature pipelines and multi-feature
efforts keep separate backlogs per feature, and a busy machine can have several loops running
at once. This guide covers how to target a different backlog root, how independent roots coexist
in one repo, and how to find every loop running machine-wide.
The default: <project>/.rauf/
Run rauf status, rauf loop run, or any backlog … command with no extra flags and they all
resolve to <project>/.rauf/ — the state directory at the project root. That directory holds
everything a loop needs (backlog, state, events, logs); see
Core Concepts for what lives inside it.
--backlog <dir> — target a non-default root
--backlog <dir> is the one way to point a command at a different backlog root. It’s valid
on every command that touches state:
loop runstatusfollowlogresetresume- the
backlog …commands
State for that root lives under <dir>/.rauf/ — or under <dir> itself when the path already
ends in .rauf.
The flow is identical to the default; you just pass --backlog to keep the run and every
observation pinned to the same root:
# Run a loop against a feature backlog under specs/my-feature/.rauf/rauf loop run . --backlog specs/my-feature --detached
# Observe that same root — note the matching --backlograuf status . --backlog specs/my-featurerauf follow . --backlog specs/my-feature
# Tail its human log, or stop the looprauf log . --backlog specs/my-feature --followrauf loop stop .Nested roots in one repo
A single repository can hold its own top-level <project>/.rauf/ and one or more feature
backlogs under subdirectories (for example specs/feature-a/.rauf/ and
specs/feature-b/.rauf/). Each is independent state — its own backlog, its own loop, its
own events. Nothing is shared between them; a loop on one root never touches another.
Finding every live loop: rauf status --all
To see every backlog root with a live loop machine-wide — across all projects and all nested
roots — use rauf status --all:
rauf status --allThis reads the active-loop registry under ~/.rauf/. The registry is self-healed on read,
so a loop that crashed without cleaning up never lingers in the listing — a stale entry is
dropped the next time you query.
For programmatic supervision, add --json:
rauf status --all --json# → { "loops": [ … ] }Multi-project: discover every rauf-enabled project
Where --all enumerates live loops, the projects commands enumerate projects. They
discover and summarize every rauf-enabled project found under the configured root directory:
rauf projects list # every rauf-enabled project under the root directoryrauf projects status # the same set, summarized with loop/backlog stateTo point a single invocation at a different root directory, use the global --root <path> flag:
rauf projects status --root ~/workSee also
- Monitoring — observing a running loop with
status,follow, andlog. - Core Concepts — what a
.rauf/directory holds. - CLI Reference — every command and flag, including
--backlogandstatus --all.