fabro run invocation creates a timestamped directory under ~/.fabro/storage/scratch/:
YYYYMMDD-{run_id}, where run_id is the ULID assigned to the run. You can override the base storage directory with the global --storage-dir flag (the scratch directory will be <storage-dir>/scratch/).
Root-level files
Local-only directories
These paths are local runtime state and caches, not the canonical run state.worktree/— When running in worktree mode, Fabro creates a Git worktree here as the working directory for agents and commands.runtime/— Local runtime files. Today this includesruntime/server.logfor the raw per-run worker tracing log and materialized blob payloads underruntime/blobs/.nodes/{manager_node}_{visit}/child/— Nested scratch directories for manager-loop child workflows.
fabro events, fabro inspect, the API, or fabro dump for those surfaces. Use fabro logs for the raw per-run worker tracing log when it is available.
Reconstructed and export-only layouts
Metadata branch snapshots andfabro dump exports now use the same core layout:
run.jsonfor the current projection snapshot, including the current checkpointgraph.fabrofor workflow sourcestages/{rank:03}-{node_id}@{visit}/...for execution-order-prefixed per-stage prompt, response, status, diff, and command output files
fabro dump adds export-only history surfaces on top of that shared layout:
events.jsonlfor the durable event streamcheckpoints/*.jsonfor checkpoint history snapshotsartifacts/{node_id}@{visit}/...for exported artifact payloads
Browsing runs
Usefabro ps to scan the scratch directory and display a table of all runs with their status, workflow name, and timestamps. Pass --json for machine-readable output.