NEWThe Boxline MCP server is live. Give any MCP client a real machine.Read the guide →
Private beta is open

Give your AI agents the infrastructure they need.

Browsers, shells, storage and isolated machines, through one API. One call starts Chrome, bash and a shared disk on its own machine, billed by the second.

Start building free
Works with
  • Playwright
  • Puppeteer
  • Chrome CDP
  • MCP
  • Claude
  • Cursor
  • LangChain
  • Python
  • Node.js
Layers

One session. Every layer an agent needs.

Real agent tasks cross the line between browsing and computing. Pick a job and see which layers of the session it uses.

Every session gets

Four surfaces. One machine.

agent.tswssDownload
BROWSER

Real Chrome, over CDP

Drive it with Playwright, Puppeteer or raw DevTools. Watch it live, or take over when a person needs to step in.

chromiumlive viewproxies
bash · session ses_8f2c$ python3 summarise.py report.csv1,204 rows · 3 columns · ok$ ls /workspace/outsummary.md chart.png$
SHELL

A shell with sudo

Bash on the same machine as the browser, with Python, Node and ffmpeg ready. Run the code your agent just wrote.

bashpythonnodeffmpeg
browsershell/workspacedownloads/report.csv
/WORKSPACE

One shared disk

Downloads from the browser land where the shell can read them. Pull results out through the files API.

files APIkept on stop
webshdiskrunning · 1 customergVisor
MACHINE

Isolated, never shared

Every session runs on its own machine under gVisor. Its browser, shell and disk belong to one customer only.

gVisorown networkper second
Quickstart

Four calls, start to finish.

agent.ts
import { chromium } from "playwright-core";import { Boxline } from "@boxline/sdk"; const bx = new Boxline(); // reads BOXLINE_API_KEY // One call: Chrome, bash and /workspace on one machineconst session = await bx.sessions.create({ shell: true }); const browser = await chromium.connectOverCDP(session.connectUrl!);const page = browser.contexts()[0].pages()[0];await page.goto("https://portal.acme.com/reports");await page.click("text=Download CSV"); // The download is already on the shared diskawait session.files.waitFor("downloads/*.csv");await session.exec("python3 summarise.py downloads/report.csv"); await session.stop(); // billing stops here; resume it later, or delete it
Web data

Fetch, crawl and search the web.

Any page, as clean data

Get a page as Markdown, HTML or text in one call. Screenshots and PDFs have calls of their own.

A whole site, page by page

Start from one address and follow links across a site, with a webhook when the crawl finishes.

Search, then read the results

Get web results for a query, and the top pages as Markdown in the same call.

Security

A sandbox of its own, for every session.

Agents open untrusted pages and run code they wrote a moment ago. Each session stays contained, and nothing is shared between customers.

How we handle isolation and data
  • LIVE

    gVisor per session

    Processes in a session never talk to the host kernel directly.

  • LIVE

    Never shared

    A session's browser, shell and disk belong to one customer only.

  • LIVE

    Stop frees the machine

    Stopping a session frees its machine and stops billing at that second. Delete removes what it saved.

  • ROADMAP

    MicroVM isolation

    Coming next. We'll announce it in the changelog.

Pricing

Pay for the seconds your sessions run.

Usage-based, with no per-session fee. Plans add included usage, more concurrency and longer sessions.

Free

For trying it out and side projects
$0/ month
  • $5 usage credit every month
  • 3 concurrent sessions
  • Browser, shell and /workspace
Start free

Usage

Billed per second
PAY AS YOU GO
Browser session
$0.045 /h
Browser + shell · 1 vCPU · 3 GiB
≈$0.084 /h
Stopped session
$0
Estimate your bill

Scale

For agents in production
  • Volume pricing
  • 250+ concurrent sessions
  • Sessions up to 24 hours
  • Dedicated support
Talk to sales
FAQ

Questions, answered.

By the second, from the moment a session starts until you stop it. There is no per-session fee, and a stopped session costs nothing.

Start

Start a session in one call.

The free plan comes with $5 of usage credit every month. Sessions are billed by the second and stop billing the moment you stop them.

startingrunningeach square is one session