vitro

Give every agent its own browser.

Then watch all of them in one window, and rewind any of them when something goes wrong.

Install it — free See the 38 tools

The desktop app is free and always will be. Hosted starts at €29 a month, when you want the same fleet on a machine that does not close with your laptop. Pricing.

What it is for.

A desktop app that runs real Chrome, one isolated session per agent. One agent, one browser is solved. A dozen of them, each needing its own logged-in session, on the laptop already running your agents and your editor, is not.

Agents cannot see each other.

Every session is its own browser context: its own cookies, storage, cache. Every call carries a lease — a token issued once, at session creation — so one agent cannot reach into another's browser.

When one goes wrong, go back.

Every browser event and every tool call on one timeline, with the frame the page showed at that instant. Filter it down to what the agent did, where it went, or only what broke, then step back through it.

Three ways in.

MCP
38 tools over streamable HTTP. Screenshots come back by reference, so looking costs no tokens.
CLI
The same tools from a shell, no agent in the loop.
The window
Frames go straight over a websocket. Nothing you watch enters an agent's context.

Browsers outlive the client.

Kill the agent, restart the editor, crash the client: the browsers stay up. Reattach and carry on. Quit the app and they all close.

Two deployments of one product.

The same application, packaged twice. On your laptop it is a desktop app and it is free. On our hardware it is a fleet your whole team points agents at, and it does not close when your lid does.

An agent cannot tell them apart: same thirty-eight tools, same MCP, same answers. What changes is who else can see the wall, and what is still running tomorrow morning.

 DesktopHosted
Costs Free, forever From €29 a month
Runs on Your machine A vitro of your own, on ours
Watched by You, in a native window Your team, in a browser
When the laptop sleeps The browsers close with it They carry on

See pricing

Every feature is in every band. What you pay for is how many browsers run at once — never which tools you are allowed to call.

Thirty-eight tools.

Sessions, pages, actuation, the journal, emulation, performance.

The full list

What the browser saw.

Real captures from one run against MDN's Performance page.

Load timings, no queue

get_performance_metrics --page pg_0
first_paint36 ms
first_contentful_paint36 ms
dom_content_loaded40.6 ms
load40.8 ms
resources110

Real Lighthouse, on its own browser

run_audit https://developer.mozilla.org/…/Performance
99performance
92accessibility
96best practices
100seo
largest_contentful_paint2031 ms
speed_index1394 ms
total_blocking_time7 ms
cumulative_layout_shift0
failed · color-contrast
failed · image-aspect-ratio
failed · aria-valid-attr-value

Console, kept rather than tailed

get_console_logs --limit 4
infoGlean · Ping e4c50399 successful
infoGlean · Ping d83e5771 successful
warningDeprecated API for given entry type.
infoGlean · Ping 5254d06e successful

Every request, with its body

list_network_requests --limit 5
200 Image · /static/client/server.ee27a0adimage
200 Image · /static/client/firefox.be3910baimage
200 Fetch · /pong/getfetch
200 Ping · incoming.telemetry.mozilla.orgping
200 Ping · incoming.telemetry.mozilla.orgping

Using it.

Open source, and free on your own machine — no account, no card, no tier with the good tools held back. Hosting it for a team is the only thing that costs anything.

Install it

Free, and checksum-verified either way.

brew tap vitro-run/tap https://vitro.run/brew
brew install --cask vitro

Or, on Linux and anywhere you would rather not tap:

curl -fsSL https://vitro.run/install.sh | sh

It reads uname -m, so it picks the right build for you. Download the app directly if you would rather not pipe a script into a shell — and read it first, it is served as plain text for exactly that reason. Or clone it and run from source: mix ex_tauri.dev.

Start it

The app is the daemon. No stdio shim, nothing auto-starting.

open -a Vitro

macOS on Apple silicon or Intel, and Linux on x86_64.

Point an agent at it

Streamable HTTP, never SSE.

claude mcp add --scope user --transport http vitro \
  http://127.0.0.1:43217/mcp \
  --header "Authorization: Bearer $(cat ~/.vitro/token)"

Teach it the shape

Thirty-eight tool descriptions don't tell an agent how to use them together. The skills do.

npx skills add vitro-run/vitro

Drive it yourself

Sessions are remembered by name. No lease is ever typed.

vitro open https://localhost:3000
vitro page go pg_0 /checkout
vitro events --type tool_call
vitro watch

Size it to your machine

Hardware-dependent numbers are settings, not a rebuild.

vitro config set max_sessions 24