Skip to content

Concepts

Hordr is small once five concepts click.

A bean is a unit of work with a type, a status, and a body. Beans form a hierarchy that maps 1:1 to levels:

milestone → epic → feature → task
  • milestone — a release or theme. Gets the fleet.
  • epic — a thematic container. Gets its own parallel worktree (a lane).
  • feature — an optional intermediate grouping within an epic.
  • task — the executable unit. One task ≈ one commit.

Never skip a level (no task directly under a milestone). Parents hold children; they are not executed themselves.

Every executable bean gets an isolated git worktree on a branch named after the bean (hordr-<id>). The agent works there, never on your primary branch. Merges are explicit and gated — see Architecture.

Every task carries an assigned: role. The role resolves to a persona (the prompt identity) and a harness (the agent binary). Defaults:

RoleHarnessJob
implementeropencodeReads the bean, writes code, commits
testeropencodeWrites and runs tests
revieweropencodeReviews the diff, approves or blocks

Chain tasks with --blocked-by to build an implement → test → review pipeline.

The engine owns everything the agent should not think about:

  • dispatch — picks the unblocked, ready task for a lane.
  • rollup — a parent is completed only when all descendants are.
  • merge — epic → milestone integration branch → primary (3-tier).
  • cleanup — worktree removal + safe branch delete after a merge.

Agents just work the bean in front of them and call /done.

todo → in-progress → completed
↘ blocked / uncommitted / merging (recoverable)

Status flows up via rollup — the engine writes it, not the agent. Draft beans are never auto-dispatched; flip them to todo to make them ready.