Skip to main content

One-line installer and guided setup wizard

Getting Fabro installed and configured previously required multiple manual steps — downloading binaries, setting API keys, and configuring GitHub integration individually. Now, a single command installs Fabro and walks you through everything:
curl -fsSL https://raw.githubusercontent.com/fabro-sh/fabro/main/install.sh | bash
fabro install
The installer detects your platform, installs to ~/.fabro/bin, and auto-configures your shell PATH. The fabro install wizard then guides you through LLM provider setup with immediate API key validation, OpenAI OAuth for Codex compatibility, and GitHub App creation via manifest flow — all with styled terminal output showing progress at each step.

MCP servers in workflows

Agents running inside sandboxes can now access MCP tools during workflow runs. A new sandbox transport type starts an MCP server inside the Daytona sandbox, waits for it to listen, and connects automatically — no host-side setup required. This means agents can use tools like Playwright for browser automation, or any other MCP server, directly from within their sandbox environment.
workflow.toml
[mcp_servers.playwright]
type = "sandbox"
command = ["npx", "@playwright/mcp@latest", "--port", "3100", "--headless"]
port = 3100

Devcontainer support in sandboxes

Workflows can now use your project’s devcontainer.json to configure sandbox environments. When devcontainer = true is set in the sandbox config, Fabro resolves the devcontainer from the repo, uses its Dockerfile for the Daytona snapshot, runs lifecycle hooks (onCreateCommand, postCreateCommand, postStartCommand), and merges devcontainer environment variables into the sandbox. Unsupported COPY/ADD instructions in base Dockerfiles are detected and reported.
workflow.toml
[sandbox]
devcontainer = true
Historical note. This release temporarily standardized on ~/.fabro/.env, but later releases removed automatic dotenv loading in favor of server-owned secrets plus explicit process environment variables.

Manage PRs with fabro pr

fabro pr list, fabro pr view, fabro pr merge, and fabro pr close let you manage pull requests created by workflow runs without leaving the CLI. Pair with fabro pr create (introduced Mar 9) for the full lifecycle.
fabro pr list               # list PRs from workflow runs
fabro pr view <run-id>      # view PR details
fabro pr merge <run-id>     # merge a workflow PR

Scaffold projects with fabro init

fabro init generates a fabro.toml with sensible defaults for your project — workflow aliases, pull request config, and sandbox settings — so you can go from zero to fabro run in seconds.
fabro init

View run diffs with fabro diff

fabro diff shows the code changes from any workflow run. It works on both completed and in-progress runs — for active runs, you get a live diff of the current state.
fabro diff <run-id>

Preview sandbox URLs with fabro preview

fabro preview returns preview URLs for ports exposed by Daytona sandboxes, so you can open a running web app or service directly from the CLI.
fabro preview <run-id>

More

  • New signoff resource in the verification system — stamps of approval for (control, repository, commit SHA) tuples via POST /verification/signoffs
  • fabro setup renamed to fabro install for clarity
  • Added fabro ssh command for direct SSH access to Daytona sandboxes
  • fabro doctor now runs live service probes by default
  • fabro doctor now validates GitHub App configuration and private key
  • fabro doctor now hides unconfigured LLM providers for a cleaner output
  • fabro doctor sections reordered: Config, LLM, GitHub App, Cloud sandbox, Brave Search
  • fabro run --preflight now shows a Repository section, merged LLM check, and truncated output
  • Added [pull_request] support to project config (fabro.toml) for project-level PR defaults
  • Per-run data moved from ~/.fabro/logs/ to ~/.fabro/runs/; daily CLI logs stay in ~/.fabro/logs/
  • Per-run tracing logs now written to cli.log inside each run directory
  • Asset paths now display full ~/... paths after workflow run output
  • Hidden fabro ps, llm, exec, and parse from CLI help output
  • PR body now includes Fabro Details section even when retro is skipped
  • Bumped version to 0.2.0
  • Fixed Daytona sandbox clone failing when the worktree branch hadn’t been pushed to the remote
  • Fixed “Git clean: false” showing incorrectly for remote sandboxes by checking both clean and pushed status
  • Fixed LLM provider resolution to check the model catalog before falling back to the default provider
  • Fixed install.sh prompt not showing when piped via stdin
  • Fixed race condition in git checkpoint push operations