[{"data":1,"prerenderedAt":755},["ShallowReactive",2],{"navigation_docs":3,"-fleet-manage-nodes":320,"-fleet-manage-nodes-surround":750},[4,35,69,109,133,193,228,262,305],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting started",false,"\u002Fgetting-started","1.getting-started",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-ph-house",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart","i-ph-rocket-launch",{"title":21,"path":22,"stem":23,"icon":24},"Concepts","\u002Fgetting-started\u002Fconcepts","1.getting-started\u002F3.concepts","i-ph-book-open",{"title":26,"path":27,"stem":28,"icon":29},"Install","\u002Fgetting-started\u002Finstall","1.getting-started\u002F4.install","i-ph-download-simple",{"title":31,"path":32,"stem":33,"icon":34},"What works today","\u002Fgetting-started\u002Fstatus","1.getting-started\u002F5.status","i-ph-list-checks",{"title":21,"icon":6,"path":36,"stem":37,"children":38,"page":6},"\u002Fconcepts","2.concepts",[39,44,49,54,59,64],{"title":40,"path":41,"stem":42,"icon":43},"Architecture","\u002Fconcepts\u002Farchitecture","2.concepts\u002F1.architecture","i-ph-planet",{"title":45,"path":46,"stem":47,"icon":48},"Jobs and durability","\u002Fconcepts\u002Fjobs","2.concepts\u002F2.jobs","i-ph-infinity",{"title":50,"path":51,"stem":52,"icon":53},"Routing","\u002Fconcepts\u002Frouting","2.concepts\u002F3.routing","i-ph-path",{"title":55,"path":56,"stem":57,"icon":58},"Security model","\u002Fconcepts\u002Fsecurity","2.concepts\u002F4.security","i-ph-shield-check",{"title":60,"path":61,"stem":62,"icon":63},"Tenants","\u002Fconcepts\u002Ftenants","2.concepts\u002F5.tenants","i-ph-buildings",{"title":65,"path":66,"stem":67,"icon":68},"Temporal","\u002Fconcepts\u002Ftemporal","2.concepts\u002F6.temporal","i-ph-clock",{"title":70,"icon":6,"path":71,"stem":72,"children":73,"page":6},"Run a fleet","\u002Ffleet","3.fleet",[74,79,84,89,94,99,104],{"title":75,"path":76,"stem":77,"icon":78},"Dev mode","\u002Ffleet\u002Fdev-mode","3.fleet\u002F1.dev-mode","i-ph-laptop",{"title":80,"path":81,"stem":82,"icon":83},"Run a cluster","\u002Ffleet\u002Fcluster","3.fleet\u002F2.cluster","i-ph-hard-drives",{"title":85,"path":86,"stem":87,"icon":88},"Join nodes","\u002Ffleet\u002Fjoin-nodes","3.fleet\u002F3.join-nodes","i-ph-plugs-connected",{"title":90,"path":91,"stem":92,"icon":93},"Manage nodes","\u002Ffleet\u002Fmanage-nodes","3.fleet\u002F4.manage-nodes","i-ph-list-bullets",{"title":95,"path":96,"stem":97,"icon":98},"Secrets","\u002Ffleet\u002Fsecrets","3.fleet\u002F5.secrets","i-ph-key",{"title":100,"path":101,"stem":102,"icon":103},"High availability","\u002Ffleet\u002Fhigh-availability","3.fleet\u002F6.high-availability","i-ph-copy",{"title":105,"path":106,"stem":107,"icon":108},"Upgrades, backups and restores","\u002Ffleet\u002Fupgrades","3.fleet\u002F7.upgrades","i-ph-arrows-clockwise",{"title":110,"icon":6,"path":111,"stem":112,"children":113,"page":6},"Use plugins","\u002Fplugins","4.plugins",[114,119,124,128],{"title":115,"path":116,"stem":117,"icon":118},"What a plugin is","\u002Fplugins\u002Foverview","4.plugins\u002F1.overview","i-ph-puzzle-piece",{"title":120,"path":121,"stem":122,"icon":123},"Install and update","\u002Fplugins\u002Finstall","4.plugins\u002F2.install","i-ph-package",{"title":125,"path":126,"stem":127,"icon":123},"Existing MCP packages","\u002Fplugins\u002Fpackages","4.plugins\u002F3.packages",{"title":129,"path":130,"stem":131,"icon":132},"The catalog","\u002Fplugins\u002Fcatalog","4.plugins\u002F4.catalog","i-ph-books",{"title":134,"icon":6,"path":135,"stem":136,"children":137,"page":6},"Build plugins","\u002Fbuild-plugins","5.build-plugins",[138,143,148,153,158,163,168,173,178,183,188],{"title":139,"path":140,"stem":141,"icon":142},"Your first plugin","\u002Fbuild-plugins\u002Ffirst-plugin","5.build-plugins\u002F1.first-plugin","i-ph-hammer",{"title":144,"path":145,"stem":146,"icon":147},"Harnesses","\u002Fbuild-plugins\u002Fharnesses","5.build-plugins\u002F10.harnesses","i-ph-cpu",{"title":149,"path":150,"stem":151,"icon":152},"Example: support triage","\u002Fbuild-plugins\u002Fexample-support-triage","5.build-plugins\u002F11.example-support-triage","i-ph-lifebuoy",{"title":154,"path":155,"stem":156,"icon":157},"Tools","\u002Fbuild-plugins\u002Ftools","5.build-plugins\u002F2.tools","i-ph-wrench",{"title":159,"path":160,"stem":161,"icon":162},"Agents","\u002Fbuild-plugins\u002Fagents","5.build-plugins\u002F3.agents","i-ph-robot",{"title":164,"path":165,"stem":166,"icon":167},"Skills","\u002Fbuild-plugins\u002Fskills","5.build-plugins\u002F4.skills","i-ph-graduation-cap",{"title":169,"path":170,"stem":171,"icon":172},"Develop and test","\u002Fbuild-plugins\u002Fdevelop-and-test","5.build-plugins\u002F5.develop-and-test","i-ph-flask",{"title":174,"path":175,"stem":176,"icon":177},"Publish and version","\u002Fbuild-plugins\u002Fpublish","5.build-plugins\u002F6.publish","i-ph-tag",{"title":179,"path":180,"stem":181,"icon":182},"Hooks","\u002Fbuild-plugins\u002Fhooks","5.build-plugins\u002F7.hooks","i-ph-anchor",{"title":184,"path":185,"stem":186,"icon":187},"Flows","\u002Fbuild-plugins\u002Fflows","5.build-plugins\u002F8.flows","i-ph-flow-arrow",{"title":189,"path":190,"stem":191,"icon":192},"Evals and quality gates","\u002Fbuild-plugins\u002Fevals","5.build-plugins\u002F9.evals","i-ph-seal-check",{"title":194,"icon":6,"path":195,"stem":196,"children":197,"page":6},"Run agents","\u002Fagents","6.agents",[198,203,208,213,218,223],{"title":199,"path":200,"stem":201,"icon":202},"Run jobs","\u002Fagents\u002Frun-jobs","6.agents\u002F1.run-jobs","i-ph-play",{"title":204,"path":205,"stem":206,"icon":207},"Models and keys","\u002Fagents\u002Fmodels-and-keys","6.agents\u002F2.models-and-keys","i-ph-sparkle",{"title":209,"path":210,"stem":211,"icon":212},"Delegation","\u002Fagents\u002Fdelegation","6.agents\u002F3.delegation","i-ph-git-fork",{"title":214,"path":215,"stem":216,"icon":217},"Contracts and limits","\u002Fagents\u002Fcontracts-and-limits","6.agents\u002F4.contracts-and-limits","i-ph-ruler",{"title":219,"path":220,"stem":221,"icon":222},"Runtime API","\u002Fagents\u002Fruntime-api","6.agents\u002F5.runtime-api","i-ph-plug",{"title":224,"path":225,"stem":226,"icon":227},"Approvals","\u002Fagents\u002Fapprovals","6.agents\u002F6.approvals","i-ph-hand-palm",{"title":229,"icon":6,"path":230,"stem":231,"children":232,"page":6},"Monitor","\u002Fmonitor","7.monitor",[233,238,243,248,253,258],{"title":234,"path":235,"stem":236,"icon":237},"Web UI","\u002Fmonitor\u002Fweb-ui","7.monitor\u002F0.web-ui","i-ph-monitor",{"title":239,"path":240,"stem":241,"icon":242},"Cost and usage","\u002Fmonitor\u002Fcost-and-usage","7.monitor\u002F1.cost-and-usage","i-ph-coins",{"title":244,"path":245,"stem":246,"icon":247},"Node health","\u002Fmonitor\u002Fnodes","7.monitor\u002F2.nodes","i-ph-heartbeat",{"title":249,"path":250,"stem":251,"icon":252},"Job history","\u002Fmonitor\u002Fhistory","7.monitor\u002F3.history","i-ph-clock-counter-clockwise",{"title":254,"path":255,"stem":256,"icon":257},"Tracing and metrics","\u002Fmonitor\u002Fobservability","7.monitor\u002F4.observability","i-ph-chart-line",{"title":259,"path":260,"stem":261,"icon":152},"Troubleshooting","\u002Fmonitor\u002Ftroubleshooting","7.monitor\u002F5.troubleshooting",{"title":263,"icon":6,"path":264,"stem":265,"children":266,"page":6},"Reference","\u002Freference","8.reference",[267,281,286,290,295,300],{"title":268,"icon":269,"path":270,"stem":271,"children":272,"page":6},"CLI","i-ph-terminal-window","\u002Freference\u002Fcli","8.reference\u002F1.cli",[273,277],{"title":274,"path":275,"stem":276},"orchestrator-zero","\u002Freference\u002Fcli\u002Forchestrator-zero","8.reference\u002F1.cli\u002F1.orchestrator-zero",{"title":278,"path":279,"stem":280},"orchestrator-zero-node","\u002Freference\u002Fcli\u002Forchestrator-zero-node","8.reference\u002F1.cli\u002F2.orchestrator-zero-node",{"title":282,"path":283,"stem":284,"icon":285},"oz0-plugin.yaml","\u002Freference\u002Fplugin-manifest","8.reference\u002F2.plugin-manifest","i-ph-file-code",{"title":287,"path":288,"stem":289,"icon":162},"Agent definition","\u002Freference\u002Fagent-definition","8.reference\u002F3.agent-definition",{"title":291,"path":292,"stem":293,"icon":294},"Ports","\u002Freference\u002Fports","8.reference\u002F4.ports","i-ph-network",{"title":296,"path":297,"stem":298,"icon":299},"Environment variables","\u002Freference\u002Fenvironment","8.reference\u002F5.environment","i-ph-brackets-curly",{"title":301,"path":302,"stem":303,"icon":304},"Files and directories","\u002Freference\u002Ffiles","8.reference\u002F6.files","i-ph-tree-structure",{"title":306,"icon":6,"path":307,"stem":308,"children":309,"page":6},"About","\u002Fabout","9.about",[310,315],{"title":311,"path":312,"stem":313,"icon":314},"Licensing","\u002Fabout\u002Flicensing","9.about\u002F1.licensing","i-ph-scales",{"title":316,"path":317,"stem":318,"icon":319},"About these docs","\u002Fabout\u002Fcontributing-docs","9.about\u002F2.contributing-docs","i-ph-pencil-simple",{"id":321,"title":90,"body":322,"description":743,"extension":744,"links":745,"meta":746,"navigation":747,"path":91,"seo":748,"stem":92,"__hash__":749},"docs\u002F3.fleet\u002F4.manage-nodes.md",{"type":323,"value":324,"toc":735},"minimark",[325,330,409,417,421,491,495,536,539,543,559,565,569,572,591,603,627,637,641,721,731],[326,327,329],"h2",{"id":328},"see-the-fleet","See the fleet",[331,332,338],"pre",{"className":333,"code":334,"filename":335,"language":336,"meta":337,"style":337},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","orchestrator-zero node list                    # every node\norchestrator-zero node list --state pending    # pending, accepted, rejected, blocked or purging\norchestrator-zero node list --tenant acme\norchestrator-zero node show node-7f3a01b2c4d5  # one node in detail\n","Terminal","bash","",[339,340,341,360,378,393],"code",{"__ignoreMap":337},[342,343,346,349,353,356],"span",{"class":344,"line":345},"line",1,[342,347,274],{"class":348},"sBMFI",[342,350,352],{"class":351},"sfazB"," node",[342,354,355],{"class":351}," list",[342,357,359],{"class":358},"sHwdD","                    # every node\n",[342,361,363,365,367,369,372,375],{"class":344,"line":362},2,[342,364,274],{"class":348},[342,366,352],{"class":351},[342,368,355],{"class":351},[342,370,371],{"class":351}," --state",[342,373,374],{"class":351}," pending",[342,376,377],{"class":358},"    # pending, accepted, rejected, blocked or purging\n",[342,379,381,383,385,387,390],{"class":344,"line":380},3,[342,382,274],{"class":348},[342,384,352],{"class":351},[342,386,355],{"class":351},[342,388,389],{"class":351}," --tenant",[342,391,392],{"class":351}," acme\n",[342,394,396,398,400,403,406],{"class":344,"line":395},4,[342,397,274],{"class":348},[342,399,352],{"class":351},[342,401,402],{"class":351}," show",[342,404,405],{"class":351}," node-7f3a01b2c4d5",[342,407,408],{"class":358},"  # one node in detail\n",[410,411,412,413,416],"p",{},"Add ",[339,414,415],{},"--json"," to any of them for scripts.",[326,418,420],{"id":419},"a-nodes-states","A node's states",[422,423,424,437],"table",{},[425,426,427],"thead",{},[428,429,430,434],"tr",{},[431,432,433],"th",{},"State",[431,435,436],{},"Meaning",[438,439,440,451,461,471,481],"tbody",{},[428,441,442,448],{},[443,444,445],"td",{},[339,446,447],{},"pending",[443,449,450],{},"Joined without a token and waiting for an operator",[428,452,453,458],{},[443,454,455],{},[339,456,457],{},"accepted",[443,459,460],{},"Allowed in; it connects and runs work",[428,462,463,468],{},[443,464,465],{},[339,466,467],{},"rejected",[443,469,470],{},"Refused at approval",[428,472,473,478],{},[443,474,475],{},[339,476,477],{},"blocked",[443,479,480],{},"Shut out; it keeps its files and can be unblocked",[428,482,483,488],{},[443,484,485],{},[339,486,487],{},"purging",[443,489,490],{},"Removing itself from its machine on its next control stream, then forgotten",[326,492,494],{"id":493},"block-and-unblock","Block and unblock",[331,496,498],{"className":333,"code":497,"filename":335,"language":336,"meta":337,"style":337},"orchestrator-zero node block node-7f3a01b2c4d5 --reason \"lost laptop\"\norchestrator-zero node unblock node-7f3a01b2c4d5\n",[339,499,500,524],{"__ignoreMap":337},[342,501,502,504,506,509,511,514,518,521],{"class":344,"line":345},[342,503,274],{"class":348},[342,505,352],{"class":351},[342,507,508],{"class":351}," block",[342,510,405],{"class":351},[342,512,513],{"class":351}," --reason",[342,515,517],{"class":516},"sMK4o"," \"",[342,519,520],{"class":351},"lost laptop",[342,522,523],{"class":516},"\"\n",[342,525,526,528,530,533],{"class":344,"line":362},[342,527,274],{"class":348},[342,529,352],{"class":351},[342,531,532],{"class":351}," unblock",[342,534,535],{"class":351}," node-7f3a01b2c4d5\n",[410,537,538],{},"Blocking takes effect within two seconds on every server: the node's control stream closes, its Temporal calls are refused and its runtime stops. Jobs it was running continue on other nodes where they can. The reason goes to the audit log. Unblocking needs nothing on the node; it notices within ten seconds.",[326,540,542],{"id":541},"remove-a-node","Remove a node",[331,544,546],{"className":333,"code":545,"filename":335,"language":336,"meta":337,"style":337},"orchestrator-zero node delete node-7f3a01b2c4d5\n",[339,547,548],{"__ignoreMap":337},[342,549,550,552,554,557],{"class":344,"line":345},[342,551,274],{"class":348},[342,553,352],{"class":351},[342,555,556],{"class":351}," delete",[342,558,535],{"class":351},[410,560,561,564],{},[339,562,563],{},"delete"," forgets the node. Its key may join again, as a new node. The node's files stay on its machine.",[326,566,568],{"id":567},"purge-a-node","Purge a node",[410,570,571],{},"Purging makes a node remove itself from its machine. It cannot be undone:",[331,573,575],{"className":333,"code":574,"filename":335,"language":336,"meta":337,"style":337},"orchestrator-zero node purge node-7f3a01b2c4d5 --yes\n",[339,576,577],{"__ignoreMap":337},[342,578,579,581,583,586,588],{"class":344,"line":345},[342,580,274],{"class":348},[342,582,352],{"class":351},[342,584,585],{"class":351}," purge",[342,587,405],{"class":351},[342,589,590],{"class":351}," --yes\n",[410,592,593,594,598,599,602],{},"In the web UI, it is ",[595,596,597],"strong",{},"Purge"," in a node's ",[595,600,601],{},"Actions",", which asks first.",[604,605,606,610,613,620],"ol",{},[607,608,609],"li",{},"The node stops getting work at once, as a blocked node does.",[607,611,612],{},"On its next control stream it gets a purge command signed with the cluster CA's key. A blocked node gets it too, and an offline node gets it when it comes back.",[607,614,615,616,619],{},"The node checks the signature against the CA certificate it holds, and that the command names its own cluster and ID. A command that fails the check is refused, and the audit log records ",[339,617,618],{},"node.purge.refused",".",[607,621,622,623,626],{},"It answers the edge, which forgets the node (",[339,624,625],{},"node.purged"," in the audit log), and then it stops its runtimes and plugins and deletes its data directory (keys, plugins, runtimes, Python and tools) and its binary.",[410,628,629,630,632,633,636],{},"To join again, the machine must be set up again. The node deletes its data directory only if it holds a node identity, and follows no symbolic links out of it. A node that never comes back stays ",[339,631,487],{},"; ",[339,634,635],{},"node delete"," forgets it.",[326,638,640],{"id":639},"join-tokens","Join tokens",[331,642,644],{"className":333,"code":643,"filename":335,"language":336,"meta":337,"style":337},"orchestrator-zero token create --tenant default --ttl 24h --max-uses 5 --label team=data --description \"data team laptops\"\norchestrator-zero token list\norchestrator-zero token revoke \u003Ctoken-id>\n",[339,645,646,690,699],{"__ignoreMap":337},[342,647,648,650,653,656,658,661,664,667,670,674,677,680,683,685,688],{"class":344,"line":345},[342,649,274],{"class":348},[342,651,652],{"class":351}," token",[342,654,655],{"class":351}," create",[342,657,389],{"class":351},[342,659,660],{"class":351}," default",[342,662,663],{"class":351}," --ttl",[342,665,666],{"class":351}," 24h",[342,668,669],{"class":351}," --max-uses",[342,671,673],{"class":672},"sbssI"," 5",[342,675,676],{"class":351}," --label",[342,678,679],{"class":351}," team=data",[342,681,682],{"class":351}," --description",[342,684,517],{"class":516},[342,686,687],{"class":351},"data team laptops",[342,689,523],{"class":516},[342,691,692,694,696],{"class":344,"line":362},[342,693,274],{"class":348},[342,695,652],{"class":351},[342,697,698],{"class":351}," list\n",[342,700,701,703,705,708,711,714,718],{"class":344,"line":380},[342,702,274],{"class":348},[342,704,652],{"class":351},[342,706,707],{"class":351}," revoke",[342,709,710],{"class":516}," \u003C",[342,712,713],{"class":351},"token-i",[342,715,717],{"class":716},"sTEyZ","d",[342,719,720],{"class":516},">\n",[410,722,723,726,727,730],{},[339,724,725],{},"--ttl 0"," makes a token that never expires and ",[339,728,729],{},"--max-uses 0"," one that can be used any number of times. Revoking a token stops new joins; nodes that already joined with it stay.",[732,733,734],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":337,"searchDepth":362,"depth":362,"links":736},[737,738,739,740,741,742],{"id":328,"depth":362,"text":329},{"id":419,"depth":362,"text":420},{"id":493,"depth":362,"text":494},{"id":541,"depth":362,"text":542},{"id":567,"depth":362,"text":568},{"id":639,"depth":362,"text":640},"List, inspect, accept, block, purge and remove nodes, and manage join tokens.","md",null,{},{"icon":93},{"title":90,"description":743},"zcKPgb-5RYvTVzOdxRGY3X4LrFz6A6ltu9O7cR7zLeA",[751,753],{"title":85,"path":86,"stem":87,"description":752,"icon":88,"children":-1},"Turn any machine into a node, with a join token or by approval.",{"title":95,"path":96,"stem":97,"description":754,"icon":98,"children":-1},"Store provider API keys and other secrets per tenant, sealed with the master key.",1791135409519]