Use Volter World with a coding agent
Have your coding agent set up a world for your app, run its tests there, and show you what the app did at each vendor.
This page is executed as written by packages/cli/src/journeys/tutorials.test.ts.
Claude Code, Cursor, VS Code and Codex drive Volter World through volter mcp, an MCP server whose
tools are the volter command's own verbs, and learn it from the volter-world skill. One command
installs both into the agents on your machine. Then you ask in plain words.
The app
An app that creates a Stripe customer with the real Stripe SDK, and names its key in
.env.example:
{ "name": "acme-web", "private": true, "type": "module", "dependencies": { "stripe": "^17" } }
STRIPE_SECRET_KEY=
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
const customer = await stripe.customers.create({ email: 'ada@example.com' });
console.log(`created ${customer.id}`);
1. Install the command and the twin
npm install
npm install -g @volter/world
npm install -D @volter/twin-stripe
2. Give your agent the tools
volter agents install finds the coding agents on your machine and puts the skill and the MCP
server into each: Claude Code (claude mcp add, and ~/.claude/skills/volter-world), Cursor
(~/.cursor/mcp.json), VS Code (.vscode/mcp.json in this project) and Codex
(~/.codex/config.toml and ~/.codex/AGENTS.md). Name one to set up only that agent. Here it is VS
Code, whose server entry lives in the project:
volter agents install --vscode --yes
for VS Code
skill volter-world
.vscode/mcp.json: added the volter server
It changes only its own volter entry and its own skill folder; running it again changes
nothing. Without a flag it sets up every agent it finds, and without --yes it asks first:
$ volter agents install
for Claude Code, Cursor
skill volter-world
server volter mcp
Install? [y/N]
Restart the agent so it starts the server.
3. Ask
Paste this into your agent. The platform's Get started and a world's Connect menu offer the same text with your platform's address filled in.
Set up Volter World for this app, so its calls to Stripe, Slack, GitHub, OpenAI and the other services it uses go to local twins instead of the real APIs. The app keeps its real SDKs and code.
1. You have the Volter World tools (volter mcp). If the `volter` command is missing, install it: `npm install -g @volter/world`.
2. In the app's folder, world_init (`volter world init`). Show me the vendors it detected and why, before keeping them.
3. Start it with world_up, then run the tests inside it: world_run (`volter world run -- <the test command>`). Fix anything that fails because a call went to the real service.
4. Tell me what the app did at each vendor (world_log (`volter world log`)), and give me the dashboard link (world_view).
The agent's tools run the same commands you would, and answer what they answer. Here are those commands, as the agent runs them.
volter world init
stripe | injector | STRIPE_TWIN_URL | env: STRIPE_SECRET_KEY; npm: stripe
COVERED: every detected vendor has a twin in world acme-web.
volter world up
volter world run -- node signup.mjs
created cus_twin_1
volter world log
stripe customer.create customer:cus_twin_1
For the dashboard the agent calls world_view, which runs the world with its dashboard and hands
you the link; volter world view is the same from a terminal.
4. Share it with your team
A world on your machine is yours. To share one, your agent signs the command in to your team's platform, and you approve the sign-in in your browser: the agent cannot. Then it links this world to one on the platform, making it there from this world's vendors, and pushes:
$ volter login https://your-platform.example
approve https://your-platform.example/-/cli/approve?code=QWER-TYUI
$ volter remote add origin acme/web --create
$ volter world changeset -m "The signup flow"
$ volter world push
The MCP tools are platform_login, remote_link (with create: true), world_changeset and
world_push.
Use the hosted product covers the platform itself.
Clean up
volter world down
The tools and flags are in the CLI reference.