When to use child runs
Use child runs when the unit of work is large enough to deserve its own workflow run:- Parallel workstreams - launch implementation, review, migration, or validation runs at the same time.
- Specialized workflows - delegate to purpose-built workflows for different repos, services, or review types.
- Long-running work - let the parent keep coordinating while children run independently.
- Manager patterns - build a parent workflow that creates workers, watches progress, gathers results, and decides what happens next.
- Variants and attempts - run multiple approaches as separate durable runs with separate outputs.
Enable run tools
Workflow agents can create and manage runs when the parent run opts in to Fabro’s run-management tool catalog:run.toml
| Tool | Purpose |
|---|---|
fabro_run_create | Create one or more child runs, starting them by default |
fabro_run_search | Search runs, including direct children by parent_id |
fabro_run_get | Inspect a run without mutating it |
fabro_run_interact | Start, message, interrupt, cancel, archive, unarchive, link, unlink, inspect, or answer questions |
fabro_run_gather | Wait for runs to reach terminal states |
fabro_run_events | Read stored events for a run |
fabro_run_pair | Pair with an active API-mode agent stage |
When a workflow agent calls
fabro_run_create, Fabro always parents the created runs to the current run. If the agent supplies parent_id, it must match the current run ID.Create child runs
The simplestfabro_run_create call names a workflow:
fabro_run_create requests start for each created run. Set "start": false when the parent should create the child now and start it later.
Start and approval
Child run creation and child run execution are separate steps:- Create -
fabro_run_createcreates a durable run record with the current run as parent. - Start request - if
startis true, Fabro requests execution for the child. - Approval if required - parent-generated child runs may enter
pendingwithapproval_required. - Schedule - after approval, the child becomes
runnableand the scheduler starts it when capacity is available. - Execute - the child runs its own workflow and writes its own events, checkpoints, artifacts, and outputs.
Supervise children
A parent run can keep track of the children it creates. List direct children:Web UI
Run detail pages include a Children tab. It lists runs whoseparent_id is the current run, shows a count badge on the tab, supports refresh, filtering, sorting, and archived-run visibility, and uses the same run list layout as the main runs page.
Use this tab when you want to see the work a manager run delegated, jump into a child run, inspect child output, or verify that a child has finished.
CLI and API
You can also create and organize child runs outside a workflow agent. Create a run under an existing parent:| Operation | Purpose |
|---|---|
POST /api/v1/runs with parent_id | Create a run under a parent |
GET /api/v1/runs?parent_id=... | List direct children |
PUT /api/v1/runs/{id}/parent | Link or replace a run’s parent |
DELETE /api/v1/runs/{id}/parent | Remove a run’s parent link |
POST /api/v1/runs/{id}/approve | Approve a pending child run |
POST /api/v1/runs/{id}/deny | Deny a pending child run |
Relationship rules
Parent-child links are orchestration metadata:- A run can have one parent and any number of direct children.
- Creating or linking a child requires the parent run to exist.
- Self-parenting and cycles are rejected.
- Parent links can be changed for active, terminal, and archived runs.
- A child can keep its historical parent reference even if the parent run is later removed.
- Parent-child links are not fork or rewind lineage. Fork and rewind use separate source fields.
Related concepts
| Concept | Runtime boundary | Use it for |
|---|---|---|
| Child runs | Separate durable runs connected by parent_id | Orchestrating independent workflows |
| Sub-agents | Separate LLM sessions inside one agent stage | Delegating small agent subtasks without creating runs |
| Sub-workflows | A child workflow engine inside the same run | Reusing a workflow with runtime isolation but one parent run |
| Imports | Parse-time graph expansion | Reusing graph structure without a runtime boundary |
| Forks and rewinds | New runs from an existing checkpoint | Exploring or replacing execution from prior run state |
| Parallel branches | Concurrent branches inside one workflow run | Splitting work within a single graph |