Install the runner on any machine, pair it with an 8-character code, and let it dispatch agents from the queue.
Auto-run runs experiments without you at the keyboard. A paired machine polls the brain, launches your coding agents non-interactively, and mirrors a redacted excerpt of each job so the Auto-run page shows what’s happening. It works on a laptop or a remote box, and it is independent of the agent plugin you use interactively.
curl -fsSL https://rapidreview.io/merv/runner/install.sh | sh
The installer needs Python 3.11+ and Git. It installs under ~/.merv, starts the runner, and prints an 8-character pairing code such as 7Q2K-M4B9. Rerun it any time to update.
2
Enter the code in the UI
Go to Auto-run and choose Pair a machine. Approving the code registers a project key labelled auto-run · <hostname>, and the runner starts on its next poll.
The Auto-run page before any machine is paired: enter the code the runner printed.
The machine mints its own key and sends only its digest. No browser reaches the machine, no port is forwarded, and nothing is pasted but the code. If you revoke the key later, the runner stops with a re-pair instruction.
3
Enable agents and a repository
On the machine — executables never leave it:
CLI=$HOME/.merv/bin/merv-client$CLI agent codex --enable --command codex --parallelism 2$CLI agent claude --enable --command claude --model opus --effort high$CLI workspace --repository /path/to/repo --strategy git_worktree$CLI harness # installs Merv skills, checks each agent is ready
The same settings are editable in the UI’s machine drawer: enabled, model, effort, and parallelism per platform, plus the repository, worktree root, and base ref. Changes apply on the next heartbeat and show as Settings pending until then.
4
Check
The machine appears under Machines with its agent inventory. Having no agents enabled yet is a valid state.
The brain keeps only what the UI needs: the non-secret heartbeat inventory, the desired tuning per platform, a settings version, and a bounded, redacted excerpt per job — the last events, the tail of stderr, secrets masked.Everything else stays on the machine under ~/.merv/: client.json (executable argv and custom agents), agent-runner.key and agent-runner.secret, agent-sessions.json, and the full traces in agent-traces/<session-id>/.
Native adapters exist for Codex, Claude Code, Gemini CLI, Cursor Agent, OpenCode, GitHub Copilot CLI, Qwen Code, and Hermes Agent. Anything else runs through the command adapter, which reads the instruction on stdin and emits JSONL on stdout. Aider is unsupported because it produces no complete structured trace.Each child process receives only MERV_AGENT_SESSION_KEY; the runner strips its own credentials first. Codex and Claude Code get an isolated MCP configuration, and the others call tools through merv-client call. Because that hides your own plugin from the child, the runner installs the Merv skills itself and links them into each workspace.
Worktrees are required. The runner keeps a private bare repository with no remote — Merv never pushes to yours — and one persistent branch per experiment under ~/.merv/worktrees, reused across sessions. Worktrees prevent Git collisions between agents; they don’t stop a hostile agent from reading another’s files. Use containers or separate OS users for that.
curl -fsSL https://rapidreview.io/merv/runner/install.sh | sh -s -- --install-only
For CI, create a project key under Settings → MCP keys, export it as MERV_MCP_KEY (not through shell history), and start the runner with $HOME/.merv/bin/merv-agent-runner --project proj_123. On a self-hosted brain, point the client at it first: merv-client configure --control-url https://your-brain.example.com.
Machines, live sessions, and where to look when a job stalls.
{"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/guides/auto-run","slug":"/merv/guides/auto-run","pageMetadata":{"title":"Auto-run","description":"Install the runner on any machine, pair it with an 8-character code, and let it dispatch agents from the queue.","href":"/merv/guides/auto-run"},"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: \"Install the runner on any machine, pair it with an 8-character code, and let it dispatch agents from the queue.\"\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={code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{Card,CodeBlock,Columns,Frame,Heading,Info,OptimizedImage,Step,Steps}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Columns)_missingMdxReference(`Columns`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Auto-run runs experiments without you at the keyboard. A paired machine polls the brain, launches your coding agents non-interactively, and mirrors a redacted excerpt of each job so the `,_jsx(_components.strong,{children:`Auto-run`}),` page shows what’s happening. It works on a laptop or a remote box, and it is independent of the agent plugin you use interactively.`]}),`\n`,_jsx(Heading,{level:`2`,id:`install-and-pair`,children:`Install and pair`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Install and start the runner`,children:[_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:`curl`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#569CD6`},children:` -fsSL`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#CE9178`},children:` https://rapidreview.io/merv/runner/install.sh`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#DCDCAA`},children:` sh`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`The installer needs Python 3.11+ and Git. It installs under `,_jsx(_components.code,{children:`~/.merv`}),`, starts the runner, and prints an 8-character pairing code such as `,_jsx(_components.code,{children:`7Q2K-M4B9`}),`. Rerun it any time to update.`]})]}),_jsxs(Step,{title:`Enter the code in the UI`,children:[_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Auto-run`}),` and choose `,_jsx(_components.strong,{children:`Pair a machine`}),`. Approving the code registers a project key labelled `,_jsx(_components.code,{children:`auto-run · \u003chostname>`}),`, and the runner starts on its next poll.`]}),_jsxs(Frame,{caption:`The Auto-run page before any machine is paired: enter the code the runner printed.`,children:[_jsx(OptimizedImage,{className:`mint-block dark:mint-hidden`,src:`https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-light.png?fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=e6771c200270ce6bdc011c2dd8310754`,alt:`The Auto-run page showing the pair-a-machine step`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1000`,height:`1000`,\"data-path\":`images/merv/ui/auto-run-light.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-light.png?w=280\u0026fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=886073350ea29918f1e8968a0f8d05e3 280w, https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-light.png?w=560\u0026fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=316b6dd9c1ffdb7f1f5c47a50aba0612 560w, https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-light.png?w=840\u0026fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=eaf735ccb199cf6bf29685efea4be65d 840w, https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-light.png?w=1100\u0026fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=0b8763d86e0b064697dd7ba49d5ee431 1100w, https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-light.png?w=1650\u0026fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=6d1637b3e63f54ec281cbc15c7ade89f 1650w, https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-light.png?w=2500\u0026fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=42a599741e74dd6e2fc7beebab598e88 2500w`}),_jsx(OptimizedImage,{className:`mint-hidden dark:mint-block`,src:`https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-dark.png?fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=55c066e3c11953737e7095e6d67039ab`,alt:`The Auto-run page showing the pair-a-machine step`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1000`,height:`1000`,\"data-path\":`images/merv/ui/auto-run-dark.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-dark.png?w=280\u0026fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=7aac0807572381891def6696a86aaf38 280w, https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-dark.png?w=560\u0026fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=f1492bdeec0939dd60fc2d1bf2e6c2f3 560w, https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-dark.png?w=840\u0026fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=4c65785ee6b6e57ac493236cfc2a9258 840w, https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-dark.png?w=1100\u0026fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=7ad6268e24e42ee6838a1d32b40a7367 1100w, https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-dark.png?w=1650\u0026fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=73a4578f9b4106c36cca51981eb07fe9 1650w, https://mintcdn.com/rapidreview/P2fa0fqdwIeqtAmW/images/merv/ui/auto-run-dark.png?w=2500\u0026fit=max\u0026auto=format\u0026n=P2fa0fqdwIeqtAmW\u0026q=85\u0026s=6a1195961a51d66c9ae9189f60f9e9f7 2500w`})]}),_jsx(Info,{children:`The machine mints its own key and sends only its digest. No browser reaches the machine, no port is forwarded, and nothing is pasted but the code. If you revoke the key later, the runner stops with a re-pair instruction.`})]}),_jsxs(Step,{title:`Enable agents and a repository`,children:[_jsx(_components.p,{children:`On the machine — executables never leave it:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,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:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#9CDCFE`},children:`CLI`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#9CDCFE`},children:`$HOME`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#CE9178`},children:`/.merv/bin/merv-client`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#9CDCFE`},children:`$CLI`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#D4D4D4`},children:` agent codex --enable --command codex --parallelism 2`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#9CDCFE`},children:`$CLI`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#D4D4D4`},children:` agent claude --enable --command claude --model opus --effort high`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#9CDCFE`},children:`$CLI`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#D4D4D4`},children:` workspace --repository /path/to/repo --strategy git_worktree`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#9CDCFE`},children:`$CLI`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#D4D4D4`},children:` harness `}),_jsx(_components.span,{style:{color:`#6A737D`,\"--shiki-dark\":`#6A9955`},children:`# installs Merv skills, checks each agent is ready`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`The same settings are editable in the UI’s machine drawer: enabled, model, effort, and parallelism per platform, plus the repository, worktree root, and base ref. Changes apply on the next heartbeat and show as `,_jsx(_components.strong,{children:`Settings pending`}),` until then.`]})]}),_jsx(Step,{title:`Check`,children:_jsxs(_components.p,{children:[`The machine appears under `,_jsx(_components.strong,{children:`Machines`}),` with its agent inventory. Having no agents enabled yet is a valid state.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`what-lives-where`,children:`What lives where`}),`\n`,_jsx(_components.p,{children:`The brain keeps only what the UI needs: the non-secret heartbeat inventory, the desired tuning per platform, a settings version, and a bounded, redacted excerpt per job — the last events, the tail of stderr, secrets masked.`}),`\n`,_jsxs(_components.p,{children:[`Everything else stays on the machine under `,_jsx(_components.code,{children:`~/.merv/`}),`: `,_jsx(_components.code,{children:`client.json`}),` (executable argv and custom agents), `,_jsx(_components.code,{children:`agent-runner.key`}),` and `,_jsx(_components.code,{children:`agent-runner.secret`}),`, `,_jsx(_components.code,{children:`agent-sessions.json`}),`, and the full traces in `,_jsx(_components.code,{children:`agent-traces/\u003csession-id>/`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`agents`,children:`Agents`}),`\n`,_jsxs(_components.p,{children:[`Native adapters exist for Codex, Claude Code, Gemini CLI, Cursor Agent, OpenCode, GitHub Copilot CLI, Qwen Code, and Hermes Agent. Anything else runs through the `,_jsx(_components.code,{children:`command`}),` adapter, which reads the instruction on stdin and emits JSONL on stdout. Aider is unsupported because it produces no complete structured trace.`]}),`\n`,_jsxs(_components.p,{children:[`Each child process receives only `,_jsx(_components.code,{children:`MERV_AGENT_SESSION_KEY`}),`; the runner strips its own credentials first. Codex and Claude Code get an isolated MCP configuration, and the others call tools through `,_jsx(_components.code,{children:`merv-client call`}),`. Because that hides your own plugin from the child, the runner installs the Merv skills itself and links them into each workspace.`]}),`\n`,_jsx(Heading,{level:`2`,id:`git-worktrees`,children:`Git worktrees`}),`\n`,_jsxs(_components.p,{children:[`Worktrees are required. The runner keeps a private bare repository with no remote — Merv never pushes to yours — and one persistent branch per experiment under `,_jsx(_components.code,{children:`~/.merv/worktrees`}),`, reused across sessions. Worktrees prevent Git collisions between agents; they don’t stop a hostile agent from reading another’s files. Use containers or separate OS users for that.`]}),`\n`,_jsx(Heading,{level:`2`,id:`scripted-installs`,children:`Scripted installs`}),`\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:`curl`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#569CD6`},children:` -fsSL`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#CE9178`},children:` https://rapidreview.io/merv/runner/install.sh`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#DCDCAA`},children:` sh`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#569CD6`},children:` -s`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#569CD6`},children:` --`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#569CD6`},children:` --install-only`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`For CI, create a project key under `,_jsx(_components.strong,{children:`Settings → MCP keys`}),`, export it as `,_jsx(_components.code,{children:`MERV_MCP_KEY`}),` (not through shell history), and start the runner with `,_jsx(_components.code,{children:`$HOME/.merv/bin/merv-agent-runner --project proj_123`}),`. On a self-hosted brain, point the client at it first: `,_jsx(_components.code,{children:`merv-client configure --control-url https://your-brain.example.com`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(Columns,{cols:2,children:[_jsx(Card,{title:`merv-client CLI`,icon:`terminal`,href:`/merv/reference/cli`,children:`Every runner and client command and flag.`}),_jsx(Card,{title:`Observing agents in the UI`,icon:`eye`,href:`/merv/guides/observing-agents`,children:`Machines, live sessions, and where to look when a job stalls.`})]})]})}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":"Auto-run","description":"Install the runner on any machine, pair it with an 8-character code, and let it dispatch agents from the queue.","href":"/merv/guides/auto-run"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Install and pair","slug":"install-and-pair","depth":2,"children":[]},{"title":"What lives where","slug":"what-lives-where","depth":2,"children":[]},{"title":"Agents","slug":"agents","depth":2,"children":[]},{"title":"Git worktrees","slug":"git-worktrees","depth":2,"children":[]},{"title":"Scripted installs","slug":"scripted-installs","depth":2,"children":[]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"dynamicCss":".mint-block {\n display: block\n}\n.mint-hidden {\n display: none\n}\n.dark\\:mint-block:is(.dark *) {\n display: block\n}\n.dark\\:mint-hidden:is(.dark *) {\n display: none\n}","subdomain":"rapidreview","siteName":"RapidReview","title":"Auto-run - RapidReview","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-17T14:53:34.186Z","originalFileLocation":"merv/guides/auto-run.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=\"Install the runner on any machine, pair it with an 8-character code, and let it dispatch agents from the queue.\">\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=\"Auto-run - RapidReview\">\u003cmeta data-mint-head property=\"og:description\" content=\"Install the runner on any machine, pair it with an 8-character code, and let it dispatch agents from the queue.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"RapidReview\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://rapidreview.io/docs/merv/guides/auto-run\">\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=Guides\u0026amp;title=Auto-run\u0026amp;description=Install+the+runner+on+any+machine%2C+pair+it+with+an+8-character+code%2C+and+let+it+dispatch+agents+from+the+queue.\u0026amp;theme=0cc7d392fc5151f71083bf4a\u0026amp;signature=3294b69e499761d4e6b3efb9969701432579be56ec659121fe4ad535410aad72\">\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=\"Auto-run - RapidReview\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Install the runner on any machine, pair it with an 8-character code, and let it dispatch agents from the queue.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://rapidreview.mintlify.site/docs/_mintlify/api/og/v2?division=Guides\u0026amp;title=Auto-run\u0026amp;description=Install+the+runner+on+any+machine%2C+pair+it+with+an+8-character+code%2C+and+let+it+dispatch+agents+from+the+queue.\u0026amp;theme=0cc7d392fc5151f71083bf4a\u0026amp;signature=3294b69e499761d4e6b3efb9969701432579be56ec659121fe4ad535410aad72\">\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/guides/auto-run\">\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/guides/auto-run.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/guides/auto-run#webpage\",\"url\":\"https://rapidreview.io/docs/merv/guides/auto-run\",\"name\":\"Auto-run\",\"description\":\"Install the runner on any machine, pair it with an 8-character code, and let it dispatch agents from the queue.\",\"dateModified\":\"2026-08-17T14:53:34.186Z\",\"isPartOf\":{\"@id\":\"https://rapidreview.io/docs#website\"},\"breadcrumb\":{\"@id\":\"https://rapidreview.io/docs/merv/guides/auto-run#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://rapidreview.io/docs/merv/guides/auto-run#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://rapidreview.io/docs/merv/guides/running-research\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Auto-run\",\"item\":\"https://rapidreview.io/docs/merv/guides/auto-run\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://rapidreview.io/docs/merv/guides/auto-run#article\",\"headline\":\"Auto-run\",\"name\":\"Auto-run\",\"description\":\"Install the runner on any machine, pair it with an 8-character code, and let it dispatch agents from the queue.\",\"url\":\"https://rapidreview.io/docs/merv/guides/auto-run\",\"mainEntityOfPage\":{\"@id\":\"https://rapidreview.io/docs/merv/guides/auto-run#webpage\"},\"dateModified\":\"2026-08-17T14:53:34.186Z\",\"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/guides/auto-run.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","href":"/merv/concepts/artifacts-and-storage"},{"title":"Sandboxes","href":"/merv/concepts/sandboxes"},{"title":"The Feed","href":"/merv/concepts/feed"},{"title":"Merv and Nisa","href":"/merv/concepts/merv-and-nisa"}]},{"group":"Guides","pages":[{"title":"Running research with Merv","description":"The operating loop from the human's side: what to ask for at each stage, and what the agent does with it.","href":"/merv/guides/running-research"},{"title":"Auto-run","href":"/merv/guides/auto-run"},{"title":"Working with sandboxes","description":"Give the agent a machine on your own cloud account, run long jobs that survive disconnects, and bring the evidence back before the machine goes away.","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":"Auto-run - RapidReview","buildId":"dpl_6PxPD4Fj1JDU9BJxEHvfdUmxKThw","deploymentId":"dpl_6PxPD4Fj1JDU9BJxEHvfdUmxKThw","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-BI-0LlZX.js","DynamicMarkdown-JYyBNlrJ.js","zoom-image-lightbox-hIK1nklX.js","lightbox-handle-r17bVUz3.js"]}