--- title: "CLI Reference" description: "Fabro command-line interface reference" --- ## Global options These flags apply to all subcommands: | Flag | Description | |---|---| | `--json` | Output machine-readable JSON when the command supports it | | `--debug` | Enable DEBUG-level logging (default is INFO) | | `--no-upgrade-check` | Skip the automatic background upgrade check | | `--quiet` | Suppress non-essential output | | `--verbose` | Enable verbose output | | `-h, --help` | Print help | | `-V, --version` | Print version | Connection-target flags like `--storage-dir` and `--server` are command-specific, not global. Fabro no longer auto-loads `~/.fabro/.env`; persist server-owned credentials with `fabro provider login` / `fabro secret set`, or provide environment variables in the invoking shell. ## Configuration CLI defaults can be set in `~/.fabro/settings.toml` so you don't have to pass common flags every time: ```toml title="settings.toml" _version = 1 [cli.exec.model] provider = "anthropic" name = "claude-opus-4-6" [cli.exec.agent] permissions = "read-write" [cli.output] format = "text" [run.model] name = "claude-sonnet-4-5" [cli.target] type = "http" url = "https://fabro.example.com/api/v1" ``` `[cli.exec]` config applies to `fabro exec`. `[run.model]` sets the default workflow model/provider for commands like `fabro run` and `fabro preflight`. `[cli.target]` stores connection info for commands that can target a remote Fabro server. `fabro model` uses `[cli.target]` by default when no explicit `--storage-dir` is passed. `fabro exec` remains a local session unless you pass `--server`, even if `[cli.target]` is configured. Explicit `http(s)://...` targets are always treated as remote servers. They do not inherit identity from a local daemon, a local storage dir, or `~/.fabro/dev-token`. For remote URLs, use `fabro auth login --server ...` or a stored CLI auth session. CLI flags always override `settings.toml` values, which override hardcoded defaults. {/* generated:cli */} ## `fabro` ```bash fabro [OPTIONS] [COMMAND] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro approve` | Approve pending workflow runs | | `fabro archive` | Mark terminal runs as archived (reviewed, no further action needed). Archived runs are hidden from default listings | | `fabro artifact` | Inspect and copy run artifacts (screenshots, reports, traces) | | `fabro ask` | Ask Fabro a read-only question about a run | | `fabro attach` | Attach to a running or finished workflow run | | `fabro auth` | Manage CLI authentication state | | `fabro completion` | Generate shell completions | | `fabro create` | Create a workflow run (allocate run dir, persist spec) | | `fabro deny` | Deny pending workflow runs | | `fabro discord` | Open the Discord community in the browser | | `fabro docs` | Open the docs website in the browser | | `fabro doctor` | Check environment and integration health | | `fabro dump` | Export a run's durable state to a directory | | `fabro events` | View the event log of a workflow run | | `fabro fork` | Fork a workflow run from an earlier checkpoint into a new run | | `fabro graph` | Render a workflow graph as SVG | | `fabro inspect` | Show detailed information about a workflow run | | `fabro install` | Set up the Fabro environment (LLMs, certs, GitHub) | | `fabro logs` | View the raw worker tracing log of a workflow run | | `fabro mcp` | Model Context Protocol server | | `fabro model` | List and test LLM models | | `fabro parent` | Manage run parent links | | `fabro pr` | Pull request operations | | `fabro preflight` | Validate run configuration without executing | | `fabro provider` | Provider operations | | `fabro repo` | Repository commands | | `fabro resume` | Resume an interrupted workflow run | | `fabro rewind` | Rewind a workflow run to an earlier checkpoint | | `fabro rm` | Remove one or more workflow runs | | `fabro run` | Launch a workflow run | | `fabro sandbox` | Sandbox operations (cp, ssh, preview) | | `fabro secret` | Manage server-owned secrets | | `fabro server` | Server operations | | `fabro settings` | Inspect effective settings | | `fabro start` | Start a created workflow run on the server | | `fabro steer` | Steer a running agent mid-execution | | `fabro system` | System maintenance commands | | `fabro unarchive` | Restore archived runs to their prior terminal status | | `fabro uninstall` | Uninstall Fabro from this machine | | `fabro upgrade` | Upgrade fabro to the latest version | | `fabro validate` | Validate a workflow | | `fabro variable` | Manage server-owned variables | | `fabro version` | Show client and server version information | | `fabro wait` | Block until a workflow run completes | | `fabro workflow` | Workflow operations | ### `fabro approve` Approve pending workflow runs ```bash fabro approve [OPTIONS] ... ``` #### Arguments | Name | Description | | --- | --- | | `RUNS` | Run IDs or workflow names to approve | #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro archive` Mark terminal runs as archived (reviewed, no further action needed). Archived runs are hidden from default listings ```bash fabro archive [OPTIONS] ... ``` #### Arguments | Name | Description | | --- | --- | | `RUNS` | Run IDs or workflow names to archive | #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro artifact` Inspect and copy run artifacts (screenshots, reports, traces) ```bash fabro artifact [OPTIONS] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro artifact cp` | Copy artifacts from a workflow run | | `fabro artifact list` | List artifacts for a workflow run | #### `fabro artifact cp` Copy artifacts from a workflow run ```bash fabro artifact cp [OPTIONS] [DEST] ``` #### Arguments | Name | Description | | --- | --- | | `SOURCE` | Source: RUN_ID (all artifacts) or RUN_ID:path (specific artifact) | | `DEST` | Destination directory (defaults to current directory)
Default: `.` | #### Options | Option | Description | | --- | --- | | `--node ` | Filter to artifacts from a specific node | | `--retry ` | Filter to artifacts from a specific retry attempt | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--stage ` | Filter to artifacts from a specific stage visit (node@visit) | | `--tree` | Preserve node[/visit_{N}]/retry_{N}/ directory structure | #### `fabro artifact list` List artifacts for a workflow run ```bash fabro artifact list [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN_ID` | Run ID (or prefix) | #### Options | Option | Description | | --- | --- | | `--node ` | Filter to artifacts from a specific node | | `--retry ` | Filter to artifacts from a specific retry attempt | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--stage ` | Filter to artifacts from a specific stage visit (node@visit) | ### `fabro ask` Ask Fabro a read-only question about a run ```bash fabro ask [OPTIONS] --prompt ``` #### Arguments | Name | Description | | --- | --- | | `RUN` | Run ID prefix or workflow name | #### Options | Option | Description | | --- | --- | | `--model ` | Optional model name | | `-p, --prompt ` | Question to ask | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro attach` Attach to a running or finished workflow run ```bash fabro attach [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN` | Run ID prefix or workflow name | #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro auth` Manage CLI authentication state ```bash fabro auth [OPTIONS] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro auth login` | Log in to a Fabro server | | `fabro auth logout` | Log out from a Fabro server | | `fabro auth status` | Show offline CLI auth status | #### `fabro auth login` Log in to a Fabro server ```bash fabro auth login [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--dev-token ` | Log in with a dev-token instead of browser OAuth | | `--no-browser` | Print the browser URL instead of opening it automatically | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--timeout ` | Timeout in seconds waiting for the browser flow to complete
Default: `300` | #### `fabro auth logout` Log out from a Fabro server ```bash fabro auth logout [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--all` | Log out from every stored server | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | #### `fabro auth status` Show offline CLI auth status ```bash fabro auth status [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro completion` Generate shell completions ```bash fabro completion [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `SHELL` | Shell to generate completions for
Values: `bash`, `elvish`, `fish`, `powershell`, `zsh` | ### `fabro create` Create a workflow run (allocate run dir, persist spec) ```bash fabro create [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `WORKFLOW` | Path to a .fabro workflow file or .toml task config | #### Options | Option | Description | | --- | --- | | `--auto-approve` | Auto-approve all human gates | | `-d, --detach` | Run the workflow in the background and print the run ID | | `--dry-run` | Execute with simulated LLM backend | | `--environment ` | Named environment for agent tools | | `--goal ` | Override the workflow goal (available as {{ goal }} in prompts) | | `--goal-file ` | Read the workflow goal from a file | | `--label ` | Attach a label to this run (repeatable, format: KEY=VALUE) | | `--model ` | Override default LLM model | | `--parent ` | Link this run to an existing orchestration parent run | | `--preserve-sandbox` | Keep the sandbox alive after the run finishes (for debugging) | | `--provider ` | Override default LLM provider | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `-I, --input ` | Override a workflow input value (repeatable, format: KEY=VALUE) | | `-v, --verbose` | Enable verbose output | ### `fabro deny` Deny pending workflow runs ```bash fabro deny [OPTIONS] ... ``` #### Arguments | Name | Description | | --- | --- | | `RUNS` | Run IDs or workflow names to deny | #### Options | Option | Description | | --- | --- | | `--reason ` | Reason for denying execution | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro discord` Open the Discord community in the browser ```bash fabro discord [OPTIONS] ``` ### `fabro docs` Open the docs website in the browser ```bash fabro docs [OPTIONS] ``` ### `fabro doctor` Check environment and integration health ```bash fabro doctor [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `-v, --verbose` | Show detailed information for each check | ### `fabro dump` Export a run's durable state to a directory ```bash fabro dump [OPTIONS] --output ``` #### Arguments | Name | Description | | --- | --- | | `RUN` | Run ID prefix or workflow name | #### Options | Option | Description | | --- | --- | | `-o, --output ` | Output directory (must not exist or be empty) | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro events` View the event log of a workflow run ```bash fabro events [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN` | Run ID prefix or workflow name (most recent run) | #### Options | Option | Description | | --- | --- | | `-f, --follow` | Follow event output | | `-p, --pretty` | Formatted colored output with rendered assistant text | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--since ` | Events since timestamp or relative (e.g. "42m", "2h", "2026-01-02T13:00:00Z") | | `-n, --tail ` | Lines from end (default: all) | ### `fabro fork` Fork a workflow run from an earlier checkpoint into a new run ```bash fabro fork [OPTIONS] [TARGET] ``` #### Arguments | Name | Description | | --- | --- | | `RUN_ID` | Run ID (or unambiguous prefix) | | `TARGET` | Target checkpoint: node name, node@visit, or @ordinal (omit to fork from latest) | #### Options | Option | Description | | --- | --- | | `--list` | Show the checkpoint timeline instead of forking | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro graph` Render a workflow graph as SVG ```bash fabro graph [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `WORKFLOW` | Path to the .fabro workflow file, .toml task config, or project workflow name | #### Options | Option | Description | | --- | --- | | `--allow-invalid` | Render even when workflow validation reports errors | | `-d, --direction ` | Graph layout direction (overrides the DOT file's rankdir)
Values: `lr`, `tb` | | `--format ` | Output format
Values: `svg`
Default: `svg` | | `-o, --output ` | Output file path (defaults to stdout) | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro inspect` Show detailed information about a workflow run ```bash fabro inspect [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN` | Run ID prefix or workflow name (most recent run) | #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro install` Set up the Fabro environment (LLMs, certs, GitHub) ```bash fabro install [OPTIONS] [COMMAND] ``` #### Options | Option | Description | | --- | --- | | `--storage-dir ` | Local storage directory (default: ~/.fabro/storage) | | `--web-url ` | Base URL for the web UI (used for OAuth callback URLs and generated settings)
Default: `http://127.0.0.1:32276` | #### Subcommands | Command | Description | | --- | --- | | `fabro install github` | Configure GitHub integration (token or GitHub App) | #### `fabro install github` Configure GitHub integration (token or GitHub App) ```bash fabro install github [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--owner ` | GitHub App owner: `personal` or `org:` (app only, requires --non-interactive) | | `--strategy ` | GitHub authentication strategy (requires --non-interactive)
Values: `token`, `app` | ### `fabro logs` View the raw worker tracing log of a workflow run ```bash fabro logs [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN` | Run ID prefix or workflow name (most recent run) | #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `-n, --tail ` | Lines from end (default: all) | ### `fabro mcp` Model Context Protocol server ```bash fabro mcp [OPTIONS] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro mcp config` | Print MCP client configuration JSON | | `fabro mcp init` | Configure an MCP client to launch Fabro | | `fabro mcp start` | Start the Fabro MCP server over stdio | #### `fabro mcp config` Print MCP client configuration JSON ```bash fabro mcp config [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--name ` | Name of the mcpServers entry; use distinct names to register multiple Fabro servers
Default: `fabro` | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--storage-dir ` | Local storage directory (default: ~/.fabro/storage) | #### `fabro mcp init` Configure an MCP client to launch Fabro ```bash fabro mcp init [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `AGENT` | Values: `claude`, `cursor`, `windsurf` | #### Options | Option | Description | | --- | --- | | `--name ` | Name of the mcpServers entry; use distinct names to register multiple Fabro servers
Default: `fabro` | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--storage-dir ` | Local storage directory (default: ~/.fabro/storage) | #### `fabro mcp start` Start the Fabro MCP server over stdio ```bash fabro mcp start [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--storage-dir ` | Local storage directory (default: ~/.fabro/storage) | ### `fabro model` List and test LLM models ```bash fabro model [OPTIONS] [COMMAND] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro model list` | List available models | | `fabro model test` | Test model availability by sending a simple prompt | #### `fabro model list` List available models ```bash fabro model list [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `-p, --provider ` | Filter by provider | | `-q, --query ` | Search for models matching this string | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | #### `fabro model test` Test model availability by sending a simple prompt ```bash fabro model test [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `-j, --jobs ` | Number of model tests to run concurrently in bulk mode
Default: `4` | | `-m, --model ` | Test a specific model | | `-p, --provider ` | Filter by provider | | `--reasoning-effort ` | Request a reasoning-effort level
Values: `low`, `medium`, `high`, `xhigh`, `max` | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--tools` | Run a multi-turn tool-use test | ### `fabro parent` Manage run parent links ```bash fabro parent [OPTIONS] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro parent link` | Link or replace a run's orchestration parent | | `fabro parent unlink` | Unlink a run from its orchestration parent | #### `fabro parent link` Link or replace a run's orchestration parent ```bash fabro parent link [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `CHILD_RUN` | Child run selector | | `PARENT_RUN` | Parent run selector | #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | #### `fabro parent unlink` Unlink a run from its orchestration parent ```bash fabro parent unlink [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `CHILD_RUN` | Child run selector | #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro pr` Pull request operations ```bash fabro pr [OPTIONS] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro pr close` | Close a pull request | | `fabro pr create` | Create a pull request from a completed run | | `fabro pr link` | Link or replace the GitHub pull request associated with a run | | `fabro pr merge` | Merge a pull request | | `fabro pr unlink` | Unlink the pull request associated with a run | | `fabro pr view` | View pull request details | #### `fabro pr close` Close a pull request ```bash fabro pr close [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN_ID` | Run ID or prefix | #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | #### `fabro pr create` Create a pull request from a completed run ```bash fabro pr create [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN_ID` | Run ID or prefix | #### Options | Option | Description | | --- | --- | | `-f, --force` | Create PR even if the run status is not succeeded/partially_succeeded | | `--model ` | LLM model for generating PR description | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | #### `fabro pr link` Link or replace the GitHub pull request associated with a run ```bash fabro pr link [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN_ID` | Run ID or prefix | | `URL` | GitHub pull request URL to associate with the run | #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | #### `fabro pr merge` Merge a pull request ```bash fabro pr merge [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN_ID` | Run ID or prefix | #### Options | Option | Description | | --- | --- | | `--method ` | Merge method: merge, squash, or rebase
Values: `merge`, `squash`, `rebase`
Default: `squash` | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | #### `fabro pr unlink` Unlink the pull request associated with a run ```bash fabro pr unlink [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN_ID` | Run ID or prefix | #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | #### `fabro pr view` View pull request details ```bash fabro pr view [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN_ID` | Run ID or prefix | #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro preflight` Validate run configuration without executing ```bash fabro preflight [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `WORKFLOW` | Path to a .fabro workflow file or .toml task config | #### Options | Option | Description | | --- | --- | | `--environment ` | Named environment for agent tools | | `--goal ` | Override the workflow goal (available as {{ goal }} in prompts) | | `--goal-file ` | Read the workflow goal from a file | | `--model ` | Override default LLM model | | `--provider ` | Override default LLM provider | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `-I, --input ` | Override a workflow input value (repeatable, format: KEY=VALUE) | | `-v, --verbose` | Enable verbose output | ### `fabro provider` Provider operations ```bash fabro provider [OPTIONS] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro provider login` | Log in to an LLM provider | #### `fabro provider login` Log in to an LLM provider ```bash fabro provider login [OPTIONS] --provider ``` #### Options | Option | Description | | --- | --- | | `--api-key-stdin` | Read an API key from stdin instead of prompting | | `--provider ` | LLM provider to authenticate with | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro repo` Repository commands ```bash fabro repo [OPTIONS] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro repo deinit` | Remove .fabro/ project directory | | `fabro repo init` | Initialize a new project | #### `fabro repo deinit` Remove .fabro/ project directory ```bash fabro repo deinit [OPTIONS] ``` #### `fabro repo init` Initialize a new project ```bash fabro repo init [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro resume` Resume an interrupted workflow run ```bash fabro resume [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN` | Run ID or unambiguous prefix | #### Options | Option | Description | | --- | --- | | `-d, --detach` | Run in the background and print the run ID | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro rewind` Rewind a workflow run to an earlier checkpoint ```bash fabro rewind [OPTIONS] [TARGET] ``` #### Arguments | Name | Description | | --- | --- | | `RUN_ID` | Run ID (or unambiguous prefix) | | `TARGET` | Target checkpoint: node name, node@visit, or @ordinal (omit with --list) | #### Options | Option | Description | | --- | --- | | `--list` | Show the checkpoint timeline instead of rewinding | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro rm` Remove one or more workflow runs ```bash fabro rm [OPTIONS] ... ``` #### Arguments | Name | Description | | --- | --- | | `RUNS` | Run IDs or workflow names to remove | #### Options | Option | Description | | --- | --- | | `-f, --force` | Force removal of active runs | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro run` Launch a workflow run ```bash fabro run [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `WORKFLOW` | Path to a .fabro workflow file or .toml task config | #### Options | Option | Description | | --- | --- | | `--auto-approve` | Auto-approve all human gates | | `-d, --detach` | Run the workflow in the background and print the run ID | | `--dry-run` | Execute with simulated LLM backend | | `--environment ` | Named environment for agent tools | | `--goal ` | Override the workflow goal (available as {{ goal }} in prompts) | | `--goal-file ` | Read the workflow goal from a file | | `--label ` | Attach a label to this run (repeatable, format: KEY=VALUE) | | `--model ` | Override default LLM model | | `--parent ` | Link this run to an existing orchestration parent run | | `--preserve-sandbox` | Keep the sandbox alive after the run finishes (for debugging) | | `--provider ` | Override default LLM provider | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `-I, --input ` | Override a workflow input value (repeatable, format: KEY=VALUE) | | `-v, --verbose` | Enable verbose output | ### `fabro sandbox` Sandbox operations (cp, ssh, preview) ```bash fabro sandbox [OPTIONS] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro sandbox cp` | Copy files to/from a run's sandbox | | `fabro sandbox preview` | Get a preview URL for a port on a run's sandbox | | `fabro sandbox ssh` | SSH into a run's sandbox | #### `fabro sandbox cp` Copy files to/from a run's sandbox ```bash fabro sandbox cp [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `SRC` | Source: `:` or local path | | `DST` | Destination: `:` or local path | #### Options | Option | Description | | --- | --- | | `-r, --recursive` | Recurse into directories | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | #### `fabro sandbox preview` Get a preview URL for a port on a run's sandbox ```bash fabro sandbox preview [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN` | Run ID or prefix | | `PORT` | Port number | #### Options | Option | Description | | --- | --- | | `--open` | Open URL in browser (implies --signed) | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--signed` | Generate a signed URL (embeds auth token, no headers needed) | | `--ttl ` | Signed URL expiry in seconds (default 3600, requires --signed)
Default: `3600` | #### `fabro sandbox ssh` SSH into a run's sandbox ```bash fabro sandbox ssh [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN` | Run ID or prefix | #### Options | Option | Description | | --- | --- | | `--print` | Print the SSH command instead of connecting | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--ttl ` | SSH access expiry in minutes (default 60)
Default: `60` | ### `fabro secret` Manage server-owned secrets ```bash fabro secret [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | #### Subcommands | Command | Description | | --- | --- | | `fabro secret list` | List secret names | | `fabro secret rm` | Remove a secret | | `fabro secret set` | Set a secret value | #### `fabro secret list` List secret names ```bash fabro secret list [OPTIONS] ``` #### `fabro secret rm` Remove a secret ```bash fabro secret rm [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `KEY` | Name of the secret to remove | #### `fabro secret set` Set a secret value ```bash fabro secret set [OPTIONS] [VALUE] ``` #### Arguments | Name | Description | | --- | --- | | `KEY` | Name of the secret | | `VALUE` | Value to store (omit to enter interactively) | #### Options | Option | Description | | --- | --- | | `--description ` | Optional human-readable description | | `--type ` | Secret storage type
Values: `token`, `file`
Default: `token` | | `--value-stdin` | Read the secret value from stdin | ### `fabro server` Server operations ```bash fabro server [OPTIONS] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro server restart` | Stop and restart the HTTP API server | | `fabro server start` | Start the HTTP API server | | `fabro server status` | Show server status | | `fabro server stop` | Stop the HTTP API server | #### `fabro server restart` Stop and restart the HTTP API server ```bash fabro server restart [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--bind ` | Address to bind to (IP or IP:port for TCP, or path containing / for Unix socket) | | `--config ` | Path to server config file (default: ~/.fabro/settings.toml) | | `--environment ` | Named environment for agent tools | | `--foreground` | Run in the foreground instead of daemonizing | | `--max-concurrent-runs ` | Maximum number of concurrent run executions | | `--model ` | Override default LLM model | | `--no-web` | Disable the embedded web UI, browser auth routes, and web-only helper endpoints | | `--provider ` | Override default LLM provider | | `--storage-dir ` | Local storage directory (default: ~/.fabro/storage) | | `--timeout ` | Seconds to wait for graceful shutdown before SIGKILL
Default: `10` | | `--watch-web` | Run `bun run dev` in apps/fabro-web to watch/recompile web assets (debug only) | | `--web` | Enable the embedded web UI and browser auth routes | #### `fabro server start` Start the HTTP API server ```bash fabro server start [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--bind ` | Address to bind to (IP or IP:port for TCP, or path containing / for Unix socket) | | `--config ` | Path to server config file (default: ~/.fabro/settings.toml) | | `--environment ` | Named environment for agent tools | | `--foreground` | Run in the foreground instead of daemonizing | | `--max-concurrent-runs ` | Maximum number of concurrent run executions | | `--model ` | Override default LLM model | | `--no-web` | Disable the embedded web UI, browser auth routes, and web-only helper endpoints | | `--provider ` | Override default LLM provider | | `--storage-dir ` | Local storage directory (default: ~/.fabro/storage) | | `--watch-web` | Run `bun run dev` in apps/fabro-web to watch/recompile web assets (debug only) | | `--web` | Enable the embedded web UI and browser auth routes | #### `fabro server status` Show server status ```bash fabro server status [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--json` | Output as JSON | | `--storage-dir ` | Local storage directory (default: ~/.fabro/storage) | #### `fabro server stop` Stop the HTTP API server ```bash fabro server stop [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--storage-dir ` | Local storage directory (default: ~/.fabro/storage) | | `--timeout ` | Seconds to wait for graceful shutdown before SIGKILL
Default: `10` | ### `fabro settings` Inspect effective settings ```bash fabro settings [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro start` Start a created workflow run on the server ```bash fabro start [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN` | Run ID prefix or workflow name | #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro steer` Steer a running agent mid-execution ```bash fabro steer [OPTIONS] [TEXT] ``` #### Arguments | Name | Description | | --- | --- | | `RUN` | Run ID prefix to steer | | `TEXT` | Steer message text (omit when --text-stdin is used) | #### Options | Option | Description | | --- | --- | | `--interrupt` | Cancel the in-flight LLM stream / tool calls and deliver the message as the next user turn (default: append to the steering queue) | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--text-stdin` | Read steer text from stdin instead of a positional arg | ### `fabro system` System maintenance commands ```bash fabro system [OPTIONS] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro system df` | Show disk usage | | `fabro system events` | Stream run events from the server | | `fabro system info` | Show server runtime information | | `fabro system prune` | Delete old workflow runs | | `fabro system repair` | Inspect and repair durable server data | #### `fabro system df` Show disk usage ```bash fabro system df [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--storage-dir ` | Local storage directory (default: ~/.fabro/storage) | | `-v, --verbose` | Show per-run breakdown | #### `fabro system events` Stream run events from the server ```bash fabro system events [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--run-id ` | Filter by run ID (repeatable) | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--storage-dir ` | Local storage directory (default: ~/.fabro/storage) | #### `fabro system info` Show server runtime information ```bash fabro system info [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--storage-dir ` | Local storage directory (default: ~/.fabro/storage) | #### `fabro system prune` Delete old workflow runs ```bash fabro system prune [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--before ` | Only include runs started before this date (YYYY-MM-DD prefix match) | | `--label ` | Filter by label (KEY=VALUE, repeatable, AND semantics) | | `--older-than ` | Only prune runs older than this duration (e.g. 24h, 7d). Default: 24h when no explicit filters are set | | `--orphans` | Include orphan directories (no matching durable run) | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--storage-dir ` | Local storage directory (default: ~/.fabro/storage) | | `--workflow ` | Filter by workflow name (substring match) | | `--yes` | Actually delete (default is dry-run) | #### `fabro system repair` Inspect and repair durable server data ```bash fabro system repair [OPTIONS] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro system repair runs` | List runs that cannot be loaded from durable storage | ##### `fabro system repair runs` List runs that cannot be loaded from durable storage ```bash fabro system repair runs [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--delete` | Preview deleting unreadable runs | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--storage-dir ` | Local storage directory (default: ~/.fabro/storage) | | `--yes` | Actually delete unreadable runs (default is dry-run) | ### `fabro unarchive` Restore archived runs to their prior terminal status ```bash fabro unarchive [OPTIONS] ... ``` #### Arguments | Name | Description | | --- | --- | | `RUNS` | Run IDs or workflow names to unarchive | #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro uninstall` Uninstall Fabro from this machine ```bash fabro uninstall [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--yes` | Skip confirmation prompt | ### `fabro upgrade` Upgrade fabro to the latest version ```bash fabro upgrade [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--dry-run` | Preview what would happen without making changes | | `--force` | Upgrade even if already on the target version | | `--prerelease` | Include prereleases (alpha, beta, rc) when selecting the latest version | ### `fabro validate` Validate a workflow ```bash fabro validate [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `WORKFLOW` | Path to the .fabro workflow file | ### `fabro variable` Manage server-owned variables ```bash fabro variable [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | #### Subcommands | Command | Description | | --- | --- | | `fabro variable get` | Get a variable value | | `fabro variable list` | List variables | | `fabro variable rm` | Remove a variable | | `fabro variable set` | Set a variable value | #### `fabro variable get` Get a variable value ```bash fabro variable get [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `NAME` | Name of the variable to get | #### `fabro variable list` List variables ```bash fabro variable list [OPTIONS] ``` #### `fabro variable rm` Remove a variable ```bash fabro variable rm [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `NAME` | Name of the variable to remove | #### `fabro variable set` Set a variable value ```bash fabro variable set [OPTIONS] [VALUE] ``` #### Arguments | Name | Description | | --- | --- | | `NAME` | Name of the variable | | `VALUE` | Value to store | #### Options | Option | Description | | --- | --- | | `--description ` | Optional human-readable description | | `--value-stdin` | Read the variable value from stdin | ### `fabro version` Show client and server version information ```bash fabro version [OPTIONS] ``` #### Options | Option | Description | | --- | --- | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | ### `fabro wait` Block until a workflow run completes ```bash fabro wait [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `RUN` | Run ID prefix or workflow name (most recent run) | #### Options | Option | Description | | --- | --- | | `--interval ` | Poll interval in milliseconds
Default: `1000` | | `--server ` | Fabro server target: http(s) URL or absolute Unix socket path | | `--timeout ` | Maximum time to wait in seconds | ### `fabro workflow` Workflow operations ```bash fabro workflow [OPTIONS] ``` #### Subcommands | Command | Description | | --- | --- | | `fabro workflow create` | Create a new workflow | | `fabro workflow list` | List available workflows | #### `fabro workflow create` Create a new workflow ```bash fabro workflow create [OPTIONS] ``` #### Arguments | Name | Description | | --- | --- | | `NAME` | Name of the workflow | #### Options | Option | Description | | --- | --- | | `-g, --goal ` | Goal description for the workflow | #### `fabro workflow list` List available workflows ```bash fabro workflow list [OPTIONS] ``` {/* /generated:cli */}