Skip to content
Documentation

Studio (preview)

curl-runner studio is a macOS app for your YAML request files: live validation, runs, checks, retries, environments and history. A preview, built from source.

Feature overview →

curl-runner studio is a macOS desktop app for the request files you already have. It opens a folder of YAML as a collection, validates as you type, runs one request or the whole collection, and shows every check, retry and timing.

Preview

The studio shipped as a preview in curl-runner 2.2.0. It isn't distributed yet: there is no signed build, Homebrew formula or download. Build it from source as shown below. Expect rough edges, and changes before a first release.

Build from source

You need macOS and a Rust toolchain from rustup. The repository pins the Rust version, so rustup installs the right one on the first build.

Terminal
git clone https://github.com/alexvcasillas/curl-runner
cd curl-runner
cargo run -p curl-runner-studio

The first build compiles the whole app and takes a while; later runs start straight away.

Collections are folders

A collection is a folder of request files, and its subfolders are the groups in the sidebar. The studio reads and writes plain YAML, so the files stay the ones curl-runner runs in a terminal or in CI.

Run a single request, or the whole collection from Run collection. The run screen counts passed, failed, skipped and retried requests, and Re-run failed runs only the failures again.

A finished collection run of the Payments API: 14 of 15 requests passed, one failed after 2 retries. The charges folder is expanded and shows each request with its status code, duration bar, checks and attempts.
A collection run with one failure after two retries.

Live validation

The editor runs the same rules as curl-runner validate while you type. Problems are underlined and listed in the Problems panel, and many of them come with a quick fix.

The YAML editor with the key backof underlined as a warning. A popover reads: Unknown key backof (did you mean backoff?) and offers the quick fix Rename to "backoff". The Problems panel lists the same warning at line 13.
An unknown key, with the rename it suggests.

Responses and checks

The inspector next to the editor shows the last response: body, headers and timing, and each check from the request's expect block.

The get-charge.yaml request open in the editor next to the inspector: 200 OK in 200 ms, the JSON response body, seven passing checks for status, content-type, body fields and response time, and a timing bar.
A passing request and its seven checks.

When a check fails, the Checks tab shows the expected and the actual value, a diff of the response body against what was expected, and the retry timeline with every attempt.

A failed Capture charge request: the editor marks the two failing expect lines, the Checks tab shows expected "succeeded" against actual "pending" and expected true against actual false, a diff of the response body, and a retry timeline with two 503 attempts followed by a 200.
Two 503s, then a 200 whose body doesn't match.

Environments and secrets

Environments come from the collection's .env files: Default reads .env, and an environment such as Staging reads .env.staging on top of it. Variables named SECRET_*, and any you mark as secret, are masked. The values you enter in the studio go to the macOS Keychain rather than the files, and secrets are never shared or synced.

The Environments screen of the Payments API collection on the Staging tab: BASE_URL, ACCOUNT_ID and API_VERSION come from .env.staging, and SECRET_API_KEY is marked secret with its value masked.
The Staging environment of a collection.

Run history

Runs are kept on your machine for 30 days. Pick one to compare it with the run before it: which requests it fixed, which it broke and which got slower.

Run history of the Payments API: two collection runs, 14 of 15 and 15 of 15 passed. The latest is compared with the previous run: Capture charge is listed as fixed and the other 14 requests are unchanged.
The latest run fixed one request; the rest are unchanged.

Sharing and sync

The studio has sharing and sync screens, but in this preview they run against a built-in mock server: nothing you do there leaves your machine.