mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-08-28 05:27:41 +00:00
Add 2026-03-10 changelog and update docs for new CLI commands
Changelog: MCP servers in workflows, arc init, arc diff. Docs: arc init, arc diff, arc ssh, arc preview, arc doctor --dry-run, cli.log per-run tracing, pull_request precedence, SSH/preview pages. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
6db8fd317b
commit
d80335e0fc
9 changed files with 163 additions and 11 deletions
|
|
@ -1 +1 @@
|
|||
4a0c61b5fbc35f12bae364f0c669045b8a1d604d
|
||||
485f2a5718b6d983520aa5cccd39128d99bad7ae
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
2c8ad378e1392f3223860c4df2bfa8e2da370538
|
||||
485f2a5718b6d983520aa5cccd39128d99bad7ae
|
||||
|
|
|
|||
52
docs/changelog/2026-03-10.mdx
Normal file
52
docs/changelog/2026-03-10.mdx
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
---
|
||||
title: "MCP servers in workflows, arc init, and arc diff"
|
||||
date: "2026-03-10"
|
||||
---
|
||||
|
||||
## 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.
|
||||
|
||||
```toml title="workflow.toml"
|
||||
[mcp_servers.playwright]
|
||||
type = "sandbox"
|
||||
command = ["npx", "@playwright/mcp@latest", "--port", "3100", "--headless"]
|
||||
port = 3100
|
||||
```
|
||||
|
||||
## `arc init` — initialize a new project
|
||||
|
||||
Getting started with Arc previously meant creating `arc.toml` and workflow files by hand. Now, `arc init` scaffolds a project with a generated `arc.toml` that includes comments and a link to the docs.
|
||||
|
||||
```bash
|
||||
arc init
|
||||
```
|
||||
|
||||
## `arc diff` — view workflow run diffs
|
||||
|
||||
You can now inspect the code changes from any workflow run without digging through log files. `arc diff` surfaces the final patch and per-node diffs from completed runs. For in-progress runs, it reconnects to the sandbox to show a live diff.
|
||||
|
||||
```bash
|
||||
arc diff <run-id>
|
||||
```
|
||||
|
||||
## More
|
||||
|
||||
<Accordion title="CLI">
|
||||
- `arc setup` renamed to `arc install` for clarity
|
||||
- Added `arc ssh` command for direct SSH access to Daytona sandboxes
|
||||
- Added `arc preview` command to get preview URLs for ports exposed by Daytona sandboxes
|
||||
- `arc doctor` now runs live service probes by default; use `--dry-run` to skip
|
||||
- `arc doctor` now validates GitHub App configuration and private key
|
||||
- Added `[pull_request]` support to project config (`arc.toml`) for project-level PR defaults
|
||||
- Per-run data moved from `~/.arc/logs/` to `~/.arc/runs/`; daily CLI logs stay in `~/.arc/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 `arc ps`, `llm`, `exec`, and `parse` from CLI help output
|
||||
- PR body now includes Arc Details section even when retro is skipped
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Fixes">
|
||||
- Fixed LLM provider resolution to check the model catalog before falling back to the default provider
|
||||
- Fixed verbose mode breaking terminal rendering after many tool calls
|
||||
</Accordion>
|
||||
|
|
@ -267,6 +267,7 @@
|
|||
"group": "March 2026",
|
||||
"icon": "clock-rotate-left",
|
||||
"pages": [
|
||||
"changelog/2026-03-10",
|
||||
"changelog/2026-03-09",
|
||||
"changelog/2026-03-08",
|
||||
"changelog/2026-03-07",
|
||||
|
|
|
|||
|
|
@ -18,6 +18,18 @@ When you request a preview, Arc generates a time-limited, token-authenticated UR
|
|||
3. Arc returns a signed URL that you open in your browser
|
||||
4. The URL expires after the configured TTL (up to 24 hours), after which a new one must be generated
|
||||
|
||||
## Using preview from the CLI
|
||||
|
||||
Use `arc preview` to generate a preview URL for any run with an active Daytona sandbox:
|
||||
|
||||
```bash
|
||||
arc preview <run-id> 3000 # URL + token + curl example
|
||||
arc preview <run-id> 3000 --signed # self-contained signed URL
|
||||
arc preview <run-id> 3000 --open # open in browser (implies --signed)
|
||||
```
|
||||
|
||||
See [`arc preview`](/reference/cli#arc-preview) for the full flag reference.
|
||||
|
||||
## Using preview from the web UI
|
||||
|
||||
When viewing a run with an active sandbox, the run detail page shows a **Preview** button in the toolbar. Clicking it generates a preview URL for port 3000 with a 1-hour TTL and opens it in a new browser tab.
|
||||
|
|
|
|||
|
|
@ -9,9 +9,24 @@ When a workflow runs in a [Daytona sandbox](/execution/environments#daytona), yo
|
|||
SSH access is only available with the Daytona sandbox provider. Local, Docker, and exe.dev sandboxes do not support SSH access.
|
||||
</Note>
|
||||
|
||||
## Enabling SSH access
|
||||
## Connecting to a run's sandbox
|
||||
|
||||
Pass the `--ssh` flag to `arc run`:
|
||||
Use `arc ssh` to connect to the Daytona sandbox from any completed or in-progress run:
|
||||
|
||||
```bash
|
||||
arc ssh <run-id>
|
||||
```
|
||||
|
||||
Arc creates temporary SSH credentials and connects directly. Use `--print` to print the SSH command instead of connecting, or `--ttl` to set the credential expiry:
|
||||
|
||||
```bash
|
||||
arc ssh <run-id> --print
|
||||
arc ssh <run-id> --ttl 120
|
||||
```
|
||||
|
||||
## Enabling SSH access during `arc run`
|
||||
|
||||
Pass the `--ssh` flag to `arc run` to create SSH credentials at the start of the run:
|
||||
|
||||
```bash
|
||||
arc run workflow.dot --sandbox daytona --ssh
|
||||
|
|
@ -58,10 +73,9 @@ Once connected, you have a full shell inside the sandbox VM:
|
|||
|
||||
## Credential lifetime
|
||||
|
||||
SSH credentials are temporary and expire after **60 minutes**. If your session expires, you'll need to start a new run with `--ssh` to get fresh credentials.
|
||||
SSH credentials are temporary and expire after **60 minutes** by default. With `arc ssh`, you can set a custom TTL with `--ttl <MINUTES>`. If your session expires, run `arc ssh` again or start a new run with `--ssh` to get fresh credentials.
|
||||
|
||||
## Limitations
|
||||
|
||||
- SSH access is **Daytona-only**. Passing `--ssh` with other sandbox providers prints a warning and is ignored.
|
||||
- SSH access is currently available only from the **CLI**. The API server and web UI do not yet expose an SSH endpoint.
|
||||
- Credentials cannot be refreshed — once the 60-minute window expires, a new run is needed.
|
||||
|
|
|
|||
|
|
@ -196,7 +196,7 @@ enabled = true
|
|||
|---|---|---|
|
||||
| `enabled` | Automatically create a PR after successful runs | `false` |
|
||||
|
||||
Precedence: `run.toml` > `cli.toml` > `server.toml` > built-in default (`false`).
|
||||
Precedence: `run.toml` > `arc.toml` (project config) > `cli.toml` > `server.toml` > built-in default (`false`).
|
||||
|
||||
## `[mcp_servers]` section
|
||||
|
||||
|
|
|
|||
|
|
@ -311,24 +311,95 @@ arc parse workflow.dot
|
|||
|
||||
---
|
||||
|
||||
## `arc init`
|
||||
|
||||
Initialize a new Arc project in the current git repository. Creates an `arc.toml` project config and a sample `hello` workflow.
|
||||
|
||||
```bash
|
||||
arc init
|
||||
```
|
||||
|
||||
The command must be run inside a git repository. It creates:
|
||||
- `arc.toml` — project configuration with comments and a link to docs
|
||||
- `arc/workflows/hello/workflow.dot` — a simple greeting workflow
|
||||
- `arc/workflows/hello/workflow.toml` — run config for the hello workflow
|
||||
|
||||
## `arc diff`
|
||||
|
||||
Show the diff from a workflow run. Displays the `final.patch` for completed runs, or connects to the sandbox for a live diff from in-progress runs.
|
||||
|
||||
```bash
|
||||
arc diff <run-id>
|
||||
arc diff <run-id> --node work
|
||||
arc diff <run-id> --stat
|
||||
```
|
||||
|
||||
| Argument / Flag | Description |
|
||||
|---|---|
|
||||
| `<RUN>` | Run ID or prefix (required) |
|
||||
| `--node <NODE>` | Show diff for a specific node instead of the full run |
|
||||
| `--stat` | Show diffstat instead of full patch (live diffs only) |
|
||||
|
||||
Output is colorized when writing to a terminal.
|
||||
|
||||
## `arc ssh`
|
||||
|
||||
SSH into a Daytona sandbox from a completed or in-progress run. Creates temporary SSH credentials and connects directly, or prints the command with `--print`.
|
||||
|
||||
```bash
|
||||
arc ssh <run-id>
|
||||
arc ssh <run-id> --print
|
||||
arc ssh <run-id> --ttl 120
|
||||
```
|
||||
|
||||
| Argument / Flag | Description |
|
||||
|---|---|
|
||||
| `<RUN>` | Run ID or prefix (required) |
|
||||
| `--ttl <MINUTES>` | SSH credential expiry in minutes (default: 60) |
|
||||
| `--print` | Print the SSH command instead of connecting |
|
||||
|
||||
See [SSH Access](/human-tools/ssh-access) for more details on SSH workflows.
|
||||
|
||||
## `arc preview`
|
||||
|
||||
Generate a preview URL for a port exposed by a Daytona sandbox. Useful for accessing web servers, dev tools, or APIs running inside the sandbox.
|
||||
|
||||
```bash
|
||||
arc preview <run-id> <port>
|
||||
arc preview <run-id> 3000 --signed
|
||||
arc preview <run-id> 3000 --open
|
||||
```
|
||||
|
||||
| Argument / Flag | Description |
|
||||
|---|---|
|
||||
| `<RUN>` | Run ID or prefix (required) |
|
||||
| `<PORT>` | Port number to preview (required) |
|
||||
| `--signed` | Generate a signed URL (self-contained, no headers needed) |
|
||||
| `--ttl <SECONDS>` | Signed URL expiry in seconds (default: 3600, requires `--signed`) |
|
||||
| `--open` | Open the URL in a browser (implies `--signed`) |
|
||||
|
||||
Without `--signed`, the command prints the URL, token, and a `curl` example. See [Preview](/human-tools/preview) for more details.
|
||||
|
||||
---
|
||||
|
||||
## `arc doctor`
|
||||
|
||||
Check environment and integration health. Verifies system dependencies, API keys, and optional services.
|
||||
Check environment and integration health. Verifies system dependencies, API keys, and optional services. Probes live services (LLM providers, sandbox, GitHub App) by default.
|
||||
|
||||
```bash
|
||||
arc doctor
|
||||
arc doctor -v
|
||||
arc doctor --live
|
||||
arc doctor --dry-run
|
||||
```
|
||||
|
||||
| Flag | Description |
|
||||
|---|---|
|
||||
| `-v, --verbose` | Show detailed information for each check |
|
||||
| `-l, --live` | Probe live services (LLM providers, sandbox, API server, web frontend, Brave Search) |
|
||||
| `--dry-run` | Skip live service probes (LLM, sandbox, API, web, Brave Search) |
|
||||
|
||||
## `arc install`
|
||||
|
||||
Interactive setup wizard that walks you through configuring API keys and validating your environment. Run this after a fresh install.
|
||||
Interactive setup wizard that walks you through configuring API keys and validating your environment. Runs `arc doctor` with live probes after setup to validate the configuration.
|
||||
|
||||
```bash
|
||||
arc install
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ The naming format is `YYYYMMDD-{run_id}`, where `run_id` is the ULID assigned to
|
|||
| `conclusion.json` | JSON | Run end | Final result — `status`, `duration_ms`, `failure_reason`, `final_git_commit_sha`. Only present when the run completes (not for crashed or interrupted runs). |
|
||||
| `final.patch` | Diff | Run end | Git diff from `base_sha` to final HEAD. Only present in git checkpoint mode. |
|
||||
| `retro.json` | JSON | Run end | Post-run retrospective analysis — `smoothness_rating`, `learnings`, `friction_points`, `stages`. Omitted if `--no-retro` is passed. See [Retros](/execution/retros). |
|
||||
| `cli.log` | Text | Continuous | Per-run tracing log. Contains the same tracing output as the daily log file, scoped to this run. |
|
||||
|
||||
### `nodes/` subdirectory
|
||||
|
||||
|
|
@ -110,6 +111,7 @@ arc ps --filter workflow=my-workflow
|
|||
│ ├── conclusion.json
|
||||
│ ├── final.patch
|
||||
│ ├── retro.json
|
||||
│ ├── cli.log
|
||||
│ ├── nodes/
|
||||
│ │ ├── plan/
|
||||
│ │ │ ├── prompt.md
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue