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
--no-dotenv flag removed. Fabro now always loads ~/.fabro/.env and never loads a local ./.env file. If you were relying on project-local .env files, move those values to ~/.fabro/.env.

More

  • New signoff resource in the verification system — stamps of approval for (control, repository, commit SHA) tuples via POST /verification/signoffs
  • Added fabro pr list/view/merge/close subcommands for managing pull requests created by workflow runs
  • Added fabro init command to scaffold new projects with a generated fabro.toml
  • Added fabro diff command to view code changes from workflow runs, with live diffs for in-progress runs
  • fabro setup renamed to fabro install for clarity
  • Added fabro ssh command for direct SSH access to Daytona sandboxes
  • Added fabro preview command to get preview URLs for ports exposed by Daytona sandboxes
  • fabro doctor now runs live service probes by default; use --dry-run to skip
  • 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