# ParallelSandbox > ParallelSandbox gives your coding agent a remote computer: a box with Docker, a browser on a virtual display, screenshots and screen recordings, controlled through MCP tools. There is no AI inside the box; your own agent (Claude Code, Codex, any MCP client) drives it, and a person can watch or take over from the browser or the desktop app. Read these pages in this order, one fetch each; each is plain markdown at its own URL. https://parallelsandbox.com/llms-full.txt has all of them in one file (about 585 KB), and many fetch tools cut it off partway, often in the middle of Team setup. If your copy of llms-full.txt does not end with the line "End of llms-full.txt.", it was truncated: do not guess the rest; fetch the pages below one by one, in this order, starting from the one where it stopped. 1. SKILL.md, the agent guide: https://parallelsandbox.com/skill/SKILL.md 2. Team setup, a worked example with several services, teammates and networks: https://parallelsandbox.com/en/docs/team-setup/index.md 3. Tool reference, the overview with a line or two about every tool and a link to its page: https://parallelsandbox.com/en/docs/tools/index.md Each tool, and each topic the tools share, has its own page, in this order: - `sandbox_start`: https://parallelsandbox.com/en/docs/tools/sandbox-start/index.md - `sandbox_list`: https://parallelsandbox.com/en/docs/tools/sandbox-list/index.md - `sandbox_media`: https://parallelsandbox.com/en/docs/tools/sandbox-media/index.md - `sandbox_status`: https://parallelsandbox.com/en/docs/tools/sandbox-status/index.md - `sandbox_stop`: https://parallelsandbox.com/en/docs/tools/sandbox-stop/index.md - Finishing a box: https://parallelsandbox.com/en/docs/tools/finishing-a-box/index.md - Picking up a box another conversation left: https://parallelsandbox.com/en/docs/tools/picking-up-a-box/index.md - `sandbox_exec`: https://parallelsandbox.com/en/docs/tools/sandbox-exec/index.md - `sandbox_procs`: https://parallelsandbox.com/en/docs/tools/sandbox-procs/index.md - `sandbox_sync`: https://parallelsandbox.com/en/docs/tools/sandbox-sync/index.md - `sandbox_get`: https://parallelsandbox.com/en/docs/tools/sandbox-get/index.md - `sandbox_pull`: https://parallelsandbox.com/en/docs/tools/sandbox-pull/index.md - `sandbox_build`: https://parallelsandbox.com/en/docs/tools/sandbox-build/index.md - `sandbox_wire`: https://parallelsandbox.com/en/docs/tools/sandbox-wire/index.md - Links to other boxes: https://parallelsandbox.com/en/docs/tools/links-to-other-boxes/index.md - Taking over a link or an environment address: https://parallelsandbox.com/en/docs/tools/taking-over-a-link/index.md - `sandbox_shot`: https://parallelsandbox.com/en/docs/tools/sandbox-shot/index.md - `sandbox_scene`: https://parallelsandbox.com/en/docs/tools/sandbox-scene/index.md - `sandbox_say`: https://parallelsandbox.com/en/docs/tools/sandbox-say/index.md - `sandbox_review`: https://parallelsandbox.com/en/docs/tools/sandbox-review/index.md - `sandbox_report`: https://parallelsandbox.com/en/docs/tools/sandbox-report/index.md - `sandbox_takeover`: https://parallelsandbox.com/en/docs/tools/sandbox-takeover/index.md - `sandbox_feedback`: https://parallelsandbox.com/en/docs/tools/sandbox-feedback/index.md - `sandbox_secrets`: https://parallelsandbox.com/en/docs/tools/sandbox-secrets/index.md - `sandbox_environments`: https://parallelsandbox.com/en/docs/tools/sandbox-environments/index.md - `sandbox_device`: https://parallelsandbox.com/en/docs/tools/sandbox-device/index.md - `sandbox_publish_version`: https://parallelsandbox.com/en/docs/tools/sandbox-publish-version/index.md - `sandbox_versions`: https://parallelsandbox.com/en/docs/tools/sandbox-versions/index.md - Run a published version: https://parallelsandbox.com/en/docs/tools/run-a-published-version/index.md - `sandbox_draft`: https://parallelsandbox.com/en/docs/tools/sandbox-draft/index.md - `sandbox_architecture`: https://parallelsandbox.com/en/docs/tools/sandbox-architecture/index.md - `sandbox_schema`: https://parallelsandbox.com/en/docs/tools/sandbox-schema/index.md - `logs_search`: https://parallelsandbox.com/en/docs/tools/logs-search/index.md - `logs_errors`: https://parallelsandbox.com/en/docs/tools/logs-errors/index.md - `logs_tail`: https://parallelsandbox.com/en/docs/tools/logs-tail/index.md - Without the log service: https://parallelsandbox.com/en/docs/tools/without-the-log-service/index.md - Box states: https://parallelsandbox.com/en/docs/tools/box-states/index.md - Credits: https://parallelsandbox.com/en/docs/tools/credits/index.md - REST: https://parallelsandbox.com/en/docs/tools/rest/index.md - Other facts: https://parallelsandbox.com/en/docs/tools/other-facts/index.md 4. Environments: https://parallelsandbox.com/en/docs/environments/index.md 5. Quick start: https://parallelsandbox.com/en/docs/quickstart/index.md 6. Secrets: https://parallelsandbox.com/en/docs/secrets/index.md 7. Example repos: https://parallelsandbox.com/en/docs/examples/index.md 8. Log SDK: https://parallelsandbox.com/en/docs/log-sdk/index.md 9. FAQ for engineers, written for people (how it works, where code and data go, what is kept): https://parallelsandbox.com/en/docs/faq/index.md What it does: - A box is an x86_64 (amd64) Linux machine, so images must be linux/amd64 (arm64-only images fail with exec format error): 2 vCPU and 8 GB of memory per size unit, in sizes of 1, 2 or 4 units (4 is the largest), with 40 GB of working disk (`/work`) per size unit, its own Docker, git, Node, Go, Python, PHP, PowerShell, Xvfb with Chromium, and ffmpeg. Boxes stay isolated from each other except through the links you declare between boxes of the same account. A box holds no cloud credentials of its own; the one exception is an AWS role named on its environment, which hands it temporary credentials. - Connect with OAuth and no API key: `claude mcp add parallelsandbox -- npx -y parallelsandbox-mcp`; Codex: `codex mcp add parallelsandbox -- npx -y parallelsandbox-mcp`. The stdio adapter 0.4.0 or later opens the sign-in browser; call parallelsandbox_connect for its link while sign-in is pending. It is required for sandbox_sync and sandbox_pull and tells the person's app whether the conversation is still open. Remote HTTP is an alternative when local file transfers are not needed: `claude mcp add --transport http parallelsandbox https://mcp.parallelsandbox.com/mcp`, then `/mcp` to authorize; Codex: `codex mcp add parallelsandbox --url https://mcp.parallelsandbox.com/mcp` and `codex mcp login parallelsandbox`. Existing API keys remain optional for legacy clients. - Tools: sandbox_start, sandbox_list, sandbox_media, sandbox_exec, sandbox_procs, sandbox_build, sandbox_sync, sandbox_get, sandbox_pull, sandbox_wire, sandbox_shot, sandbox_scene, sandbox_status, sandbox_say, sandbox_review, sandbox_report, sandbox_takeover, sandbox_device, sandbox_secrets, sandbox_environments, sandbox_publish_version, sandbox_versions, sandbox_draft, sandbox_architecture, sandbox_schema, sandbox_feedback, sandbox_stop, logs_search, logs_errors, logs_tail. sandbox_sync and sandbox_pull read and write the agent's local files, so they run only in the stdio adapter; over plain HTTP they return an error. - Environments plug a box into your own dev or staging: a connector you run in your network (outbound connections only) lets the box reach your private databases and services by their usual host names, and service settings imported from AWS ECS or a `.env` start the services you changed exactly as they run on dev. - When a version is worth a person's time, sandbox_review shows its product card immediately and waits for a report or completion within the client's supported limit. Undeclared clients and the adapter's default host budget wait up to 25 seconds. For a full 30-minute wait in Codex, use adapter 0.4.2 or later and configure both tool_timeout_sec=1920 and adapter env PSBX_TOOL_TIMEOUT_SEC=1920 when the person requests that setup; preserve existing settings. Increasing waitSec alone cannot exceed the client limit. Give the person appURL for trying it and submitting feedback in the app; url is the product entry. Read the returned fromHuman notes, images, recordings and timed transcripts, then continue the task. A timeout keeps the card and feedback; resume with reviewId, or replay a known reportId with sandbox_report. waitSec:0 explicitly hands off and returns immediately. A waiting tool call can continue the current conversation; a generic MCP connection cannot wake a stopped client. When the agent needs a person's hands (login, CAPTCHA, payment), sandbox_takeover hands the live screen to a human and returns their note. - Every sandbox_start takes a goal: why the box exists and what done looks like, in the person's language. Finish every box with sandbox_review (the person should try it) or sandbox_stop (nothing to see); a box left without either shows in the person's app as AI stopped. A box outlives its conversation: a new one picks it up by reading goal, steps[] (the last 30 things done in it, without output) and agent from sandbox_status. agent says whether the conversation that last used the box is still at it; when it is working or away and not thisConversation, ask the person in your own conversation before taking the box over. sandbox_say is a status line in the person's app, not a way to ask: when you need the person to decide something, ask in your own conversation, the way your client asks; notes they leave for you in the app come back as fromHuman, only to the conversation holding the box. Commit in /work as you go, with messages that say what is done and what is left, so a conversation picking the box up sees where the work stands; a stopped box loses all of /work, committed or not, so push or sandbox_pull what must outlive it. - Before building something new or changed, design it with the person in this order: sandbox_draft (screens), sandbox_architecture (services), sandbox_schema (stored data); then build in the box and hand it over with sandbox_review. Use them whenever the person asks for a draft, sketch, wireframe, architecture diagram or schema, instead of writing HTML or image files. Each takes only JSON and needs no box: a design belongs to the account and the conversation that drew it and stays when a box stops; id is optional, the box of the work to show the design on that box's page too (it does not wake the box). sandbox_draft comes back as hand-drawn phone screens and sandbox_architecture as a plain, clean diagram, both pictures inline; sandbox_schema comes back as text, not a picture, and every field needs a short note. All three show on the design's own page in the person's app (appUrl), where they circle, talk and write on them. Their report returns like review feedback (read it with sandbox_report and its reportId alone, no id), and the same tool with the same topic makes the next version, with or without a box; there is no approval step. Their report wakes this conversation on its own with the stdio adapter 0.6.0 or later (Claude Code and Gemini CLI: reinstall ParallelSandbox's hooks when the tool result says so). - The browser log SDK `@parallelsandbox/log` sends console output and errors from pages; logs_errors returns them with stacks resolved through source maps. How to: - Connect an agent over HTTP or through the stdio adapter (Claude Code, Codex, Cursor and other clients): https://parallelsandbox.com/en/skill/#install-and-connect-when-the-person-asks - Run a multi-service repo in a box (service names, the port callers dial and the targetPort the process listens on, port 80, the scene URL and each web service's own URL): https://parallelsandbox.com/en/docs/tools/sandbox-start/ and https://parallelsandbox.com/en/docs/examples/ - Choose which services run in the box and which stay on your real environment (declared names, targetPort, externalBaseUrl, sandbox_wire, address ranges): https://parallelsandbox.com/en/docs/team-setup/#2-run-the-changed-services-under-their-dev-names and https://parallelsandbox.com/en/docs/tools/sandbox-wire/ - Read logs without the log service (background commands, containers, browser console): https://parallelsandbox.com/en/docs/tools/without-the-log-service/ - List, wait for or stop background commands with sandbox_procs, never pkill or pgrep, whose pattern also matches the shell running your own sandbox_exec: https://parallelsandbox.com/en/docs/tools/sandbox-procs/ - Read browser logs with the log service: https://parallelsandbox.com/en/docs/log-sdk/ - Connect box services to your own dev through an environment and connectors, one per network, and check each connection (connections[] in sandbox_environments and in the environment of sandbox_start and sandbox_status): https://parallelsandbox.com/en/docs/environments/ and https://parallelsandbox.com/en/docs/team-setup/#1-one-environment-two-connections - Settings for services that do not run on ECS (Kubernetes, VMs, docker compose): upload a `.env` over REST: https://parallelsandbox.com/en/docs/environments/#settings-for-services-not-on-ecs - Reach an outside service that accepts only known IP addresses: a box's own public IP is its host's and changes as hosts come and go, so list the service's host on an environment connection and the traffic leaves from your own network: https://parallelsandbox.com/en/docs/environments/#how-a-box-reaches-an-address - Set up an environment over REST, with an API key or an OAuth token (environments, connections and their tokens, addresses, service settings; sandbox_environments only reads): https://parallelsandbox.com/en/docs/environments/#set-it-up-over-rest - Pick up a box another conversation left (goal and steps[] in sandbox_status), finish a box so the person knows what to do with it, and what the app shows while an agent works, is busy elsewhere or has stopped: https://parallelsandbox.com/en/docs/tools/picking-up-a-box/, https://parallelsandbox.com/en/docs/tools/finishing-a-box/ and https://parallelsandbox.com/en/docs/tools/box-states/#which-conversation-is-using-a-box - Sketch screens, draw the services or lay out the tables before building, and get the person's circled feedback on each version: https://parallelsandbox.com/en/docs/tools/sandbox-draft/, https://parallelsandbox.com/en/docs/tools/sandbox-architecture/ and https://parallelsandbox.com/en/docs/tools/sandbox-schema/ - Hand a running version to a person to try as a user, and receive their report through an active wait (sandbox_review chooses the declared web product or a native app's screen): https://parallelsandbox.com/en/docs/tools/sandbox-review/ - Test on a phone: an Android emulator (adb and artemis-adb in the box) or an iPhone simulator on a Mac (iOS 26.5, Xcode 26.5; psbx-ios syncs a folder of /work to the Mac, and xcodebuild, simctl, install, launch and screenshot run there), shown on the box's screen: https://parallelsandbox.com/en/docs/tools/sandbox-device/ and https://parallelsandbox.com/skill/SKILL.md - Keep your own error tracker (Sentry): https://parallelsandbox.com/en/docs/team-setup/#3-sentry - Use a service that runs in another of your boxes, through a link while that box runs, or by running its published version (services[].version, with extra variables in env) that outlives it; on newer boxes, sandbox_wire switches a link or an environment address to a service or version in the box in place, keeping the box's URLs: https://parallelsandbox.com/en/docs/tools/links-to-other-boxes/, https://parallelsandbox.com/en/docs/tools/taking-over-a-link/, https://parallelsandbox.com/en/docs/tools/run-a-published-version/ and https://parallelsandbox.com/en/docs/team-setup/#4-use-the-changed-billing-from-another-box - Set up a team: one account holds the boxes, environments, links, versions and credits, and each teammate or agent signs in once with OAuth (API keys, for tools without OAuth, are made over REST); who sees what, and how agents name and stop shared boxes: https://parallelsandbox.com/en/docs/team-setup/#one-account-for-the-team - Sign-in (SSO, OAuth) on a box URL: run the box's copy with a local login, or register the box's exact URL as a redirect URI while it runs; never a wildcard on box.parallelsandbox.com: https://parallelsandbox.com/en/docs/team-setup/#sign-in-sso-oauth-on-a-box-url - Size and run connectors (one per network, sessions, redundancy, what they cost): https://parallelsandbox.com/en/docs/environments/#sizing-and-redundancy - Find the account's boxes (a box id for a link, what teammates run, forgotten boxes to stop) with sandbox_list, which every connection of the account sees the same way: https://parallelsandbox.com/en/docs/tools/sandbox-list/ - Gather the screenshots and recordings of a period across every box of the account, stopped ones included (last week's changes for a release note or report; screenshots are kept 30 days, recordings 7) with sandbox_media: https://parallelsandbox.com/en/docs/tools/sandbox-media/ - Know when a box freezes and when it is stopped (idle rules, what keeps a box awake, how a page load or a call wakes a frozen box, reconnecting after a thaw): https://parallelsandbox.com/en/docs/tools/box-states/ - What each kind of usage costs (rates per minute and per GB) and what happens when credits run out: https://parallelsandbox.com/en/docs/tools/credits/ Quick facts: - Company: Runvo LLC - Pricing: Free is US$0 with 1,000 one-time credits. Pro is US$10.99 a month or US$109.99 a year with 5,000 credits a month. Max is US$29.99 a month or US$299.99 a year with 20,000 credits a month. There is no limit on how many boxes run at once. Credit packs: 3,500 for US$6.99, 8,000 for US$14.99, 16,600 for US$29.99. Billed by the minute: 1,000 credits run a size-1 box for about 34 hours, a bigger size costs proportionally more, a box started from a snapshot (the usual case) is frozen after 10 idle minutes (requests through its URLs count as use for up to 2 hours after the last tool call or wake) and bills nothing while frozen, loading one of its pages in a browser wakes a frozen box in about 10 seconds, a frozen box is stopped 24 hours after its last use, background commands keep a box awake for at most 1 hour after the last call, and outbound traffic is metered too. A running size-1 box costs about 29 credits an hour; outbound traffic costs 114 credits per GB, including what a box sends through environment connections and links and the pages it serves through its URLs. Environments and connectors are free. Credits sit in three buckets used in this order: the free 1,000 (granted once, never expire), plan credits (refilled to 5,000 or 20,000 at each monthly renewal, annual plans too, not carried over, ending with the plan) and purchased packs (never expire). Per 1,000 credits: Pro US$2.20 monthly or US$1.83 yearly, Max US$1.50 or US$1.25 (if every plan credit is used), packs US$2.00, US$1.87 and US$1.81. Every box runs on a microVM host; when no host has room, sandbox_start fails with 503 "no box capacity right now" while another host starts, and the agent should call it again in about 5 minutes. - Website languages: Traditional Chinese, English, Japanese - Contact: runvo.tech@gmail.com ## Docs - [Quick start](https://parallelsandbox.com/en/docs/quickstart/): sign in, connect the agent with one line (OAuth; API key and stdio adapter as fallback), install the skill, run the first box. - [Tool reference](https://parallelsandbox.com/en/docs/tools/): an overview, then a page per MCP tool with inputs, outputs and examples, and pages on box states, credits and REST endpoints. - [Environments](https://parallelsandbox.com/en/docs/environments/): connectors, private addresses, service settings from AWS ECS or a `.env`, an AWS role for boxes. - [Team setup](https://parallelsandbox.com/en/docs/team-setup/): a worked example with several services, dev split between AWS and an office network, Sentry, and a build reused across boxes. - [Example repos](https://parallelsandbox.com/en/docs/examples/): example-compose-app and example-web-with-logs. - [Log SDK](https://parallelsandbox.com/en/docs/log-sdk/): the browser SDK, source maps, log queries. - [Secrets](https://parallelsandbox.com/en/docs/secrets/): how credentials reach a box. - [SKILL.md](https://parallelsandbox.com/skill/SKILL.md): the agent skill file, plain markdown. - [llms-full.txt](https://parallelsandbox.com/llms-full.txt): SKILL.md and every English doc page in one large file, in the reading order above. ## Pages - [Home](https://parallelsandbox.com/en/) (also [Traditional Chinese](https://parallelsandbox.com/), [Japanese](https://parallelsandbox.com/ja/)) - [Pricing](https://parallelsandbox.com/en/pricing/) - [Terms of Service](https://parallelsandbox.com/en/terms/) - [Privacy Policy](https://parallelsandbox.com/en/privacy/) - [Delete your account](https://parallelsandbox.com/en/delete-account/) - [App](https://app.parallelsandbox.com/) - [GitHub](https://github.com/parallel-sandbox) Every page also has a markdown variant at the same path with `index.md` appended, for example https://parallelsandbox.com/en/docs/tools/index.md .