[{"data":1,"prerenderedAt":369},["ShallowReactive",2],{"navigation":3,"\u002Fadministration\u002Frunners":194,"\u002Fadministration\u002Frunners-surround":364},[4,18,31,64,81,102,111,132,149],{"title":5,"path":6,"stem":7,"children":8,"page":17},"Getting started","\u002Fgetting-started","1.getting-started",[9,13],{"title":10,"path":11,"stem":12},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":14,"path":15,"stem":16},"Run your first workflow","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart",false,{"title":19,"path":20,"stem":21,"children":22,"page":17},"Core concepts","\u002Fconcepts","2.concepts",[23,27],{"title":24,"path":25,"stem":26},"The platform model","\u002Fconcepts\u002Fplatform","2.concepts\u002F1.platform",{"title":28,"path":29,"stem":30},"Architecture and boundaries","\u002Fconcepts\u002Farchitecture","2.concepts\u002F2.architecture",{"title":32,"path":33,"stem":34,"children":35,"page":17},"Installation","\u002Finstallation","3.installation",[36,40,44,48,52,56,60],{"title":37,"path":38,"stem":39},"Overview and requirements","\u002Finstallation\u002Foverview","3.installation\u002F1.overview",{"title":41,"path":42,"stem":43},"Local evaluation","\u002Finstallation\u002Flocal-evaluation","3.installation\u002F2.local-evaluation",{"title":45,"path":46,"stem":47},"Install the server","\u002Finstallation\u002Fserver","3.installation\u002F3.server",{"title":49,"path":50,"stem":51},"Install a runner","\u002Finstallation\u002Frunner","3.installation\u002F4.runner",{"title":53,"path":54,"stem":55},"Verify the installation","\u002Finstallation\u002Fverification","3.installation\u002F5.verification",{"title":57,"path":58,"stem":59},"Upgrade the platform","\u002Finstallation\u002Fupgrades","3.installation\u002F6.upgrades",{"title":61,"path":62,"stem":63},"Guided installer","\u002Finstallation\u002Finstaller","3.installation\u002F7.installer",{"title":65,"path":66,"stem":67,"children":68,"page":17},"Build workflows","\u002Fworkflows","4.workflows",[69,73,77],{"title":70,"path":71,"stem":72},"Build a Definition","\u002Fworkflows\u002Fdefinitions","4.workflows\u002F0.definitions",{"title":74,"path":75,"stem":76},"Deploy and run workflows","\u002Fworkflows\u002Fruns","4.workflows\u002F1.runs",{"title":78,"path":79,"stem":80},"Inputs, context, and secrets","\u002Fworkflows\u002Finputs-and-secrets","4.workflows\u002F2.inputs-and-secrets",{"title":82,"path":83,"stem":84,"children":85,"page":17},"Run and recover","\u002Foperations","5.operations",[86,90,94,98],{"title":87,"path":88,"stem":89},"Monitor Runs","\u002Foperations\u002Fmonitoring","5.operations\u002F1.monitoring",{"title":91,"path":92,"stem":93},"Approve prepared steps","\u002Foperations\u002Fapprovals","5.operations\u002F2.approvals",{"title":95,"path":96,"stem":97},"Recover or cancel execution","\u002Foperations\u002Frecovery","5.operations\u002F3.recovery",{"title":99,"path":100,"stem":101},"Troubleshooting","\u002Foperations\u002Ftroubleshooting","5.operations\u002F4.troubleshooting",{"title":103,"path":104,"stem":105,"children":106,"page":17},"Action catalog","\u002Fcatalog","6.catalog",[107],{"title":108,"path":109,"stem":110},"Find and use Actions","\u002Fcatalog\u002Foverview","6.catalog\u002F1.overview",{"title":112,"path":113,"stem":114,"children":115,"page":17},"Administration","\u002Fadministration","7.administration",[116,120,124,128],{"title":117,"path":118,"stem":119},"Registries and Environments","\u002Fadministration\u002Fenvironments","7.administration\u002F2.environments",{"title":121,"path":122,"stem":123},"Manage runners","\u002Fadministration\u002Frunners","7.administration\u002F3.runners",{"title":125,"path":126,"stem":127},"Access and approval policies","\u002Fadministration\u002Faccess","7.administration\u002F4.access",{"title":129,"path":130,"stem":131},"Backups and upgrades","\u002Fadministration\u002Fmaintenance","7.administration\u002F5.maintenance",{"title":133,"path":134,"stem":135,"children":136,"page":17},"Develop Actions","\u002Factions","8.actions",[137,141,145],{"title":138,"path":139,"stem":140},"Build your first Action","\u002Factions\u002Fquickstart","8.actions\u002F1.quickstart",{"title":142,"path":143,"stem":144},"Local development","\u002Factions\u002Flocal-development","8.actions\u002F2.local-development",{"title":146,"path":147,"stem":148},"Publish an Action","\u002Factions\u002Fpublishing","8.actions\u002F3.publishing",{"title":150,"path":151,"stem":152,"children":153,"page":17},"Reference","\u002Freference","9.reference",[154,158,162,166,170,174,178,182,186,190],{"title":155,"path":156,"stem":157},"Operator CLI","\u002Freference\u002Foperator-cli","9.reference\u002F1.operator-cli",{"title":159,"path":160,"stem":161},"Installer CLI","\u002Freference\u002Finstaller-cli","9.reference\u002F10.installer-cli",{"title":163,"path":164,"stem":165},"Definition syntax","\u002Freference\u002Fdefinition","9.reference\u002F2.definition",{"title":167,"path":168,"stem":169},"CLI configuration","\u002Freference\u002Fconfiguration","9.reference\u002F3.configuration",{"title":171,"path":172,"stem":173},"API integration","\u002Freference\u002Fapi","9.reference\u002F4.api",{"title":175,"path":176,"stem":177},"Action CLI","\u002Freference\u002Faction-cli","9.reference\u002F5.action-cli",{"title":179,"path":180,"stem":181},"Action SDK","\u002Freference\u002Fsdk","9.reference\u002F6.sdk",{"title":183,"path":184,"stem":185},"Contracts and compatibility","\u002Freference\u002Fcontracts","9.reference\u002F7.contracts",{"title":187,"path":188,"stem":189},"Server configuration","\u002Freference\u002Fserver-configuration","9.reference\u002F8.server-configuration",{"title":191,"path":192,"stem":193},"Runner configuration","\u002Freference\u002Frunner-configuration","9.reference\u002F9.runner-configuration",{"id":195,"title":121,"body":196,"description":358,"extension":359,"meta":360,"navigation":361,"path":122,"seo":362,"stem":123,"__hash__":363},"docs\u002F7.administration\u002F3.runners.md",{"type":197,"value":198,"toc":351},"minimark",[199,203,208,228,232,238,241,265,284,288,295,299,308,323,333,337,340,347],[200,201,202],"p",{},"Runners execute Actions and retain the state needed to reconcile their invocations. Use the same platform release for the server and runners, with Docker available on each runner host.",[204,205,207],"h2",{"id":206},"choose-a-pool","Choose a pool",[200,209,210,211,215,216,219,220,223,224,227],{},"The initial ",[212,213,214],"code",{},"local"," pool is available for enrollment. To create another pool, an administrator uses ",[212,217,218],{},"POST \u002Fv1\u002Frunner-pools"," with a JSON object such as ",[212,221,222],{},"{\"name\": \"production-amd64\"}",". There is currently no operator CLI command for creating pools; see ",[225,226,171],"a",{"href":172},". Configure the Environment with the same pool name and matching platform.",[204,229,231],{"id":230},"enroll-a-runner","Enroll a runner",[200,233,234,235,237],{},"Use ",[225,236,49],{"href":50}," for Docker preparation, persistent volume mapping, enrollment, and service configuration. When adding capacity, use a new enrollment and a distinct state directory\u002Fwork volume for each identity. Enroll into the pool selected by its Environments.",[200,239,240],{},"Inspect and admit a registered identity from the administrator workstation:",[242,243,249],"pre",{"className":244,"code":245,"filename":246,"language":247,"meta":248,"style":248},"language-sh shiki shiki-themes pyplines-light pyplines-light pyplines-dark","pyplines --json runner list\npyplines runner approve RUNNER_ID\n","Terminal","sh","",[212,250,251,259],{"__ignoreMap":248},[252,253,256],"span",{"class":254,"line":255},"line",1,[252,257,258],{},"pyplines --json runner list\n",[252,260,262],{"class":254,"line":261},2,[252,263,264],{},"pyplines runner approve RUNNER_ID\n",[200,266,267,268,271,272,275,276,279,280,283],{},"Use the ID returned by ",[212,269,270],{},"runner list",". Confirm admission, ",[212,273,274],{},"draining: false",", and advancing ",[212,277,278],{},"last_seen"," timestamps. Automatic admission requires explicitly creating enrollment with ",[212,281,282],{},"--automatic --max-active N","; use it only when automated admission is intended.",[204,285,287],{"id":286},"persist-state-and-configure-docker","Persist state and configure Docker",[200,289,290,291,294],{},"The ",[225,292,293],{"href":192},"runner configuration reference"," documents state, work-volume, network, and Docker settings. Preserve those settings and identity across ordinary restarts. For network-enabled Actions, provision the Environment's configured network on every runner host in its pool.",[204,296,298],{"id":297},"control-admission-and-capacity","Control admission and capacity",[242,300,302],{"className":244,"code":301,"filename":246,"language":247,"meta":248,"style":248},"pyplines runner drain RUNNER_ID\n",[212,303,304],{"__ignoreMap":248},[252,305,306],{"class":254,"line":255},[252,307,301],{},[200,309,310,311,314,315,318,319,322],{},"Drain prevents new work while existing work settles; the runner exits after reconciliation and cleanup. Inspect active Runs before maintenance. The current CLI advertises ",[212,312,313],{},"runner resume",", but the server does not implement that transition. Treat draining as retirement from service: after execution settles, restore capacity with a newly enrolled identity, preserving the old runner state and evidence. ",[212,316,317],{},"reject"," handles an unwanted runner admission; ",[212,320,321],{},"revoke"," withdraws a runner identity. Neither is a substitute for reconciling an uncertain external effect.",[200,324,325,328,329,332],{},[212,326,327],{},"--max-concurrent"," bounds concurrent workload containers on a node. ",[212,330,331],{},"--ephemeral"," drains and retires its identity on graceful shutdown. These settings do not remove the one-attempt-at-a-time rule within an Environment.",[204,334,336],{"id":335},"investigate-connectivity-loss","Investigate connectivity loss",[200,338,339],{},"Check the server HTTPS endpoint, advertised NATS TLS endpoint, CA trust, persistent state, and runner service logs. After server restart, connectivity remains unknown until a heartbeat arrives.",[200,341,342,343,346],{},"Preserve the owning runner's identity and state so it can reconcile execution. There is no automatic reassignment of uncertain work. Follow ",[225,344,345],{"href":96},"recovery guidance"," before replacing a runner with unfinished invocations.",[348,349,350],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":248,"searchDepth":261,"depth":261,"links":352},[353,354,355,356,357],{"id":206,"depth":261,"text":207},{"id":230,"depth":261,"text":231},{"id":286,"depth":261,"text":287},{"id":297,"depth":261,"text":298},{"id":335,"depth":261,"text":336},"Enroll, admit, drain, and inspect Docker execution nodes.","md",{},true,{"title":121,"description":358},"DCjvVRBpMygn2HFS1nmsRF4iALXmlLz4hq5jAWZBRJI",[365,367],{"title":117,"path":118,"stem":119,"description":366,"children":-1},"Connect portable Definitions to images, configuration, and execution capacity.",{"title":125,"path":126,"stem":127,"description":368,"children":-1},"Manage accounts, team roles, and execution requirements.",1792213696752]