Ephemeral machines the brain provisions on your provider account: leases, long runs that survive disconnects, and why nothing is copied back for you.
An SSH-reachable machine (GPU or CPU) the brain provisions on demand from a provider you’ve configured, hands to the agent for one experiment, and destroys when the lease ends. It bills while it exists.The brain owns the lifecycle — request, lease, expiry, termination. The agent owns the SSH key, the commands, and retaining every valuable output.
Hardware options tagged with the provider that serves them and a price where the provider exposes one
Ask for a machine
sandbox.request
The option’s provider-shaped values and the agent’s public key. needs_selection → choose; provisioning → poll sandbox.get at the advised interval. additional: true asks for a second machine for the same experiment
Use it
SSH from the returned host/port/user
Response hints give the remote experiment directory and expiry
Reuse it for another experiment
sandbox.attach
Associates a running sandbox with another experiment
Watch long runs
sandbox.runs
Durable receipts of merv_run launches
Peek
sandbox.terminal
Concise diagnosis only, not a monitor
Get files back
sandbox.pull_outputs
Returns a command the agent runs locally with its private key
Anything longer than a few minutes runs through the wrapper installed at bootstrap:
merv_run <unique-label> -- <command>
Detaches from SSH, survives disconnects, records a durable receipt. Labels are one-shot. The agent watches the receipt (sandbox.runs, or a watcher armed from the returned wait_url) and reads both status and exit_code — finished is not succeeded.unknown: the machine died before its receipts were read (retained evidence may still settle it; otherwise rerun). lost: receipts were read and no completion sentinel existed.
Scripts, configs, compact results, reports, figures — the evidence
$RP_DATASET_DIR
Disposable datasets, caches, bulky checkpoints
Nothing is copied automatically; release and expiry destroy anything not retained.
sandbox.release is deliberately two-step: the first call returns a retention checklist and destroys nothing; the second, with confirm_retained: true, terminates. Retention: Working with sandboxes.
Eleven, from Lambda Labs to AWS, GCP, and Azure — ten configured per project in Settings → Compute (credentials, verify, enable, daily USD limit); Modal by environment variables on the brain. Sandbox providers
On every VM provider a stopped machine still bills its disks. Only termination stops charges — which is what release does.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"RapidReview","colors":{"primary":"#C2410C","light":"#FB923C","dark":"#C2410C"},"logo":{"light":"https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/logo/rapidreview-light.svg?fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=99ecf85e3338558a08565a8d89e4fff9","dark":"https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/logo/rapidreview-dark.svg?fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=e6557a132517fbdcc5f79a96c1c99579","href":"/"},"favicon":"https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/logo/favicon.png?fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=ac2198e4bd4a737d243da6dc51299947","appearance":{"default":"system","strict":false},"background":{"color":{"light":"#F9F9F8","dark":"#121213"}},"navbar":{"links":[{"href":"https://github.com/rapidreview-io/Merv","label":"Merv on GitHub"}],"primary":{"type":"github","href":"https://github.com/rapidreview-io/Merv"}},"footer":{"socials":{"github":"https://github.com/rapidreview-io"}},"seo":{"indexing":"navigable"},"fonts":{"heading":{"family":"Plus Jakarta Sans","weight":600},"body":{"family":"Plus Jakarta Sans","weight":400}},"styling":{"eyebrows":"section","codeblocks":{"theme":{"light":"github-light","dark":"dark-plus"}},"latex":false},"contextual":{"options":["copy","view","chatgpt","claude","cursor","vscode"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"rapidreview","hasAudioNarration":false,"actualSubdomain":"rapidreview","customDomains":["rapidreview.io"],"gitSource":{"type":"github","owner":"rapidreview-io","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aea225f737dffe66012da58:success","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Merv","count":46},{"language":"default","tag":"Clients","count":16},{"language":"default","tag":"Nisa","count":16},{"language":"default","tag":"Guides","count":14},{"language":"default","tag":"Client guides","count":11},{"language":"default","tag":"Reference","count":9},{"language":"default","tag":"Start","count":9},{"language":"default","tag":"Concepts","count":8},{"language":"default","tag":"Self-host","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--rr-bg: #f9f9f8;--rr-panel: #f2f2f0;--rr-panel-2: #ebebe8;--rr-border: #dad9d6;--rr-border-soft: #e6e5e2;--rr-fg: #21201c;--rr-fg-muted: #63635e;--rr-fg-subtle: #8d8d86;--rr-link: #c2410c;--rr-radius: 0.625rem}html.dark{--rr-bg: #121213;--rr-panel: #1b1b1c;--rr-panel-2: #222224;--rr-border: #2e2e30;--rr-border-soft: #262628;--rr-fg: #ededeb;--rr-fg-muted: #a2a29e;--rr-fg-subtle: #75756f;--rr-link: #fb923c}@media (min-width: 1024px){#content-container{max-width:78rem;padding-left:3rem;padding-right:2rem;column-gap:2.5rem}#content-area{width:auto;flex:1 1 auto;min-width:0;margin-left:0}}@media (min-width: 1024px){body:has(#navbar.is-center) #content-area{max-width:54rem;margin-left:auto;margin-right:auto}}@media (min-width: 1280px){#table-of-contents-layout{width:17rem;padding-left:2rem}#table-of-contents{width:15rem}}#sidebar-content{border-right-color:var(--rr-border-soft)}#navigation-items a{border-radius:0.5rem}.eyebrow{color:var(--rr-fg-muted)!important;font-size:0.8125rem;font-weight:500;letter-spacing:0;text-transform:none}#page-title{font-size:2.125rem;line-height:1.2;font-weight:500;letter-spacing:-0.02em;color:var(--rr-fg)}#header .prose{font-size:1.0625rem;line-height:1.6;color:var(--rr-fg-muted);margin-top:0.75rem}#content.prose{font-size:1rem;line-height:1.65;color:var(--rr-fg);margin-top:2.5rem}#content.prose p{margin-top:0;margin-bottom:1rem}#content.prose h2:not(.not-prose){font-size:1.5rem;line-height:1.3;font-weight:600;letter-spacing:-0.01em;color:var(--rr-fg);margin-top:3.5rem;margin-bottom:1rem}#content.prose h3:not(.not-prose){font-size:1.125rem;line-height:1.4;font-weight:600;color:var(--rr-fg);margin-top:2.25rem;margin-bottom:0.625rem}#content.prose h2+p,#content.prose h3+p{margin-top:0}#content.prose li{margin-top:0.25rem;margin-bottom:0.25rem}#content.prose li::marker{color:var(--rr-fg-subtle)}#content.prose strong{font-weight:600;color:var(--rr-fg)}#content.prose a:not(.card):not([class*=\"button\"]){color:var(--rr-link);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;text-decoration-color:color-mix(in srgb, var(--rr-link) 45%, transparent);font-weight:500}#content.prose a:not(.card):hover{text-decoration-color:var(--rr-link)}#content.prose :not(pre)>code{background:var(--rr-panel);border:1px solid var(--rr-border-soft);border-radius:0.375rem;padding:0.1em 0.4em;font-size:0.875em;font-weight:500;color:var(--rr-fg)}.code-block{border-radius:var(--rr-radius)!important;border:1px solid var(--rr-border)!important;background:var(--rr-panel)!important}.code-block pre.shiki,.code-block pre.shiki code{background-color:transparent!important;font-size:0.875rem;line-height:1.6}pre.shiki,pre.shiki code{white-space:pre-wrap!important;overflow-wrap:anywhere}pre.shiki code{width:100%!important;min-width:0!important;max-width:100%!important}#content.prose div[class*=\"[--page-padding:20px]\"]{margin:0.25rem calc(var(--page-padding) * -1) 0.75rem!important;padding:0.5rem 0 0.75rem!important}#content.prose table{border-collapse:separate;border-spacing:0;border:1px solid var(--rr-border);border-radius:var(--rr-radius);overflow:hidden;font-size:0.9375rem;line-height:1.5;margin:0!important}#content.prose thead th{background:var(--rr-panel);color:var(--rr-fg-muted);font-size:0.8125rem;font-weight:500;text-align:left;padding:0.625rem 0.875rem;border-bottom:1px solid var(--rr-border)}#content.prose td,#content.prose th{min-width:6rem}#content.prose tbody td{padding:0.75rem 0.875rem;border-bottom:1px solid var(--rr-border-soft);vertical-align:top;color:var(--rr-fg)}#content.prose tbody tr:last-child td{border-bottom:0}#content.prose td code,#content.prose th code{white-space:normal;overflow-wrap:anywhere;-webkit-box-decoration-break:slice;box-decoration-break:slice}.frame{background:var(--rr-panel)!important;border:1px solid var(--rr-border);border-radius:0.75rem!important;padding:0.375rem!important}.frame img{border-radius:0.5rem}.frame figcaption{color:var(--rr-fg-muted);font-size:0.875rem;line-height:1.5;padding:0.625rem 0.5rem 0.25rem}.callout{background:var(--rr-panel)!important;border:1px solid var(--rr-border)!important;border-radius:var(--rr-radius)!important;color:var(--rr-fg)!important;margin:1.25rem 0!important}.callout [data-component-part=\"callout-content\"]{color:var(--rr-fg)!important;--tw-prose-body: var(--rr-fg);--tw-prose-bold: var(--rr-fg);--tw-prose-links: var(--rr-link);font-size:0.9375rem!important;line-height:1.6!important}.steps{margin-left:0.5rem}.step-container [class*=\"step-indicator\"]{background:var(--rr-panel);border:1px solid var(--rr-border);color:var(--rr-fg-muted)}.card{border:1px solid var(--rr-border)!important;border-radius:var(--rr-radius)!important;background:var(--rr-bg)!important;box-shadow:none!important;overflow:hidden;margin:0!important}.card:hover{border-color:var(--rr-fg-subtle)!important}.card [data-component-part=\"card-content-container\"]{padding:0!important}.card [data-component-part=\"card-icon\"]{position:absolute;top:0.8125rem;left:1rem;width:1rem;height:1rem;color:var(--rr-fg-muted);fill:var(--rr-fg-muted)}.card [data-component-part=\"card-icon\"]>svg{width:1rem;height:1rem;background-color:var(--rr-fg-muted)!important}.columns{row-gap:1rem!important}.card [data-component-part=\"card-title\"]{margin:0!important;padding:0.6875rem 1rem;font-size:0.9375rem!important;line-height:1.4!important;font-weight:600!important;color:var(--rr-fg)!important;background:var(--rr-panel);border-bottom:1px solid var(--rr-border)}.card:has([data-component-part=\"card-icon\"]) [data-component-part=\"card-title\"]{padding-left:2.75rem}.card [data-component-part=\"card-content\"]{margin:0!important;padding:0.75rem 1rem 0.875rem;font-size:0.9375rem!important;line-height:1.5!important;color:var(--rr-fg-muted)!important}@media (max-width: 767px){#content table td,#content table th{min-width:0!important}#content table{font-size:0.875rem}}.tab-container>ul[role=\"tablist\"]{flex-wrap:wrap;overflow:visible;row-gap:0.25rem}.mermaid svg .node rect,.mermaid svg .node polygon,.mermaid svg .node circle:not(.state-start):not(.state-end),.mermaid svg .node path,.mermaid svg .statediagram-state rect,.mermaid svg .cluster rect,.mermaid svg .actor,.mermaid svg rect.actor{fill:var(--rr-panel)!important;stroke:var(--rr-border)!important;stroke-width:1px!important}.mermaid svg .statediagram-cluster rect,.mermaid svg .cluster rect{fill:var(--rr-bg)!important}.mermaid svg .nodeLabel,.mermaid svg .edgeLabel,.mermaid svg .stateLabel text,.mermaid svg text.actor,.mermaid svg .messageText,.mermaid svg .loopText,.mermaid svg .noteText,.mermaid svg .labelText,.mermaid svg text{color:var(--rr-fg)!important;fill:var(--rr-fg)!important}.mermaid svg .edgePath path,.mermaid svg path.flowchart-link,.mermaid svg .transition,.mermaid svg .messageLine0,.mermaid svg .messageLine1,.mermaid svg .actor-line,.mermaid svg .loopLine{stroke:var(--rr-fg-muted)!important}.mermaid svg .marker,.mermaid svg marker path,.mermaid svg .arrowheadPath,.mermaid svg .arrowMarkerPath{fill:var(--rr-fg-muted)!important;stroke:var(--rr-fg-muted)!important}.mermaid svg circle.state-start,.mermaid svg .node circle.state-start{fill:var(--rr-fg-muted)!important;stroke:var(--rr-fg-muted)!important}.mermaid svg .edgeLabel .labelBkg,.mermaid svg .edgeLabel rect,.mermaid svg .edgeLabel foreignObject div{background:var(--rr-bg)!important;fill:var(--rr-bg)!important}.mermaid svg .note,.mermaid svg rect.note,.mermaid svg .activation0,.mermaid svg .activation1,.mermaid svg .activation2{fill:var(--rr-panel-2)!important;stroke:var(--rr-border)!important}"}],"page":{"pagePath":"merv/concepts/sandboxes","slug":"/merv/concepts/sandboxes","pageMetadata":{"title":"Sandboxes","description":"Ephemeral machines the brain provisions on your provider account: leases, long runs that survive disconnects, and why nothing is copied back for you.","href":"/merv/concepts/sandboxes"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Ephemeral machines the brain provisions on your provider account: leases, long runs that survive disconnects, and why nothing is copied back for you.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`An SSH-reachable machine (GPU or CPU) the brain provisions on demand from a provider you’ve configured, hands to the agent for one experiment, and destroys when the lease ends. It bills while it exists.`}),`\n`,_jsx(_components.p,{children:`The brain owns the lifecycle — request, lease, expiry, termination. The agent owns the SSH key, the commands, and retaining every valuable output.`}),`\n`,_jsx(Heading,{level:`2`,id:`lifecycle`,children:`Lifecycle`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Step`}),_jsx(_components.th,{children:`Tool`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`See what’s available`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`sandbox.options`})}),_jsx(_components.td,{children:`Hardware options tagged with the provider that serves them and a price where the provider exposes one`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Ask for a machine`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`sandbox.request`})}),_jsxs(_components.td,{children:[`The option’s provider-shaped values and the agent’s `,_jsx(_components.strong,{children:`public`}),` key. `,_jsx(_components.code,{children:`needs_selection`}),` → choose; `,_jsx(_components.code,{children:`provisioning`}),` → poll `,_jsx(_components.code,{children:`sandbox.get`}),` at the advised interval. `,_jsx(_components.code,{children:`additional: true`}),` asks for a second machine for the same experiment`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Use it`}),_jsx(_components.td,{children:`SSH from the returned host/port/user`}),_jsx(_components.td,{children:`Response hints give the remote experiment directory and expiry`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Reuse it for another experiment`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`sandbox.attach`})}),_jsx(_components.td,{children:`Associates a running sandbox with another experiment`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Watch long runs`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`sandbox.runs`})}),_jsxs(_components.td,{children:[`Durable receipts of `,_jsx(_components.code,{children:`merv_run`}),` launches`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Peek`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`sandbox.terminal`})}),_jsx(_components.td,{children:`Concise diagnosis only, not a monitor`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Get files back`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`sandbox.pull_outputs`})}),_jsx(_components.td,{children:`Returns a command the agent runs locally with its private key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Keep it longer`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`sandbox.extend`})}),_jsx(_components.td,{children:`Support and limits are provider-dependent`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Destroy it`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`sandbox.release`})}),_jsx(_components.td,{children:`Two-step — see below`})]})]})]}),`\n`,_jsxs(Heading,{level:`2`,id:`long-runs-merv_run`,children:[`Long runs: `,_jsx(_components.code,{children:`merv_run`})]}),`\n`,_jsx(_components.p,{children:`Anything longer than a few minutes runs through the wrapper installed at bootstrap:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light dark-plus`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#24292e`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#DCDCAA`},children:`merv_run`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#CE9178`},children:`unique-labe`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#CE9178`},children:`l`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#569CD6`},children:` --`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#CE9178`},children:`comman`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Detaches from SSH, survives disconnects, records a durable receipt. Labels are one-shot. The agent watches the receipt (`,_jsx(_components.code,{children:`sandbox.runs`}),`, or a watcher armed from the returned `,_jsx(_components.code,{children:`wait_url`}),`) and reads both `,_jsx(_components.code,{children:`status`}),` and `,_jsx(_components.code,{children:`exit_code`}),` — finished is not succeeded.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`unknown`}),`: the machine died before its receipts were read (retained evidence may still settle it; otherwise rerun). `,_jsx(_components.code,{children:`lost`}),`: receipts were read and no completion sentinel existed.`]}),`\n`,_jsx(Heading,{level:`2`,id:`where-files-go-and-what-survives`,children:`Where files go, and what survives`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Path`}),_jsx(_components.th,{children:`For`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`$MERV_EXPERIMENT_DIR`})}),_jsx(_components.td,{children:`Scripts, configs, compact results, reports, figures — the evidence`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`$RP_DATASET_DIR`})}),_jsx(_components.td,{children:`Disposable datasets, caches, bulky checkpoints`})]})]})]}),`\n`,_jsx(_components.p,{children:`Nothing is copied automatically; release and expiry destroy anything not retained.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sandbox.release`}),` is deliberately two-step: the first call returns a retention checklist and destroys nothing; the second, with `,_jsx(_components.code,{children:`confirm_retained: true`}),`, terminates. Retention: `,_jsx(_components.a,{href:`/merv/guides/working-with-sandboxes`,children:`Working with sandboxes`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`providers`,children:`Providers`}),`\n`,_jsxs(_components.p,{children:[`Eleven, from Lambda Labs to AWS, GCP, and Azure — ten configured per project in `,_jsx(_components.strong,{children:`Settings → Compute`}),` (credentials, verify, enable, daily USD limit); Modal by environment variables on the brain. `,_jsx(_components.a,{href:`/merv/reference/sandbox-providers`,children:`Sandbox providers`})]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`On every VM provider a stopped machine still bills its disks. Only termination stops charges — which is what release does.`})}),`\n`,_jsxs(_components.p,{children:[`How-to: `,_jsx(_components.a,{href:`/merv/guides/working-with-sandboxes`,children:`Working with sandboxes`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"github-light","dark":"dark-plus"}},"config":{},"pageMetadata":{"title":"Sandboxes","description":"Ephemeral machines the brain provisions on your provider account: leases, long runs that survive disconnects, and why nothing is copied back for you.","href":"/merv/concepts/sandboxes"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Lifecycle","slug":"lifecycle","depth":2,"children":[]},{"title":"Long runs: merv_run","slug":"long-runs-merv_run","depth":2,"children":[]},{"title":"Where files go, and what survives","slug":"where-files-go-and-what-survives","depth":2,"children":[]},{"title":"Providers","slug":"providers","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"rapidreview","siteName":"RapidReview","title":"Sandboxes - RapidReview","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-17T14:53:34.187Z","originalFileLocation":"merv/concepts/sandboxes.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Ephemeral machines the brain provisions on your provider account: leases, long runs that survive disconnects, and why nothing is copied back for you.\">\u003cmeta data-mint-head name=\"application-name\" content=\"RapidReview\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/rapidreview/_lGiNfQtS-HHwTZ0/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/rapidreview/_lGiNfQtS-HHwTZ0/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/rapidreview/_lGiNfQtS-HHwTZ0/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/rapidreview/_lGiNfQtS-HHwTZ0/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/rapidreview/_lGiNfQtS-HHwTZ0/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/rapidreview/_lGiNfQtS-HHwTZ0/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/rapidreview/_lGiNfQtS-HHwTZ0/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/rapidreview/_lGiNfQtS-HHwTZ0/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/rapidreview/_lGiNfQtS-HHwTZ0/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Sandboxes - RapidReview\">\u003cmeta data-mint-head property=\"og:description\" content=\"Ephemeral machines the brain provisions on your provider account: leases, long runs that survive disconnects, and why nothing is copied back for you.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"RapidReview\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://rapidreview.io/docs/merv/concepts/sandboxes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://rapidreview.mintlify.site/docs/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Sandboxes\u0026amp;description=Ephemeral+machines+the+brain+provisions+on+your+provider+account%3A+leases%2C+long+runs+that+survive+disconnects%2C+and+why+nothing+is+copied+back+for+you.\u0026amp;theme=0cc7d392fc5151f71083bf4a\u0026amp;signature=32530a57d7a0cc223fabf5db9ff008f256a5d6d9ba9bc1430c2bf6cdf7f24d25\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Sandboxes - RapidReview\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Ephemeral machines the brain provisions on your provider account: leases, long runs that survive disconnects, and why nothing is copied back for you.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://rapidreview.mintlify.site/docs/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Sandboxes\u0026amp;description=Ephemeral+machines+the+brain+provisions+on+your+provider+account%3A+leases%2C+long+runs+that+survive+disconnects%2C+and+why+nothing+is+copied+back+for+you.\u0026amp;theme=0cc7d392fc5151f71083bf4a\u0026amp;signature=32530a57d7a0cc223fabf5db9ff008f256a5d6d9ba9bc1430c2bf6cdf7f24d25\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/rapidreview/_lGiNfQtS-HHwTZ0/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"RapidReview\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#C2410C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://rapidreview.io/docs/merv/concepts/sandboxes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/merv/concepts/sandboxes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://rapidreview.io/#organization\",\"name\":\"RapidReview\",\"url\":\"https://rapidreview.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/logo/rapidreview-light.svg?fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=99ecf85e3338558a08565a8d89e4fff9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://rapidreview.io/docs#website\",\"name\":\"RapidReview\",\"url\":\"https://rapidreview.io/docs\",\"publisher\":{\"@id\":\"https://rapidreview.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://rapidreview.io/docs/merv/concepts/sandboxes#webpage\",\"url\":\"https://rapidreview.io/docs/merv/concepts/sandboxes\",\"name\":\"Sandboxes\",\"description\":\"Ephemeral machines the brain provisions on your provider account: leases, long runs that survive disconnects, and why nothing is copied back for you.\",\"dateModified\":\"2026-08-17T14:53:34.187Z\",\"isPartOf\":{\"@id\":\"https://rapidreview.io/docs#website\"},\"breadcrumb\":{\"@id\":\"https://rapidreview.io/docs/merv/concepts/sandboxes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://rapidreview.io/docs/merv/concepts/sandboxes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Concepts\",\"item\":\"https://rapidreview.io/docs/merv/concepts/gated-workflow\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sandboxes\",\"item\":\"https://rapidreview.io/docs/merv/concepts/sandboxes\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://rapidreview.io/docs/merv/concepts/sandboxes#article\",\"headline\":\"Sandboxes\",\"name\":\"Sandboxes\",\"description\":\"Ephemeral machines the brain provisions on your provider account: leases, long runs that survive disconnects, and why nothing is copied back for you.\",\"url\":\"https://rapidreview.io/docs/merv/concepts/sandboxes\",\"mainEntityOfPage\":{\"@id\":\"https://rapidreview.io/docs/merv/concepts/sandboxes#webpage\"},\"dateModified\":\"2026-08-17T14:53:34.187Z\",\"publisher\":{\"@id\":\"https://rapidreview.io/#organization\"},\"isPartOf\":{\"@id\":\"https://rapidreview.io/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"RapidReview\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"RapidReview\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/merv/concepts/sandboxes.md","siteName":"RapidReview","nav":{"global":null,"tabs":[{"tab":"Merv","icon":"https://mintlify.s3.us-west-1.amazonaws.com/rapidreview/images/logo/merv.svg","groups":[{"group":"Start","pages":[{"title":"What is Merv","href":"/merv/start/what-is-merv"},{"title":"Choose your setup","href":"/merv/start/choose-your-setup"},{"title":"Quickstart","href":"/merv/start/quickstart"},{"title":"Your first experiment","href":"/merv/start/first-experiment"},{"title":"Troubleshooting setup","href":"/merv/start/troubleshooting"}]},{"group":"Concepts","pages":[{"title":"The gated workflow","href":"/merv/concepts/gated-workflow"},{"title":"Experiments and reviews","href":"/merv/concepts/experiments-and-reviews"},{"title":"Reflection waves","href":"/merv/concepts/reflection-waves"},{"title":"Projects, claims, and the graph","href":"/merv/concepts/projects-claims-graph"},{"title":"Artifacts and storage","description":"Two stores, two purposes: small gated documents whose bytes are sealed as evidence, and heavy objects with pins and expiry.","href":"/merv/concepts/artifacts-and-storage"},{"title":"Sandboxes","href":"/merv/concepts/sandboxes"},{"title":"The Feed","description":"The project's running commentary: short posts from agents in named voices, with the evidence attached, so a human can follow without opening artifacts.","href":"/merv/concepts/feed"},{"title":"Merv and Nisa","href":"/merv/concepts/merv-and-nisa"}]},{"group":"Guides","pages":[{"title":"Running research with Merv","href":"/merv/guides/running-research"},{"title":"Auto-run","href":"/merv/guides/auto-run"},{"title":"Working with sandboxes","href":"/merv/guides/working-with-sandboxes"},{"title":"Observing agents in the UI","href":"/merv/guides/observing-agents"},{"title":"Using Merv with your coding agent","href":"/merv/guides/coding-agent-setup"}]},{"group":"Clients","pages":[{"title":"Clients","sidebarTitle":"Overview","href":"/merv/clients/overview"},{"title":"Authentication","href":"/merv/clients/authentication"},{"group":"Client guides","pages":[{"title":"Claude Code","href":"/merv/clients/claude-code"},{"title":"Codex","href":"/merv/clients/codex"},{"title":"GitHub Copilot CLI","href":"/merv/clients/copilot-cli"},{"title":"Cursor","href":"/merv/clients/cursor"},{"title":"Gemini CLI","href":"/merv/clients/gemini-cli"},{"title":"Qwen Code","href":"/merv/clients/qwen-code"},{"title":"OpenCode","href":"/merv/clients/opencode"},{"title":"Kilo Code","href":"/merv/clients/kilo-code"},{"title":"Hermes Agent","href":"/merv/clients/hermes-agent"},{"title":"OpenHands","href":"/merv/clients/openhands"},{"title":"Replit Agent","href":"/merv/clients/replit-agent"}]},{"title":"Long runs and waking","href":"/merv/clients/long-runs"},{"title":"Reviewer handoff","href":"/merv/clients/reviewer-handoff"},{"title":"Add a client","href":"/merv/clients/add-a-client"}]},{"group":"Reference","pages":[{"title":"MCP tool contract","href":"/merv/reference/mcp-tools"},{"title":"HTTP API","href":"/merv/reference/http-api"},{"title":"merv-client CLI","href":"/merv/reference/cli"},{"title":"Brain configuration","sidebarTitle":"Configuration","href":"/merv/reference/configuration"},{"title":"Sandbox providers","href":"/merv/reference/sandbox-providers"},{"title":"Glossary","href":"/merv/reference/glossary"}]},{"group":"Self-host","pages":[{"title":"Self-hosting overview","href":"/merv/self-host/overview"},{"title":"Deploy the brain","href":"/merv/self-host/deploy-the-brain"},{"title":"Configure auth","href":"/merv/self-host/configure-auth"},{"title":"Configure sandbox providers","href":"/merv/self-host/configure-sandbox-providers"},{"title":"Operations","href":"/merv/self-host/operations"},{"title":"Architecture","href":"/merv/self-host/architecture"}]}]},{"tab":"Nisa","icon":"https://mintlify.s3.us-west-1.amazonaws.com/rapidreview/images/logo/nisa.svg","pages":[{"title":"Nisa","href":"/nisa/start/what-is-nisa"}]}]},"basePath":"","title":"Sandboxes - RapidReview","buildId":"dpl_6PxPD4Fj1JDU9BJxEHvfdUmxKThw","deploymentId":"dpl_6PxPD4Fj1JDU9BJxEHvfdUmxKThw","dynamics":[],"chunks":[]}