diff --git a/.claude/skills/changelog/watermark b/.claude/skills/changelog/watermark index 60d0bfbfb..20393229f 100644 --- a/.claude/skills/changelog/watermark +++ b/.claude/skills/changelog/watermark @@ -1 +1 @@ -4a0c61b5fbc35f12bae364f0c669045b8a1d604d +485f2a5718b6d983520aa5cccd39128d99bad7ae diff --git a/.claude/skills/docs/watermark b/.claude/skills/docs/watermark index 96262a918..20393229f 100644 --- a/.claude/skills/docs/watermark +++ b/.claude/skills/docs/watermark @@ -1 +1 @@ -2c8ad378e1392f3223860c4df2bfa8e2da370538 +485f2a5718b6d983520aa5cccd39128d99bad7ae diff --git a/docs/changelog/2026-03-10.mdx b/docs/changelog/2026-03-10.mdx new file mode 100644 index 000000000..ecedc3770 --- /dev/null +++ b/docs/changelog/2026-03-10.mdx @@ -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 +``` + +## More + + +- `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 + + + +- 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 + diff --git a/docs/docs.json b/docs/docs.json index 255c8937f..487dda86a 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -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", diff --git a/docs/human-tools/preview.mdx b/docs/human-tools/preview.mdx index 352a5d1be..3c95c0e1a 100644 --- a/docs/human-tools/preview.mdx +++ b/docs/human-tools/preview.mdx @@ -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 3000 # URL + token + curl example +arc preview 3000 --signed # self-contained signed URL +arc preview 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. diff --git a/docs/human-tools/ssh-access.mdx b/docs/human-tools/ssh-access.mdx index 71e55acbe..4151327d3 100644 --- a/docs/human-tools/ssh-access.mdx +++ b/docs/human-tools/ssh-access.mdx @@ -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. -## 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 +``` + +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 --print +arc ssh --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 `. 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. diff --git a/docs/reference/cli-configuration.mdx b/docs/reference/cli-configuration.mdx index 5daee6f2a..88e0ec49a 100644 --- a/docs/reference/cli-configuration.mdx +++ b/docs/reference/cli-configuration.mdx @@ -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 diff --git a/docs/reference/cli.mdx b/docs/reference/cli.mdx index e9207d1b6..7f0034dce 100644 --- a/docs/reference/cli.mdx +++ b/docs/reference/cli.mdx @@ -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 +arc diff --node work +arc diff --stat +``` + +| Argument / Flag | Description | +|---|---| +| `` | Run ID or prefix (required) | +| `--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 +arc ssh --print +arc ssh --ttl 120 +``` + +| Argument / Flag | Description | +|---|---| +| `` | Run ID or prefix (required) | +| `--ttl ` | 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 +arc preview 3000 --signed +arc preview 3000 --open +``` + +| Argument / Flag | Description | +|---|---| +| `` | Run ID or prefix (required) | +| `` | Port number to preview (required) | +| `--signed` | Generate a signed URL (self-contained, no headers needed) | +| `--ttl ` | 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 diff --git a/docs/reference/logs-directory.mdx b/docs/reference/logs-directory.mdx index a10c6153a..c368bc3d6 100644 --- a/docs/reference/logs-directory.mdx +++ b/docs/reference/logs-directory.mdx @@ -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