About Burrowbox
Burrowbox provides persistent Linux machines for AI agents, with desktops, signed-in browsers, credential vaults and MCP endpoints. Its TypeScript client library is for developers who create and manage those machines and connect agents to them.
Key features
- 01Create and manage Linux machines
- 02Connect through machine MCP endpoints
- 03Store logins in a credential vault
- 04Embed screens with signed links
- 05Run commands and MCP tools on schedules
Use cases
- 01Give an agent a persistent machine
- 02Connect an agent to a machine over MCP
- 03Let agents use stored logins without seeing them
- 04Run machine tasks on a schedule or webhook
MCP support
Each machine has its own MCP endpoint, and the library provides connection details for machine and platform endpoints. Helpers convert the details for Streamable HTTP clients, Anthropic Messages API, and Claude Code.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://burrowbox.dev/mcpclaude mcp add --transport http burrowbox-burrowbox https://burrowbox.dev/mcp{"mcpServers":{"burrowbox-burrowbox":{"type":"http","url":"https://burrowbox.dev/mcp"}}}Open in Cursor{"servers":{"burrowbox-burrowbox":{"type":"http","url":"https://burrowbox.dev/mcp"}}}Open in VS Code{"mcpServers":{"burrowbox-burrowbox":{"type":"http","url":"https://burrowbox.dev/mcp"}}}{"mcpServers":{"burrowbox-burrowbox":{"serverUrl":"https://burrowbox.dev/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
https://burrowbox.dev/mcpAuth requiredTools
Details
From the project READMEburrowbox-js
TypeScript client library for the Burrowbox API: persistent Linux computers for AI agents, each with a desktop, a browser that stays signed in, a credential vault and its own MCP endpoint.
→ Start using Burrowbox · API docs
Install
bun add burrowbox
npm (npm install burrowbox) and pnpm (pnpm add burrowbox) work too. No runtime dependencies. Works anywhere with a global fetch: Bun, Node 18+, Deno, Cloudflare Workers. Keep API keys on your server.
Quickstart
Create an API key under Account → API keys and export it:
export BURROWBOX_KEY=tmk_...
Create a machine and connect an agent to it over MCP:
import { Burrowbox, toAgentSdkMcpServers } from "burrowbox";
import { query } from "@anthropic-ai/claude-agent-sdk";
const bb = new Burrowbox(); // reads BURROWBOX_KEY
// Boots in a few seconds. It turns itself off (keeping its state) after an hour.
const machine = await bb.machines.create({ name: "research-bot", size: "tiny", ttlMinutes: 60 });
// MCP URL + the machine's scoped token (tmm_…), which only works on this machine.
const mcp = await bb.machines.mcp(machine);
for await (const msg of query({
prompt: "Open news.ycombinator.com and summarise the top 5 stories.",
options: { mcpServers: toAgentSdkMcpServers(mcp) },
})) {
if (msg.type === "result" && msg.subtype === "success") console.log(msg.result);
}
await bb.machines.stop(machine); // files, apps, logins and open windows are kept
mcp is plain data ({ name, url, token, headers }), so it works with any Streamable HTTP MCP client. toMessagesApiMcpServer(mcp) gives the Anthropic Messages API MCP connector shape, and toClaudeCodeCommand(mcp) prints a claude mcp add command.
Features
- Machines: create, list, start, stop, resize, schedule and destroy, plus screenshots, apps and windows.
- MCP: connection details for each machine's endpoint and for the platform endpoint.
- Live view: signed links to embed a machine's screen in your product. You choose whether viewers can take control.
- Vault: store logins in a machine. Agents can use them without ever seeing them.
- Warm pools: keep machines booted and set up from a template, then claim one instantly for a customer.
- Automations: cron jobs and webhooks that run commands, MCP tools or HTTP calls inside a machine.
- Event webhooks: signed notifications when machines change state, plus
verifyWebhookSignature(). - Billing and VPN: balance, usage per customer, and residential VPN locations.
- Typed errors (
NotFoundError,InsufficientCreditError,RateLimitError…), timeouts, and automatic retries for idempotent requests.
const bb = new Burrowbox({
apiKey: process.env.BURROWBOX_KEY, // or a machine token (tmm_…) for MCP and live-view only
baseUrl: "https://burrowbox.dev",
timeoutMs: 60_000,
maxRetries: 2,
fetch: customFetch, // optional
});
Verify event webhooks
import { constructWebhookEvent } from "burrowbox";
// Pass the raw body, not re-serialized JSON. Throws WebhookSignatureError if it doesn't verify.
const event = await constructWebhookEvent(await req.text(), req.headers.get("burrowbox-signature"), process.env.BURROWBOX_WEBHOOK_SECRET!);
if (event.type === "machine.stopped") console.log(event.data.machine.id, event.data.detail);
It uses Web Crypto, so the same code runs in Bun, Node, Deno, Workers and edge runtimes.
The full surface is in API.md.
Development
The repo uses Bun for installs and scripts. Tests run on Vitest, the build on tsup (ESM + CJS + types).
bun install
bun run typecheck && bun run test && bun run build
bun run smoke # import the built package from Node (ESM and CJS)
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.