Skip to main content
[ DOCS · STUDIO ]

Riptide Studio

Studio gives you a browser surface for local Riptide work: bootstrap a thin workspace, talk to a local coding agent, inspect artifacts, queue allowlisted jobs, and drill into run dashboards.

What Is Studio?

riptide studio starts a CLI-bundled React app served by a local Node HTTP server. It reads your workspace from disk and gives you a visual control plane for Riptide projects, adapters, campaigns, evidence artifacts, reports, job output, and guided setup.

Studio is meant to sit beside the normal file-first workflow. It can create the same thin .riptide/ bootstrap as riptide init, but it does not replace the full /riptide-config setup loop. Use Agent chat or the riptide-config handoff prompt to finish adapters, harness code, personas, scenarios, invariants, and campaign readiness.

Trust boundary: Studio is localhost-only by default. It has no generic shell endpoint, does not publish or push, and only runs jobs or agents after you explicitly launch them from the UI.

Start Studio

Run Studio from the Solana program repo you want to inspect. The workspace defaults to the current directory; --workspace and the positional argument are aliases.

cd /path/to/your-program
riptide studio --workspace .

In headless sessions, use --no-open. Studio prints the URL, usually http://127.0.0.1:4173, and blocks until Ctrl-C.

riptide studio --workspace . --no-open

Use --case-studies-root when you want each immediate child folder of a local case-study corpus to appear as a selectable workspace.

riptide studio --workspace . --case-studies-root /path/to/case-studies --no-open

Flags

  • --port <port> - preferred port. Defaults to 4173 and tries nearby ports if the preferred one is taken.
  • --host <host> - loopback bind address. Defaults to 127.0.0.1; non-loopback hosts are rejected.
  • --workspace <path> - workspace root. Defaults to the current directory.
  • --case-studies-root <dir> - optional parent directory whose child folders become case-study workspaces.
  • --no-open - print the URL without trying to open a browser.
  • --quiet - suppress the CLI banner.

First-Run Bootstrap

If Studio opens a folder without .riptide/, it shows a first-run wizard. The wizard asks for a program name, protocol hint, and local coding-agent preference, then writes the thin scaffold:

  • .riptide/adapters/<program>.toml with detected program and IDL path hints when available.
  • .riptide/GETTING-STARTED.md with the next local setup steps.
  • Run-output ignore rules so generated runs stay out of source control.

The wizard intentionally stops there. It does not infer economic semantics, pick personas, write invariants, or prove campaign readiness. For that, open Agent chat and use the Configure my project preset, or copy the handoff prompt from Settings into a /riptide-config agent session.

What You Can Do

  • Switch workspaces - choose the current repo, registered projects, or local case-study workspaces from the workspace rail.
  • Use Agent chat - send setup and authoring tasks to a detected local Claude Code or Codex CLI, stream output, stop a running turn, and keep per-workspace threads.
  • Inspect adapters and campaigns - read the graph Studio builds from adapter, scenario, campaign, invariant, run, report, and pack files.
  • Browse the evidence library - list runs, campaigns, packs, guided-sim artifacts, readiness reports, scenarios, and adapters with status and path context.
  • Read reports - render local Markdown reports inline, with raw JSON fallback for machine artifacts.
  • Drill into dashboards - open the same run/replay dashboard used by riptide run --serve and riptide replay --serve, scoped to the selected artifact.
  • Queue jobs - preview the exact command, start allowlisted local Riptide jobs, watch stdout/stderr tails, and cancel running jobs.
  • Add projects - bootstrap a new local workspace and save it to the user-level project registry so it appears on later Studio launches.

Agent Chat

Studio probes local agent CLIs, currently Claude Code and Codex for chat turns, and records the selected agent and model per workspace. A chat turn runs in the active workspace directory, streams structured output, and can be stopped from the UI.

Use Agent chat for authoring work that needs repository edits, such as:

  • Configure a repo after first-run bootstrap.
  • Add or widen a campaign.
  • Analyze the latest report without editing files.
  • Tighten an invariant and run a targeted smoke.

Agent chat is the place where repo edits can happen, because the chosen local agent performs normal coding-agent work in your checkout. Review changed files before committing or running broader campaigns.

Job Queue

Studio jobs are not free-form shell commands. Each job kind maps to a fixed riptide argument shape, and Studio previews the exact argv and cwd before launch.

  • run - riptide run [scenario] --quiet.
  • replay - riptide replay <config> --quiet.
  • campaign-validate - riptide campaign validate <campaign>.
  • campaign-plan - riptide campaign plan <campaign>.
  • campaign-run - riptide campaign run <campaign> [--harness <harness>].
  • review - riptide review <pack> --quiet [--out <out>].
  • readiness - riptide readiness . --json [--out <out>].

Path parameters must be workspace-relative. Absolute paths, .. escapes, shell metacharacters, and publish/push/release style tokens are rejected before any process starts. Job records persist under .riptide/studio/jobs/.

Security Model

  • Studio binds to 127.0.0.1 by default and accepts only loopback hosts such as 127.0.0.1, localhost, and ::1.
  • The server reads local workspaces and writes only narrow Studio state such as the thin init scaffold, project registry, job records, and chat transcripts.
  • The job launcher uses structured payloads and shell: false; no shell interprets job arguments.
  • Agent chat uses detected local agent binaries, sends prompts through stdin, enforces bounded concurrency, and can be aborted from Studio.
  • Core Studio operation does not require external network calls. Any network behavior comes from a user-launched job or a chosen coding-agent CLI.
  • Studio does not push, publish, deploy, install packages, or expose a generic terminal endpoint.

Recommended Workflow

  1. Install Riptide and build your target program so the .so and IDL paths exist.
  2. Run riptide studio --workspace . from your program repo.
  3. If the repo is new to Riptide, use the first-run wizard or run riptide init manually.
  4. Use Agent chat or the Settings handoff prompt to run the /riptide-config setup loop.
  5. Queue a bounded run or campaign-plan job from Studio, then inspect Jobs and Reports.
  6. Open the dashboard drilldown or evidence library before committing the adapter, harness, scenarios, campaign, and evidence notes.