---
title: "SSH sandbox, skill installer, and fabro graph"
date: "2026-03-11"
---

## SSH sandbox provider

Previously, running workflows on a remote machine meant provisioning a cloud VM through Daytona or exe.dev. Now you can point Fabro at any host you can already SSH into — a dev server, a home lab machine, or a NAS box — and run workflows there without any additional setup. The SSH sandbox connects using your existing SSH credentials, optionally clones the current repository, and runs all agent operations directly on the host.

```toml title="run.toml"
[sandbox]
provider = "ssh"

[sandbox.ssh]
destination = "user@myserver"
working_directory = "/home/user/workspace"
```

Custom SSH config files and ProxyJump hosts are supported via the `config_file` field.

## fabro skill install

Fabro now ships with a built-in `fabro-create-workflow` skill for AI assistants (Claude Code, Codex) that knows Fabro's DOT syntax, workflow attributes, node types, and run configuration. Run `fabro skill install` to extract it to your filesystem:

```bash
# Install for the current project
fabro skill install --for project

# Install for all projects (user-level)
fabro skill install --for user
```

After installation, AI assistants in your editor can use the skill when generating or editing Fabro workflows.

## Visualize workflows with fabro graph

`fabro graph` renders your workflow DOT graphs as SVG, so you can see the full structure of your workflow at a glance.

```bash
fabro graph                # SVG to stdout
fabro graph -o flow.svg    # SVG to file
```

## More

<Accordion title="CLI">
- `fabro run` and `fabro validate` now print the resolved workflow path before execution
- `fabro doctor` now groups checks into **Required**, **Optional**, and **Server** sections and shows a spinner while checks run
- Added warning during `fabro init` when no git remote is configured
- Added `--shortstat` flag to `fabro diff` for compact one-line summary output
- `fabro diff` now includes uncommitted changes for in-progress runs
- Retro step now shows tool call progress while the retro agent works
</Accordion>

<Accordion title="API">
- Added `devcontainer` field to `SandboxConfiguration` OpenAPI schema
</Accordion>

<Accordion title="Improvements">
- Context compaction now produces higher-quality summaries: the summarization prompt is framed as a handoff document, and recent user messages are preserved through compaction so the agent retains the user's actual words
- Retro agent limits increased to 20 tool rounds and a 3-minute timeout for complex runs
- Shadow branch now stores the full execution trace per node — prompts, responses, status files, diffs, and retro data — making it a self-contained, git-native run record
- Parallel fan-out branches render like subagent info lines in the progress UI
- Tool call file paths now display relative to the sandbox working directory
- Remote sandbox runs skip unnecessary local worktree creation
- `progress.jsonl` events now preserve consistent field order (`ts`, `run_id`, `event`)
- Added `last_file_touched` as a third fallback for status extraction
</Accordion>
