[{"data":1,"prerenderedAt":3748},["ShallowReactive",2],{"navigation_docs":3,"docs-page:\u002Fbuild\u002Fplugins\u002Findexes\u002Fmanage":1849,"docs-surround:\u002Fbuild\u002Fplugins\u002Findexes\u002Fmanage":3743},[4,72,214,304,947,1040,1230,1504,1590,1701,1830],{"title":5,"path":6,"stem":7,"children":8,"icon":71},"Get started","\u002Fgetting-started","01.getting-started\u002F00.index",[9,10,15,20,25,36],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","01.getting-started\u002F01.introduction","i-ph-house",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fgetting-started\u002Fquickstart","01.getting-started\u002F02.quickstart","i-ph-rocket-launch",{"title":21,"path":22,"stem":23,"icon":24},"Concepts","\u002Fgetting-started\u002Fconcepts","01.getting-started\u002F03.concepts","i-ph-book-open",{"title":26,"path":27,"stem":28,"children":29,"icon":31},"Install","\u002Fgetting-started\u002Finstall","01.getting-started\u002F04.install\u002F00.index",[30,32],{"title":26,"path":27,"stem":28,"icon":31},"i-ph-download-simple",{"title":33,"path":34,"stem":35},"Prepare the Linux sandbox","\u002Fgetting-started\u002Finstall\u002Flinux-sandbox","01.getting-started\u002F04.install\u002F01.linux-sandbox",{"title":37,"path":38,"stem":39,"children":40,"icon":42},"Web UI","\u002Fgetting-started\u002Fweb-ui","01.getting-started\u002F05.web-ui\u002F00.index",[41,43,47,51,55,59,63,67],{"title":37,"path":38,"stem":39,"icon":42},"i-ph-monitor",{"title":44,"path":45,"stem":46},"Choose a tenant","\u002Fgetting-started\u002Fweb-ui\u002Ftenants","01.getting-started\u002F05.web-ui\u002F01.tenants",{"title":48,"path":49,"stem":50},"Find a page","\u002Fgetting-started\u002Fweb-ui\u002Fnavigation","01.getting-started\u002F05.web-ui\u002F02.navigation",{"title":52,"path":53,"stem":54},"Use the chat drawer","\u002Fgetting-started\u002Fweb-ui\u002Fchats","01.getting-started\u002F05.web-ui\u002F03.chats",{"title":56,"path":57,"stem":58},"Create and edit records","\u002Fgetting-started\u002Fweb-ui\u002Fforms","01.getting-started\u002F05.web-ui\u002F04.forms",{"title":60,"path":61,"stem":62},"Keyboard and accessibility","\u002Fgetting-started\u002Fweb-ui\u002Faccessibility","01.getting-started\u002F05.web-ui\u002F05.accessibility",{"title":64,"path":65,"stem":66},"Accounts and permissions","\u002Fgetting-started\u002Fweb-ui\u002Faccounts","01.getting-started\u002F05.web-ui\u002F06.accounts",{"title":68,"path":69,"stem":70},"Console page directory","\u002Fgetting-started\u002Fweb-ui\u002Fpage-directory","01.getting-started\u002F05.web-ui\u002F07.page-directory",false,{"title":21,"path":73,"stem":74,"children":75,"icon":71},"\u002Fconcepts","02.concepts\u002F00.index",[76,77,82,87,92,123,128,143,166,185,204,209],{"title":21,"path":73,"stem":74},{"title":78,"path":79,"stem":80,"icon":81},"Architecture","\u002Fconcepts\u002Farchitecture","02.concepts\u002F01.architecture","i-ph-planet",{"title":83,"path":84,"stem":85,"icon":86},"Jobs and durability","\u002Fconcepts\u002Fjobs","02.concepts\u002F02.jobs","i-ph-infinity",{"title":88,"path":89,"stem":90,"icon":91},"Routing","\u002Fconcepts\u002Frouting","02.concepts\u002F03.routing","i-ph-path",{"title":93,"path":94,"stem":95,"children":96,"icon":98},"Security model","\u002Fconcepts\u002Fsecurity","02.concepts\u002F04.security\u002F00.index",[97,99,103,107,111,115,119],{"title":93,"path":94,"stem":95,"icon":98},"i-ph-shield-check",{"title":100,"path":101,"stem":102},"Node identity and tenant secrets","\u002Fconcepts\u002Fsecurity\u002Fidentity-and-secrets","02.concepts\u002F04.security\u002F01.identity-and-secrets",{"title":104,"path":105,"stem":106},"Plugin processes and operator exemptions","\u002Fconcepts\u002Fsecurity\u002Fplugins","02.concepts\u002F04.security\u002F02.plugins",{"title":108,"path":109,"stem":110},"Sandbox tiers and routing","\u002Fconcepts\u002Fsecurity\u002Fsandbox-tiers","02.concepts\u002F04.security\u002F03.sandbox-tiers",{"title":112,"path":113,"stem":114},"Sandbox egress rules","\u002Fconcepts\u002Fsecurity\u002Fegress","02.concepts\u002F04.security\u002F04.egress",{"title":116,"path":117,"stem":118},"Protected files and sandbox limits","\u002Fconcepts\u002Fsecurity\u002Fprotected-files","02.concepts\u002F04.security\u002F05.protected-files",{"title":120,"path":121,"stem":122},"Security assurance","\u002Fconcepts\u002Fsecurity\u002Fassurance","02.concepts\u002F04.security\u002F06.assurance",{"title":124,"path":125,"stem":126,"icon":127},"Temporal","\u002Fconcepts\u002Ftemporal","02.concepts\u002F05.temporal","i-ph-clock",{"title":129,"path":130,"stem":131,"children":132,"icon":134},"Limits and scaling","\u002Fconcepts\u002Flimits-and-scaling","02.concepts\u002F06.limits-and-scaling\u002F00.index",[133,135,139],{"title":129,"path":130,"stem":131,"icon":134},"i-ph-gauge",{"title":136,"path":137,"stem":138},"Tenant and queue limits","\u002Fconcepts\u002Flimits-and-scaling\u002Flimits","02.concepts\u002F06.limits-and-scaling\u002F01.limits",{"title":140,"path":141,"stem":142},"Capacity measurements","\u002Fconcepts\u002Flimits-and-scaling\u002Fmeasurements","02.concepts\u002F06.limits-and-scaling\u002F02.measurements",{"title":144,"path":145,"stem":146,"children":147,"icon":149},"Threat model","\u002Fconcepts\u002Fthreat-model","02.concepts\u002F07.threat-model\u002F00.index",[148,150,154,158,162],{"title":144,"path":145,"stem":146,"icon":149},"i-ph-crosshair",{"title":151,"path":152,"stem":153},"Trust boundaries and compromise","\u002Fconcepts\u002Fthreat-model\u002Ftrust-boundaries","02.concepts\u002F07.threat-model\u002F01.trust-boundaries",{"title":155,"path":156,"stem":157},"Harness and tool boundaries","\u002Fconcepts\u002Fthreat-model\u002Fharness-tools","02.concepts\u002F07.threat-model\u002F02.harness-tools",{"title":159,"path":160,"stem":161},"Known security gaps","\u002Fconcepts\u002Fthreat-model\u002Fknown-gaps","02.concepts\u002F07.threat-model\u002F03.known-gaps",{"title":163,"path":164,"stem":165},"Origins, sequences and tool results","\u002Fconcepts\u002Fthreat-model\u002Forigins-and-results","02.concepts\u002F07.threat-model\u002F04.origins-and-results",{"title":167,"path":168,"stem":169,"children":170,"icon":172},"Outbound connections","\u002Fconcepts\u002Foutbound-connections","02.concepts\u002F08.outbound-connections\u002F00.index",[171,173,177,181],{"title":167,"path":168,"stem":169,"icon":172},"i-ph-arrow-square-out",{"title":174,"path":175,"stem":176},"Server outbound connections","\u002Fconcepts\u002Foutbound-connections\u002Fserver","02.concepts\u002F08.outbound-connections\u002F01.server",{"title":178,"path":179,"stem":180},"Node and plugin outbound connections","\u002Fconcepts\u002Foutbound-connections\u002Fnodes-and-plugins","02.concepts\u002F08.outbound-connections\u002F02.nodes-and-plugins",{"title":182,"path":183,"stem":184},"Addresses a model provider fetches","\u002Fconcepts\u002Foutbound-connections\u002Fprovider-fetches","02.concepts\u002F08.outbound-connections\u002F03.provider-fetches",{"title":186,"path":187,"stem":188,"children":189,"icon":191},"Run receipts","\u002Fconcepts\u002Frun-receipts","02.concepts\u002F09.run-receipts\u002F00.index",[190,192,196,200],{"title":186,"path":187,"stem":188,"icon":191},"i-ph-receipt",{"title":193,"path":194,"stem":195},"Authority envelopes and delegation","\u002Fconcepts\u002Frun-receipts\u002Fauthority","02.concepts\u002F09.run-receipts\u002F01.authority",{"title":197,"path":198,"stem":199},"Call bindings and budget charges","\u002Fconcepts\u002Frun-receipts\u002Fcalls-and-charges","02.concepts\u002F09.run-receipts\u002F02.calls-and-charges",{"title":201,"path":202,"stem":203},"Verify run receipts offline","\u002Fconcepts\u002Frun-receipts\u002Fverify","02.concepts\u002F09.run-receipts\u002F03.verify",{"title":205,"path":206,"stem":207,"icon":208},"Delegation and identity","\u002Fconcepts\u002Fdelegation-and-identity","02.concepts\u002F10.delegation-and-identity","i-ph-identification-badge",{"title":210,"path":211,"stem":212,"icon":213},"How a tool call is decided","\u002Fconcepts\u002Fhow-a-tool-call-is-decided","02.concepts\u002F11.how-a-tool-call-is-decided","i-ph-list-checks",{"title":215,"path":216,"stem":217,"children":218,"icon":71},"Run","\u002Fagents","03.agents\u002F00.index",[219,221,226,231,236,240,245,250,268,299],{"title":220,"path":216,"stem":217},"Run agents",{"title":222,"path":223,"stem":224,"icon":225},"Run jobs","\u002Fagents\u002Frun-jobs","03.agents\u002F01.run-jobs","i-ph-play",{"title":227,"path":228,"stem":229,"icon":230},"Job history","\u002Fagents\u002Fhistory","03.agents\u002F02.history","i-ph-clock-counter-clockwise",{"title":232,"path":233,"stem":234,"icon":235},"Long jobs","\u002Fagents\u002Flong-jobs","03.agents\u002F03.long-jobs","i-ph-hourglass-medium",{"title":237,"path":238,"stem":239,"icon":235},"Waiting for events","\u002Fagents\u002Fwaiting-for-events","03.agents\u002F04.waiting-for-events",{"title":241,"path":242,"stem":243,"icon":244},"Delegation","\u002Fagents\u002Fdelegation","03.agents\u002F05.delegation","i-ph-git-fork",{"title":246,"path":247,"stem":248,"icon":249},"Colleagues and the board","\u002Fagents\u002Fcolleagues","03.agents\u002F06.colleagues","i-ph-chats-circle",{"title":251,"path":252,"stem":253,"children":254,"icon":249},"Conversations","\u002Fagents\u002Fconversations","03.agents\u002F07.conversations\u002F00.index",[255,256,260,264],{"title":251,"path":252,"stem":253,"icon":249},{"title":257,"path":258,"stem":259},"Conversation access and history","\u002Fagents\u002Fconversations\u002Faccess-and-history","03.agents\u002F07.conversations\u002F02.access-and-history",{"title":261,"path":262,"stem":263},"Use conversations from an app","\u002Fagents\u002Fconversations\u002Fapps","03.agents\u002F07.conversations\u002F03.apps",{"title":265,"path":266,"stem":267},"Hand off a conversation and use Ask","\u002Fagents\u002Fconversations\u002Fhandoffs-and-ask","03.agents\u002F07.conversations\u002F04.handoffs-and-ask",{"title":269,"path":270,"stem":271,"children":272,"icon":274},"Decide an approval","\u002Fagents\u002Fapprovals","03.agents\u002F08.approvals\u002F00.index",[273,275,279,283,287,291,295],{"title":269,"path":270,"stem":271,"icon":274},"i-ph-hand-palm",{"title":276,"path":277,"stem":278},"Configure approval ownership and deadlines","\u002Fagents\u002Fapprovals\u002Fconfigure","03.agents\u002F08.approvals\u002F02.configure",{"title":280,"path":281,"stem":282},"How approval decisions bind a call","\u002Fagents\u002Fapprovals\u002Fsecurity","03.agents\u002F08.approvals\u002F03.security",{"title":284,"path":285,"stem":286},"Edit an approval or allow repeated calls","\u002Fagents\u002Fapprovals\u002Fedits-and-repeat-calls","03.agents\u002F08.approvals\u002F04.edits-and-repeat-calls",{"title":288,"path":289,"stem":290},"Resolve loop, budget and recovery waits","\u002Fagents\u002Fapprovals\u002Frecovery","03.agents\u002F08.approvals\u002F05.recovery",{"title":292,"path":293,"stem":294},"Review approval statistics and test cards","\u002Fagents\u002Fapprovals\u002Fstatistics","03.agents\u002F08.approvals\u002F06.statistics",{"title":296,"path":297,"stem":298},"Decide approvals from an app","\u002Fagents\u002Fapprovals\u002Fapps","03.agents\u002F08.approvals\u002F07.apps",{"title":300,"path":301,"stem":302,"icon":303},"Asking people","\u002Fagents\u002Fasking-people","03.agents\u002F09.asking-people","i-ph-chat-circle-dots",{"title":305,"path":306,"stem":307,"children":308,"icon":71},"Build","\u002Fbuild","04.build\u002F00.index",[309,310,655,844],{"title":305,"path":306,"stem":307},{"title":311,"path":312,"stem":313,"children":314,"icon":71},"Plugins","\u002Fbuild\u002Fplugins","04.build\u002F01.plugins\u002F00.index",[315,316,321,352,357,362,367,378,397,412,417,422,427,442,447,452,457,472,476,481,492,497,502,640],{"title":311,"path":312,"stem":313},{"title":317,"path":318,"stem":319,"icon":320},"What a plugin is","\u002Fbuild\u002Fplugins\u002Foverview","04.build\u002F01.plugins\u002F01.overview","i-ph-puzzle-piece",{"title":322,"path":323,"stem":324,"children":325,"icon":327},"Install a plugin","\u002Fbuild\u002Fplugins\u002Finstall","04.build\u002F01.plugins\u002F02.install\u002F00.index",[326,328,332,336,340,344,348],{"title":322,"path":323,"stem":324,"icon":327},"i-ph-package",{"title":329,"path":330,"stem":331,"icon":327},"Review an install","\u002Fbuild\u002Fplugins\u002Finstall\u002Freview","04.build\u002F01.plugins\u002F02.install\u002F01.review",{"title":333,"path":334,"stem":335,"icon":327},"Install from a source","\u002Fbuild\u002Fplugins\u002Finstall\u002Fsources","04.build\u002F01.plugins\u002F02.install\u002F02.sources",{"title":337,"path":338,"stem":339,"icon":327},"Update a plugin","\u002Fbuild\u002Fplugins\u002Finstall\u002Fupdate","04.build\u002F01.plugins\u002F02.install\u002F03.update",{"title":341,"path":342,"stem":343,"icon":327},"Roll out a plugin","\u002Fbuild\u002Fplugins\u002Finstall\u002Frollouts","04.build\u002F01.plugins\u002F02.install\u002F04.rollouts",{"title":345,"path":346,"stem":347,"icon":327},"Grant access between plugins","\u002Fbuild\u002Fplugins\u002Finstall\u002Fgrants","04.build\u002F01.plugins\u002F02.install\u002F05.grants",{"title":349,"path":350,"stem":351,"icon":327},"Retire or remove a plugin","\u002Fbuild\u002Fplugins\u002Finstall\u002Fretire-and-remove","04.build\u002F01.plugins\u002F02.install\u002F06.retire-and-remove",{"title":353,"path":354,"stem":355,"icon":356},"Configure an installed plugin","\u002Fbuild\u002Fplugins\u002Fconfigure","04.build\u002F01.plugins\u002F03.configure","i-ph-sliders-horizontal",{"title":358,"path":359,"stem":360,"icon":361},"Sets","\u002Fbuild\u002Fplugins\u002Fsets","04.build\u002F01.plugins\u002F04.sets","i-ph-stack",{"title":363,"path":364,"stem":365,"icon":366},"Your first plugin","\u002Fbuild\u002Fplugins\u002Ffirst-plugin","04.build\u002F01.plugins\u002F05.first-plugin","i-ph-hammer",{"title":368,"path":369,"stem":370,"children":371,"icon":373},"Structure a plugin","\u002Fbuild\u002Fplugins\u002Fstructure","04.build\u002F01.plugins\u002F06.structure\u002F00.index",[372,374],{"title":368,"path":369,"stem":370,"icon":373},"i-ph-tree-structure",{"title":375,"path":376,"stem":377,"icon":373},"Plugin structure rules","\u002Fbuild\u002Fplugins\u002Fstructure\u002Flint-rules","04.build\u002F01.plugins\u002F06.structure\u002F01.lint-rules",{"title":379,"path":380,"stem":381,"children":382,"icon":384},"Develop a plugin","\u002Fbuild\u002Fplugins\u002Fdevelop-and-test","04.build\u002F01.plugins\u002F07.develop-and-test\u002F00.index",[383,385,389,393],{"title":379,"path":380,"stem":381,"icon":384},"i-ph-flask",{"title":386,"path":387,"stem":388,"icon":384},"Check a plugin candidate","\u002Fbuild\u002Fplugins\u002Fdevelop-and-test\u002Fcandidate-checks","04.build\u002F01.plugins\u002F07.develop-and-test\u002F01.candidate-checks",{"title":390,"path":391,"stem":392,"icon":384},"Lint and test a plugin","\u002Fbuild\u002Fplugins\u002Fdevelop-and-test\u002Flint-and-tests","04.build\u002F01.plugins\u002F07.develop-and-test\u002F02.lint-and-tests",{"title":394,"path":395,"stem":396,"icon":384},"Run failure drills","\u002Fbuild\u002Fplugins\u002Fdevelop-and-test\u002Ftests-and-drills","04.build\u002F01.plugins\u002F07.develop-and-test\u002F03.tests-and-drills",{"title":398,"path":399,"stem":400,"children":401,"icon":403},"Build in Studio","\u002Fbuild\u002Fplugins\u002Fstudio","04.build\u002F01.plugins\u002F08.studio\u002F00.index",[402,404,408],{"title":398,"path":399,"stem":400,"icon":403},"i-ph-code",{"title":405,"path":406,"stem":407,"icon":403},"Test and explain a draft","\u002Fbuild\u002Fplugins\u002Fstudio\u002Ftest-and-explain","04.build\u002F01.plugins\u002F08.studio\u002F01.test-and-explain",{"title":409,"path":410,"stem":411,"icon":403},"Release a workspace plugin","\u002Fbuild\u002Fplugins\u002Fstudio\u002Frelease","04.build\u002F01.plugins\u002F08.studio\u002F02.release",{"title":413,"path":414,"stem":415,"icon":416},"The build kit","\u002Fbuild\u002Fplugins\u002Fclaude-code","04.build\u002F01.plugins\u002F09.claude-code","i-ph-sparkle",{"title":418,"path":419,"stem":420,"icon":421},"Example: support triage","\u002Fbuild\u002Fplugins\u002Fexample-support-triage","04.build\u002F01.plugins\u002F10.example-support-triage","i-ph-lifebuoy",{"title":423,"path":424,"stem":425,"icon":426},"Publish and version","\u002Fbuild\u002Fplugins\u002Fpublish","04.build\u002F01.plugins\u002F11.publish","i-ph-tag",{"title":428,"path":429,"stem":430,"children":431,"icon":433},"List a plugin","\u002Fbuild\u002Fplugins\u002Flist-a-plugin","04.build\u002F01.plugins\u002F12.list-a-plugin\u002F00.index",[432,434,438],{"title":428,"path":429,"stem":430,"icon":433},"i-ph-storefront",{"title":435,"path":436,"stem":437,"icon":433},"Hub review checks","\u002Fbuild\u002Fplugins\u002Flist-a-plugin\u002Freview","04.build\u002F01.plugins\u002F12.list-a-plugin\u002F01.review",{"title":439,"path":440,"stem":441,"icon":433},"Maintain a listing","\u002Fbuild\u002Fplugins\u002Flist-a-plugin\u002Fmaintain","04.build\u002F01.plugins\u002F12.list-a-plugin\u002F02.maintain",{"title":443,"path":444,"stem":445,"icon":446},"The catalog","\u002Fbuild\u002Fplugins\u002Fcatalog","04.build\u002F01.plugins\u002F13.catalog","i-ph-books",{"title":448,"path":449,"stem":450,"icon":451},"Folders, bundles and OCI","\u002Fbuild\u002Fplugins\u002Fsources","04.build\u002F01.plugins\u002F14.sources","i-ph-archive",{"title":453,"path":454,"stem":455,"icon":456},"The workspace","\u002Fbuild\u002Fplugins\u002Fworkspace","04.build\u002F01.plugins\u002F15.workspace","i-ph-folder-notch-open",{"title":458,"path":459,"stem":460,"children":461,"icon":463},"Use a plugin index","\u002Fbuild\u002Fplugins\u002Findexes","04.build\u002F01.plugins\u002F16.indexes\u002F00.index",[462,464,468],{"title":458,"path":459,"stem":460,"icon":463},"i-ph-seal-check",{"title":465,"path":466,"stem":467,"icon":463},"Read index version records","\u002Fbuild\u002Fplugins\u002Findexes\u002Fversion-records","04.build\u002F01.plugins\u002F16.indexes\u002F01.version-records",{"title":469,"path":470,"stem":471,"icon":463},"Manage plugin indexes","\u002Fbuild\u002Fplugins\u002Findexes\u002Fmanage","04.build\u002F01.plugins\u002F16.indexes\u002F02.manage",{"title":473,"path":474,"stem":475,"icon":327},"Existing MCP packages","\u002Fbuild\u002Fplugins\u002Fpackages","04.build\u002F01.plugins\u002F17.packages",{"title":477,"path":478,"stem":479,"icon":480},"MCP servers from container images","\u002Fbuild\u002Fplugins\u002Fcontainer-images","04.build\u002F01.plugins\u002F18.container-images","i-ph-cube",{"title":482,"path":483,"stem":484,"children":485,"icon":487},"Import agent plugins","\u002Fbuild\u002Fplugins\u002Fclaude-code-and-agent-plugins","04.build\u002F01.plugins\u002F19.claude-code-and-agent-plugins\u002F00.index",[486,488],{"title":482,"path":483,"stem":484,"icon":487},"i-ph-arrow-square-in",{"title":489,"path":490,"stem":491,"icon":487},"Import from registries","\u002Fbuild\u002Fplugins\u002Fclaude-code-and-agent-plugins\u002Fmarketplaces","04.build\u002F01.plugins\u002F19.claude-code-and-agent-plugins\u002F01.marketplaces",{"title":493,"path":494,"stem":495,"icon":496},"GitHub","\u002Fbuild\u002Fplugins\u002Fgithub","04.build\u002F01.plugins\u002F20.github","i-ph-github-logo",{"title":498,"path":499,"stem":500,"icon":501},"Known vulnerabilities","\u002Fbuild\u002Fplugins\u002Fvulnerabilities","04.build\u002F01.plugins\u002F21.vulnerabilities","i-ph-shield-warning",{"title":503,"path":504,"stem":505,"children":506,"icon":71},"Verified plugins","\u002Fbuild\u002Fplugins\u002Fverified","04.build\u002F01.plugins\u002F22.verified\u002F01.index",[507,508,513,518,523,528,533,538,543,548,553,558,580,585,589,594,599,604,608,612,617,622,626],{"title":503,"path":504,"stem":505,"icon":463},{"title":509,"path":510,"stem":511,"icon":512},"ai.oz0\u002Fweb","\u002Fbuild\u002Fplugins\u002Fverified\u002Fweb","04.build\u002F01.plugins\u002F22.verified\u002F02.web","i-ph-globe",{"title":514,"path":515,"stem":516,"icon":517},"ai.oz0\u002Fnet-diag","\u002Fbuild\u002Fplugins\u002Fverified\u002Fnet-diag","04.build\u002F01.plugins\u002F22.verified\u002F03.net-diag","i-ph-network",{"title":519,"path":520,"stem":521,"icon":522},"ai.oz0\u002Fcve-triage","\u002Fbuild\u002Fplugins\u002Fverified\u002Fcve-triage","04.build\u002F01.plugins\u002F22.verified\u002F04.cve-triage","i-ph-bug",{"title":524,"path":525,"stem":526,"icon":527},"ai.oz0\u002Fhost-health","\u002Fbuild\u002Fplugins\u002Fverified\u002Fhost-health","04.build\u002F01.plugins\u002F22.verified\u002F05.host-health","i-ph-heartbeat",{"title":529,"path":530,"stem":531,"icon":532},"ai.oz0\u002Fpr-reviewer","\u002Fbuild\u002Fplugins\u002Fverified\u002Fpr-reviewer","04.build\u002F01.plugins\u002F22.verified\u002F06.pr-reviewer","i-ph-git-pull-request",{"title":534,"path":535,"stem":536,"icon":537},"Slack","\u002Fbuild\u002Fplugins\u002Fverified\u002Fslack","04.build\u002F01.plugins\u002F22.verified\u002F07.slack","i-ph-slack-logo",{"title":539,"path":540,"stem":541,"icon":542},"Discord","\u002Fbuild\u002Fplugins\u002Fverified\u002Fdiscord","04.build\u002F01.plugins\u002F22.verified\u002F08.discord","i-ph-discord-logo",{"title":544,"path":545,"stem":546,"icon":547},"Microsoft Teams","\u002Fbuild\u002Fplugins\u002Fverified\u002Fteams","04.build\u002F01.plugins\u002F22.verified\u002F09.teams","i-ph-microsoft-teams-logo",{"title":549,"path":550,"stem":551,"icon":552},"ai.oz0\u002Fai-spend","\u002Fbuild\u002Fplugins\u002Fverified\u002Fai-spend","04.build\u002F01.plugins\u002F22.verified\u002F10.ai-spend","i-ph-coins",{"title":554,"path":555,"stem":556,"icon":557},"ai.oz0\u002Fa2a-remote","\u002Fbuild\u002Fplugins\u002Fverified\u002Fa2a-remote","04.build\u002F01.plugins\u002F22.verified\u002F11.a2a-remote","i-ph-arrows-left-right",{"title":559,"path":560,"stem":561,"children":562,"icon":98},"Guardrails","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F00.index",[563,564,568,572,576],{"title":559,"path":560,"stem":561,"icon":98},{"title":565,"path":566,"stem":567,"icon":98},"Configure guardrails","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails\u002Fsettings","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F01.settings",{"title":569,"path":570,"stem":571,"icon":98},"Check classified text","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails\u002Fclassified-text","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F02.classified-text",{"title":573,"path":574,"stem":575,"icon":98},"Check shell commands","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails\u002Fcommands","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F03.commands",{"title":577,"path":578,"stem":579,"icon":98},"Guardrail coverage and limits","\u002Fbuild\u002Fplugins\u002Fverified\u002Fguardrails\u002Fintent-and-limits","04.build\u002F01.plugins\u002F22.verified\u002F12.guardrails\u002F04.intent-and-limits",{"title":581,"path":582,"stem":583,"icon":584},"ai.oz0\u002Fmemory","\u002Fbuild\u002Fplugins\u002Fverified\u002Fmemory","04.build\u002F01.plugins\u002F22.verified\u002F13.memory","i-ph-brain",{"title":586,"path":587,"stem":588,"icon":416},"ai.oz0\u002Fsetup-assistant","\u002Fbuild\u002Fplugins\u002Fverified\u002Fsetup-assistant","04.build\u002F01.plugins\u002F22.verified\u002F14.setup-assistant",{"title":590,"path":591,"stem":592,"icon":593},"ai.oz0\u002Fpublic-access","\u002Fbuild\u002Fplugins\u002Fverified\u002Fpublic-access","04.build\u002F01.plugins\u002F22.verified\u002F15.public-access","i-ph-files",{"title":595,"path":596,"stem":597,"icon":598},"ai.oz0\u002Femail","\u002Fbuild\u002Fplugins\u002Fverified\u002Femail","04.build\u002F01.plugins\u002F22.verified\u002F16.email","i-ph-envelope-simple",{"title":600,"path":601,"stem":602,"icon":603},"Atlassian Cloud","\u002Fbuild\u002Fplugins\u002Fverified\u002Fatlassian","04.build\u002F01.plugins\u002F22.verified\u002F17.atlassian","i-ph-kanban",{"title":605,"path":606,"stem":607,"icon":603},"Atlassian Data Center","\u002Fbuild\u002Fplugins\u002Fverified\u002Fatlassian-dc","04.build\u002F01.plugins\u002F22.verified\u002F18.atlassian-dc",{"title":609,"path":610,"stem":611,"icon":421},"ServiceNow","\u002Fbuild\u002Fplugins\u002Fverified\u002Fservicenow","04.build\u002F01.plugins\u002F22.verified\u002F19.servicenow",{"title":613,"path":614,"stem":615,"icon":616},"GitLab","\u002Fbuild\u002Fplugins\u002Fverified\u002Fgitlab","04.build\u002F01.plugins\u002F22.verified\u002F20.gitlab","i-ph-git-merge",{"title":618,"path":619,"stem":620,"icon":621},"Support triage","\u002Fbuild\u002Fplugins\u002Fverified\u002Fsupport-triage","04.build\u002F01.plugins\u002F22.verified\u002F21.support-triage","i-ph-ticket",{"title":623,"path":624,"stem":625,"icon":361},"Essentials","\u002Fbuild\u002Fplugins\u002Fverified\u002Fessentials","04.build\u002F01.plugins\u002F22.verified\u002F22.essentials",{"title":627,"path":628,"stem":629,"children":630,"icon":532},"Plugin improver","\u002Fbuild\u002Fplugins\u002Fverified\u002Fplugin-improver","04.build\u002F01.plugins\u002F22.verified\u002F23.plugin-improver\u002F00.index",[631,632,636],{"title":627,"path":628,"stem":629,"icon":532},{"title":633,"path":634,"stem":635,"icon":532},"How an improvement runs","\u002Fbuild\u002Fplugins\u002Fverified\u002Fplugin-improver\u002Fjob-lifecycle","04.build\u002F01.plugins\u002F22.verified\u002F23.plugin-improver\u002F01.job-lifecycle",{"title":637,"path":638,"stem":639,"icon":532},"Improver limits and records","\u002Fbuild\u002Fplugins\u002Fverified\u002Fplugin-improver\u002Flimits-and-records","04.build\u002F01.plugins\u002F22.verified\u002F23.plugin-improver\u002F02.limits-and-records",{"title":641,"path":642,"stem":643,"children":644,"icon":646},"Plugin size limits","\u002Fbuild\u002Fplugins\u002Flimits","04.build\u002F01.plugins\u002F23.limits\u002F00.index",[645,647,651],{"title":641,"path":642,"stem":643,"icon":646},"i-ph-ruler",{"title":648,"path":649,"stem":650,"icon":646},"Documentation limits","\u002Fbuild\u002Fplugins\u002Flimits\u002Fdocumentation","04.build\u002F01.plugins\u002F23.limits\u002F01.documentation",{"title":652,"path":653,"stem":654,"icon":646},"Artifact and index limits","\u002Fbuild\u002Fplugins\u002Flimits\u002Fartifacts","04.build\u002F01.plugins\u002F23.limits\u002F02.artifacts",{"title":656,"path":657,"stem":658,"children":659,"icon":71},"Parts","\u002Fbuild\u002Fparts","04.build\u002F02.parts\u002F00.index",[660,662,667,672,690,721,726,730,741,756,761,776,791,814,818,823,828,839],{"title":661,"path":657,"stem":658},"Plugin parts",{"title":663,"path":664,"stem":665,"icon":666},"Agents","\u002Fbuild\u002Fparts\u002Fagents","04.build\u002F02.parts\u002F01.agents","i-ph-robot",{"title":668,"path":669,"stem":670,"icon":671},"What an agent combines","\u002Fbuild\u002Fparts\u002Fwhat-an-agent-combines","04.build\u002F02.parts\u002F02.what-an-agent-combines","i-ph-intersect-three",{"title":673,"path":674,"stem":675,"children":676,"icon":646},"Agent contracts","\u002Fbuild\u002Fparts\u002Fcontracts-and-limits","04.build\u002F02.parts\u002F03.contracts-and-limits\u002F00.index",[677,678,682,686],{"title":673,"path":674,"stem":675,"icon":646},{"title":679,"path":680,"stem":681,"icon":646},"Agent failure kinds","\u002Fbuild\u002Fparts\u002Fcontracts-and-limits\u002Ffailures","04.build\u002F02.parts\u002F03.contracts-and-limits\u002F01.failures",{"title":683,"path":684,"stem":685,"icon":646},"Agent limits","\u002Fbuild\u002Fparts\u002Fcontracts-and-limits\u002Flimits","04.build\u002F02.parts\u002F03.contracts-and-limits\u002F02.limits",{"title":687,"path":688,"stem":689,"icon":646},"Agent budgets","\u002Fbuild\u002Fparts\u002Fcontracts-and-limits\u002Fbudgets","04.build\u002F02.parts\u002F03.contracts-and-limits\u002F03.budgets",{"title":691,"path":692,"stem":693,"children":694,"icon":696},"Write a tool","\u002Fbuild\u002Fparts\u002Ftools","04.build\u002F02.parts\u002F04.tools\u002F00.index",[695,697,701,705,709,713,717],{"title":691,"path":692,"stem":693,"icon":696},"i-ph-wrench",{"title":698,"path":699,"stem":700,"icon":696},"Describe tool functions","\u002Fbuild\u002Fparts\u002Ftools\u002Fdefinitions","04.build\u002F02.parts\u002F04.tools\u002F01.definitions",{"title":702,"path":703,"stem":704,"icon":696},"Return results and files","\u002Fbuild\u002Fparts\u002Ftools\u002Fresults-and-files","04.build\u002F02.parts\u002F04.tools\u002F02.results-and-files",{"title":706,"path":707,"stem":708,"icon":696},"Handle tool call lifecycle","\u002Fbuild\u002Fparts\u002Ftools\u002Fcall-lifecycle","04.build\u002F02.parts\u002F04.tools\u002F03.call-lifecycle",{"title":710,"path":711,"stem":712,"icon":696},"Pin tool definitions","\u002Fbuild\u002Fparts\u002Ftools\u002Fsnapshots","04.build\u002F02.parts\u002F04.tools\u002F04.snapshots",{"title":714,"path":715,"stem":716,"icon":696},"Call a model from a tool","\u002Fbuild\u002Fparts\u002Ftools\u002Fmodel-calls","04.build\u002F02.parts\u002F04.tools\u002F05.model-calls",{"title":718,"path":719,"stem":720,"icon":696},"Tool labels and approvals","\u002Fbuild\u002Fparts\u002Ftools\u002Fpolicy","04.build\u002F02.parts\u002F04.tools\u002F06.policy",{"title":722,"path":723,"stem":724,"icon":725},"TypeScript tools","\u002Fbuild\u002Fparts\u002Ftypescript-tools","04.build\u002F02.parts\u002F05.typescript-tools","i-ph-file-code",{"title":727,"path":728,"stem":729,"icon":725},"Import an OpenAPI document","\u002Fbuild\u002Fparts\u002Fopenapi-import","04.build\u002F02.parts\u002F06.openapi-import",{"title":731,"path":732,"stem":733,"children":734,"icon":736},"Write and load skills","\u002Fbuild\u002Fparts\u002Fskills","04.build\u002F02.parts\u002F07.skills\u002F00.index",[735,737],{"title":731,"path":732,"stem":733,"icon":736},"i-ph-graduation-cap",{"title":738,"path":739,"stem":740,"icon":736},"Review skill use and proposals","\u002Fbuild\u002Fparts\u002Fskills\u002Fusage-and-proposals","04.build\u002F02.parts\u002F07.skills\u002F01.usage-and-proposals",{"title":742,"path":743,"stem":744,"children":745,"icon":747},"Write a flow","\u002Fbuild\u002Fparts\u002Fflows","04.build\u002F02.parts\u002F08.flows\u002F00.index",[746,748,752],{"title":742,"path":743,"stem":744,"icon":747},"i-ph-flow-arrow",{"title":749,"path":750,"stem":751,"icon":747},"Flow steps and expressions","\u002Fbuild\u002Fparts\u002Fflows\u002Fsteps-and-expressions","04.build\u002F02.parts\u002F08.flows\u002F01.steps-and-expressions",{"title":753,"path":754,"stem":755,"icon":747},"Expose and explain flows","\u002Fbuild\u002Fparts\u002Fflows\u002Fflow-tools","04.build\u002F02.parts\u002F08.flows\u002F02.flow-tools",{"title":757,"path":758,"stem":759,"icon":760},"Hooks","\u002Fbuild\u002Fparts\u002Fhooks","04.build\u002F02.parts\u002F09.hooks","i-ph-anchor",{"title":762,"path":763,"stem":764,"children":765,"icon":767},"Declare an event source","\u002Fbuild\u002Fparts\u002Fevent-sources","04.build\u002F02.parts\u002F10.event-sources\u002F00.index",[766,768,772],{"title":762,"path":763,"stem":764,"icon":767},"i-ph-broadcast",{"title":769,"path":770,"stem":771,"icon":767},"Bind and answer deliveries","\u002Fbuild\u002Fparts\u002Fevent-sources\u002Fdelivery-binding","04.build\u002F02.parts\u002F10.event-sources\u002F01.delivery-binding",{"title":773,"path":774,"stem":775,"icon":767},"Use platform events","\u002Fbuild\u002Fparts\u002Fevent-sources\u002Fplatform-events","04.build\u002F02.parts\u002F10.event-sources\u002F02.platform-events",{"title":777,"path":778,"stem":779,"children":780,"icon":782},"Declare a connection","\u002Fbuild\u002Fparts\u002Fconnections","04.build\u002F02.parts\u002F11.connections\u002F00.index",[781,783,787],{"title":777,"path":778,"stem":779,"icon":782},"i-ph-plugs-connected",{"title":784,"path":785,"stem":786,"icon":782},"Connection token lifecycle","\u002Fbuild\u002Fparts\u002Fconnections\u002Ftoken-lifecycle","04.build\u002F02.parts\u002F11.connections\u002F01.token-lifecycle",{"title":788,"path":789,"stem":790,"icon":782},"Connection setup and security","\u002Fbuild\u002Fparts\u002Fconnections\u002Fsetup-and-security","04.build\u002F02.parts\u002F11.connections\u002F02.setup-and-security",{"title":792,"path":793,"stem":794,"children":795,"icon":797},"Choose a harness","\u002Fbuild\u002Fparts\u002Fharnesses","04.build\u002F02.parts\u002F12.harnesses\u002F00.index",[796,798,802,806,810],{"title":792,"path":793,"stem":794,"icon":797},"i-ph-cpu",{"title":799,"path":800,"stem":801,"icon":797},"Harness tool controls","\u002Fbuild\u002Fparts\u002Fharnesses\u002Ftool-controls","04.build\u002F02.parts\u002F12.harnesses\u002F01.tool-controls",{"title":803,"path":804,"stem":805,"icon":797},"Recover a harness session","\u002Fbuild\u002Fparts\u002Fharnesses\u002Frecovery","04.build\u002F02.parts\u002F12.harnesses\u002F02.recovery",{"title":807,"path":808,"stem":809,"icon":797},"Write a harness","\u002Fbuild\u002Fparts\u002Fharnesses\u002Fcustom-harnesses","04.build\u002F02.parts\u002F12.harnesses\u002F03.custom-harnesses",{"title":811,"path":812,"stem":813,"icon":797},"Use an ACP agent","\u002Fbuild\u002Fparts\u002Fharnesses\u002Facp","04.build\u002F02.parts\u002F12.harnesses\u002F04.acp",{"title":815,"path":816,"stem":817,"icon":782},"Bring your own agent","\u002Fbuild\u002Fparts\u002Fbring-your-own-agent","04.build\u002F02.parts\u002F13.bring-your-own-agent",{"title":819,"path":820,"stem":821,"icon":822},"Records and start-up text","\u002Fbuild\u002Fparts\u002Frecords-and-startup","04.build\u002F02.parts\u002F14.records-and-startup","i-ph-database",{"title":824,"path":825,"stem":826,"icon":827},"Addresses","\u002Fbuild\u002Fparts\u002Faddresses","04.build\u002F02.parts\u002F15.addresses","i-ph-signpost",{"title":829,"path":830,"stem":831,"children":832,"icon":834},"Define a routine","\u002Fbuild\u002Fparts\u002Froutines","04.build\u002F02.parts\u002F16.routines\u002F00.index",[833,835],{"title":829,"path":830,"stem":831,"icon":834},"i-ph-clock-clockwise",{"title":836,"path":837,"stem":838,"icon":834},"Routine permissions and outputs","\u002Fbuild\u002Fparts\u002Froutines\u002Foutputs-and-permissions","04.build\u002F02.parts\u002F16.routines\u002F01.outputs-and-permissions",{"title":840,"path":841,"stem":842,"icon":843},"When to split an agent","\u002Fbuild\u002Fparts\u002Fwhen-to-split-an-agent","04.build\u002F02.parts\u002F17.when-to-split-an-agent","i-ph-arrows-split",{"title":845,"path":846,"stem":847,"children":848,"icon":71},"Apps on OZ","\u002Fbuild\u002Fapps","04.build\u002F03.apps\u002F00.index",[849,851,862,867,872,876,880,884,894,908,913,928,942],{"title":850,"path":846,"stem":847},"Applications and clients",{"title":852,"path":853,"stem":854,"children":855,"icon":857},"Use the runtime API","\u002Fbuild\u002Fapps\u002Fruntime-api","04.build\u002F03.apps\u002F01.runtime-api\u002F00.index",[856,858],{"title":852,"path":853,"stem":854,"icon":857},"i-ph-plug",{"title":859,"path":860,"stem":861,"icon":857},"Runtime API authentication","\u002Fbuild\u002Fapps\u002Fruntime-api\u002Fauthentication","04.build\u002F03.apps\u002F01.runtime-api\u002F01.authentication",{"title":863,"path":864,"stem":865,"icon":866},"Python SDK","\u002Fbuild\u002Fapps\u002Fsdk-python","04.build\u002F03.apps\u002F02.sdk-python","i-ph-file-py",{"title":868,"path":869,"stem":870,"icon":871},"TypeScript SDK","\u002Fbuild\u002Fapps\u002Fsdk-typescript","04.build\u002F03.apps\u002F03.sdk-typescript","i-ph-file-ts",{"title":873,"path":874,"stem":875,"icon":725},"Go SDK","\u002Fbuild\u002Fapps\u002Fsdk-go","04.build\u002F03.apps\u002F04.sdk-go",{"title":877,"path":878,"stem":879,"icon":782},"AG-UI for your apps","\u002Fbuild\u002Fapps\u002Fag-ui","04.build\u002F03.apps\u002F05.ag-ui",{"title":881,"path":882,"stem":883,"icon":249},"A chat in your own app","\u002Fbuild\u002Fapps\u002Fchat-app","04.build\u002F03.apps\u002F06.chat-app",{"title":885,"path":886,"stem":887,"children":888,"icon":767},"Follow live jobs","\u002Fbuild\u002Fapps\u002Flive-feeds","04.build\u002F03.apps\u002F07.live-feeds\u002F00.index",[889,890],{"title":885,"path":886,"stem":887,"icon":767},{"title":891,"path":892,"stem":893,"icon":767},"Feed access and browser streams","\u002Fbuild\u002Fapps\u002Flive-feeds\u002Fbrowser-and-access","04.build\u002F03.apps\u002F07.live-feeds\u002F01.browser-and-access",{"title":895,"path":896,"stem":897,"children":898,"icon":782},"Call agents over MCP","\u002Fbuild\u002Fapps\u002Fmcp-server","04.build\u002F03.apps\u002F08.mcp-server\u002F00.index",[899,900,904],{"title":895,"path":896,"stem":897,"icon":782},{"title":901,"path":902,"stem":903,"icon":782},"MCP client OAuth","\u002Fbuild\u002Fapps\u002Fmcp-server\u002Foauth","04.build\u002F03.apps\u002F08.mcp-server\u002F01.oauth",{"title":905,"path":906,"stem":907,"icon":782},"MCP security and limits","\u002Fbuild\u002Fapps\u002Fmcp-server\u002Fsecurity-and-limits","04.build\u002F03.apps\u002F08.mcp-server\u002F02.security-and-limits",{"title":909,"path":910,"stem":911,"icon":912},"A2A agents","\u002Fbuild\u002Fapps\u002Fa2a","04.build\u002F03.apps\u002F09.a2a","i-ph-share-network",{"title":914,"path":915,"stem":916,"children":917,"icon":919},"Run a remote agent","\u002Fbuild\u002Fapps\u002Fremote-agents","04.build\u002F03.apps\u002F10.remote-agents\u002F00.index",[918,920,924],{"title":914,"path":915,"stem":916,"icon":919},"i-ph-cloud-arrow-down",{"title":921,"path":922,"stem":923,"icon":919},"Remote sessions and limits","\u002Fbuild\u002Fapps\u002Fremote-agents\u002Fsessions-and-limits","04.build\u002F03.apps\u002F10.remote-agents\u002F01.sessions-and-limits",{"title":925,"path":926,"stem":927,"icon":919},"Connect an outside A2A agent","\u002Fbuild\u002Fapps\u002Fremote-agents\u002Fa2a","04.build\u002F03.apps\u002F10.remote-agents\u002F02.a2a",{"title":929,"path":930,"stem":931,"children":932,"icon":249},"Connect a chat channel","\u002Fbuild\u002Fapps\u002Fchat-channels","04.build\u002F03.apps\u002F11.chat-channels\u002F00.index",[933,934,938],{"title":929,"path":930,"stem":931,"icon":249},{"title":935,"path":936,"stem":937,"icon":249},"Chat channel conversations","\u002Fbuild\u002Fapps\u002Fchat-channels\u002Fconversations","04.build\u002F03.apps\u002F11.chat-channels\u002F01.conversations",{"title":939,"path":940,"stem":941,"icon":249},"Build a chat channel","\u002Fbuild\u002Fapps\u002Fchat-channels\u002Fbuild","04.build\u002F03.apps\u002F11.chat-channels\u002F02.build",{"title":943,"path":944,"stem":945,"icon":946},"Interop matrix","\u002Fbuild\u002Fapps\u002Finterop","04.build\u002F03.apps\u002F12.interop","i-ph-check-square-offset",{"title":948,"path":949,"stem":950,"children":951,"icon":71},"Improve","\u002Fimprove","05.improve\u002F00.index",[952,953,958,963,968,994,1021,1026,1031,1036],{"title":948,"path":949,"stem":950},{"title":954,"path":955,"stem":956,"icon":957},"Search, compare and fix","\u002Fimprove\u002Fsearch-and-compare","05.improve\u002F01.search-and-compare","i-ph-magnifying-glass",{"title":959,"path":960,"stem":961,"icon":962},"Errors and insights","\u002Fimprove\u002Ferrors-and-insights","05.improve\u002F02.errors-and-insights","i-ph-chart-line",{"title":964,"path":965,"stem":966,"icon":967},"Measured savings","\u002Fimprove\u002Fmeasured-savings","05.improve\u002F03.measured-savings","i-ph-scales",{"title":969,"path":970,"stem":971,"children":972,"icon":463},"Evals and quality gates","\u002Fimprove\u002Fevals","05.improve\u002F04.evals\u002F00.index",[973,974,978,982,986,990],{"title":969,"path":970,"stem":971,"icon":463},{"title":975,"path":976,"stem":977},"Case expectations","\u002Fimprove\u002Fevals\u002Fcases","05.improve\u002F04.evals\u002F01.cases",{"title":979,"path":980,"stem":981},"Record and replay answers","\u002Fimprove\u002Fevals\u002Frecordings","05.improve\u002F04.evals\u002F02.recordings",{"title":983,"path":984,"stem":985},"Check policy paths","\u002Fimprove\u002Fevals\u002Fcoverage","05.improve\u002F04.evals\u002F03.coverage",{"title":987,"path":988,"stem":989},"Gate a plugin update","\u002Fimprove\u002Fevals\u002Fquality-gates","05.improve\u002F04.evals\u002F04.quality-gates",{"title":991,"path":992,"stem":993},"Track quality and regressions","\u002Fimprove\u002Fevals\u002Fregressions","05.improve\u002F04.evals\u002F05.regressions",{"title":995,"path":996,"stem":997,"children":998,"icon":1000},"Outcome checks and patterns","\u002Fimprove\u002Foutcome-checks","05.improve\u002F05.outcome-checks\u002F00.index",[999,1001,1005,1009,1013,1017],{"title":995,"path":996,"stem":997,"icon":1000},"i-ph-gavel",{"title":1002,"path":1003,"stem":1004},"Choose a judge and rubric","\u002Fimprove\u002Foutcome-checks\u002Fjudges","05.improve\u002F05.outcome-checks\u002F01.judges",{"title":1006,"path":1007,"stem":1008},"Measure a judge over time","\u002Fimprove\u002Foutcome-checks\u002Fsampling","05.improve\u002F05.outcome-checks\u002F02.sampling",{"title":1010,"path":1011,"stem":1012},"Use a reviewer agent","\u002Fimprove\u002Foutcome-checks\u002Freviewer","05.improve\u002F05.outcome-checks\u002F03.reviewer",{"title":1014,"path":1015,"stem":1016},"Choose among candidate answers","\u002Fimprove\u002Foutcome-checks\u002Fselection","05.improve\u002F05.outcome-checks\u002F04.selection",{"title":1018,"path":1019,"stem":1020},"Test and roll out judged agents","\u002Fimprove\u002Foutcome-checks\u002Frollouts","05.improve\u002F05.outcome-checks\u002F05.rollouts",{"title":1022,"path":1023,"stem":1024,"icon":1025},"Measured results","\u002Fimprove\u002Fmeasured-results","05.improve\u002F06.measured-results","i-ph-chart-bar",{"title":1027,"path":1028,"stem":1029,"icon":1030},"Comparisons of a changed agent","\u002Fimprove\u002Fcomparisons-of-a-changed-agent","05.improve\u002F07.comparisons-of-a-changed-agent","i-ph-git-diff",{"title":1032,"path":1033,"stem":1034,"icon":1035},"Where a fix belongs","\u002Fimprove\u002Fwhere-a-fix-belongs","05.improve\u002F08.where-a-fix-belongs","i-ph-ladder",{"title":1037,"path":1038,"stem":1039,"icon":957},"Evidence for agents","\u002Fimprove\u002Fevidence-for-agents","05.improve\u002F09.evidence-for-agents",{"title":1041,"path":1042,"stem":1043,"children":1044,"icon":71},"Govern","\u002Fgovern","06.govern\u002F00.index",[1045,1047,1085,1089,1111,1115,1120,1151,1170,1175,1180,1184,1207],{"title":1046,"path":1042,"stem":1043},"Govern agents",{"title":1048,"path":1049,"stem":1050,"children":1051,"icon":98},"Tool policy","\u002Fgovern\u002Ftool-policy","06.govern\u002F01.tool-policy\u002F00.index",[1052,1053,1057,1061,1065,1069,1073,1077,1081],{"title":1048,"path":1049,"stem":1050,"icon":98},{"title":1054,"path":1055,"stem":1056},"Export and apply a tool policy","\u002Fgovern\u002Ftool-policy\u002Ffiles","06.govern\u002F01.tool-policy\u002F02.files",{"title":1058,"path":1059,"stem":1060},"Rules for plugin and remote functions","\u002Fgovern\u002Ftool-policy\u002Fplugin-functions","06.govern\u002F01.tool-policy\u002F03.plugin-functions",{"title":1062,"path":1063,"stem":1064},"Function conditions and action classes","\u002Fgovern\u002Ftool-policy\u002Fconditions","06.govern\u002F01.tool-policy\u002F04.conditions",{"title":1066,"path":1067,"stem":1068},"Rules for taint, origins and sequences","\u002Fgovern\u002Ftool-policy\u002Forigins-and-sequences","06.govern\u002F01.tool-policy\u002F05.origins-and-sequences",{"title":1070,"path":1071,"stem":1072},"How the runtime enforces tool policy","\u002Fgovern\u002Ftool-policy\u002Fruntime","06.govern\u002F01.tool-policy\u002F06.runtime",{"title":1074,"path":1075,"stem":1076},"Preview, review and lint tool policy changes","\u002Fgovern\u002Ftool-policy\u002Freview-changes","06.govern\u002F01.tool-policy\u002F07.review-changes",{"title":1078,"path":1079,"stem":1080},"Assign duties to tool calls","\u002Fgovern\u002Ftool-policy\u002Fduties","06.govern\u002F01.tool-policy\u002F08.duties",{"title":1082,"path":1083,"stem":1084},"Command rules in a tool policy","\u002Fgovern\u002Ftool-policy\u002Fcommand-rules","06.govern\u002F01.tool-policy\u002F09.command-rules",{"title":1086,"path":1087,"stem":1088,"icon":230},"Governance replay","\u002Fgovern\u002Fgovernance-replay","06.govern\u002F02.governance-replay",{"title":1090,"path":1091,"stem":1092,"children":1093,"icon":532},"Reviewed changes","\u002Fgovern\u002Freviewed-changes","06.govern\u002F03.reviewed-changes\u002F00.index",[1094,1095,1099,1103,1107],{"title":1090,"path":1091,"stem":1092,"icon":532},{"title":1096,"path":1097,"stem":1098},"Review assistant and job proposals","\u002Fgovern\u002Freviewed-changes\u002Fproposals","06.govern\u002F03.reviewed-changes\u002F02.proposals",{"title":1100,"path":1101,"stem":1102},"Review plugin configurations","\u002Fgovern\u002Freviewed-changes\u002Fplugin-configurations","06.govern\u002F03.reviewed-changes\u002F03.plugin-configurations",{"title":1104,"path":1105,"stem":1106},"Review and roll back changesets","\u002Fgovern\u002Freviewed-changes\u002Fchangesets","06.govern\u002F03.reviewed-changes\u002F04.changesets",{"title":1108,"path":1109,"stem":1110},"Review changes to protected paths","\u002Fgovern\u002Freviewed-changes\u002Fprotected-paths","06.govern\u002F03.reviewed-changes\u002F05.protected-paths",{"title":1112,"path":1113,"stem":1114,"icon":666},"AI labels","\u002Fgovern\u002Fai-labels","06.govern\u002F04.ai-labels",{"title":1116,"path":1117,"stem":1118,"icon":1119},"Kill switches","\u002Fgovern\u002Fkill-switches","06.govern\u002F05.kill-switches","i-ph-power",{"title":1121,"path":1122,"stem":1123,"children":1124,"icon":1126},"Personal data","\u002Fgovern\u002Fpersonal-data","06.govern\u002F06.personal-data\u002F00.index",[1125,1127,1131,1135,1139,1143,1147],{"title":1121,"path":1122,"stem":1123,"icon":1126},"i-ph-user-minus",{"title":1128,"path":1129,"stem":1130},"Associate people and purposes with jobs","\u002Fgovern\u002Fpersonal-data\u002Fassociate-people","06.govern\u002F06.personal-data\u002F01.associate-people",{"title":1132,"path":1133,"stem":1134},"Find and export personal data","\u002Fgovern\u002Fpersonal-data\u002Fexport","06.govern\u002F06.personal-data\u002F02.export",{"title":1136,"path":1137,"stem":1138},"Restrict processing and record contests","\u002Fgovern\u002Fpersonal-data\u002Frestrictions-and-contests","06.govern\u002F06.personal-data\u002F03.restrictions-and-contests",{"title":1140,"path":1141,"stem":1142},"Erase personal data","\u002Fgovern\u002Fpersonal-data\u002Ferase","06.govern\u002F06.personal-data\u002F04.erase",{"title":1144,"path":1145,"stem":1146},"Retain records and restore backups","\u002Fgovern\u002Fpersonal-data\u002Fretention","06.govern\u002F06.personal-data\u002F05.retention",{"title":1148,"path":1149,"stem":1150},"Personal data held by plugins","\u002Fgovern\u002Fpersonal-data\u002Fplugin-records","06.govern\u002F06.personal-data\u002F06.plugin-records",{"title":1152,"path":1153,"stem":1154,"children":1155,"icon":1157},"Taint and labels","\u002Fgovern\u002Ftaint-and-labels","06.govern\u002F07.taint-and-labels\u002F00.index",[1156,1158,1162,1166],{"title":1152,"path":1153,"stem":1154,"icon":1157},"i-ph-drop-half-bottom",{"title":1159,"path":1160,"stem":1161},"Set rules on taint and labels","\u002Fgovern\u002Ftaint-and-labels\u002Frules","06.govern\u002F07.taint-and-labels\u002F02.rules",{"title":1163,"path":1164,"stem":1165},"Set clearance, egress and content walls","\u002Fgovern\u002Ftaint-and-labels\u002Flabel-policies","06.govern\u002F07.taint-and-labels\u002F03.label-policies",{"title":1167,"path":1168,"stem":1169},"Read outside text in a quarantine child","\u002Fgovern\u002Ftaint-and-labels\u002Fquarantine","06.govern\u002F07.taint-and-labels\u002F04.quarantine",{"title":1171,"path":1172,"stem":1173,"icon":1174},"Works-council mode","\u002Fgovern\u002Fworks-council-mode","06.govern\u002F08.works-council-mode","i-ph-users-three",{"title":1176,"path":1177,"stem":1178,"icon":1179},"Incidents","\u002Fgovern\u002Fincidents","06.govern\u002F09.incidents","i-ph-siren",{"title":1181,"path":1182,"stem":1183,"icon":213},"Inventory","\u002Fgovern\u002Finventory","06.govern\u002F10.inventory",{"title":1185,"path":1186,"stem":1187,"children":1188,"icon":1190},"Audit trail","\u002Fgovern\u002Faudit-trail","06.govern\u002F11.audit-trail\u002F00.index",[1189,1191,1195,1199,1203],{"title":1185,"path":1186,"stem":1187,"icon":1190},"i-ph-scroll",{"title":1192,"path":1193,"stem":1194},"Audit records and run identity","\u002Fgovern\u002Faudit-trail\u002Frecords","06.govern\u002F11.audit-trail\u002F02.records",{"title":1196,"path":1197,"stem":1198},"Verify the audit chain","\u002Fgovern\u002Faudit-trail\u002Fverification","06.govern\u002F11.audit-trail\u002F03.verification",{"title":1200,"path":1201,"stem":1202},"Export and verify evidence bundles","\u002Fgovern\u002Faudit-trail\u002Fevidence-bundles","06.govern\u002F11.audit-trail\u002F04.evidence-bundles",{"title":1204,"path":1205,"stem":1206},"Audit retention, erasure and legal holds","\u002Fgovern\u002Faudit-trail\u002Fretention","06.govern\u002F11.audit-trail\u002F05.retention",{"title":1208,"path":1209,"stem":1210,"children":1211,"icon":1213},"Command rules","\u002Fgovern\u002Fcommand-rules","06.govern\u002F12.command-rules\u002F00.index",[1212,1214,1218,1222,1226],{"title":1208,"path":1209,"stem":1210,"icon":1213},"i-ph-terminal",{"title":1215,"path":1216,"stem":1217},"Command rule patterns","\u002Fgovern\u002Fcommand-rules\u002Fpatterns","06.govern\u002F12.command-rules\u002F02.patterns",{"title":1219,"path":1220,"stem":1221},"What the command reader understands","\u002Fgovern\u002Fcommand-rules\u002Fcommand-reader","06.govern\u002F12.command-rules\u002F03.command-reader",{"title":1223,"path":1224,"stem":1225},"Create a command rule from an approval","\u002Fgovern\u002Fcommand-rules\u002Fallow-from-card","06.govern\u002F12.command-rules\u002F04.allow-from-card",{"title":1227,"path":1228,"stem":1229},"Command rule evaluation and limits","\u002Fgovern\u002Fcommand-rules\u002Fevaluation-and-limits","06.govern\u002F12.command-rules\u002F05.evaluation-and-limits",{"title":1231,"path":1232,"stem":1233,"children":1234,"icon":71},"Fleet","\u002Ffleet","07.fleet\u002F00.index",[1235,1237,1242,1247,1251,1256,1260,1265,1270,1274,1278,1297,1302,1307,1325,1329,1333,1352,1357,1380,1385,1390,1395,1399,1458,1462,1467,1481,1486,1490,1494],{"title":1236,"path":1232,"stem":1233},"Operate a fleet",{"title":1238,"path":1239,"stem":1240,"icon":1241},"Dev mode","\u002Ffleet\u002Fdev-mode","07.fleet\u002F01.dev-mode","i-ph-laptop",{"title":1243,"path":1244,"stem":1245,"icon":1246},"Run a cluster","\u002Ffleet\u002Fcluster","07.fleet\u002F02.cluster","i-ph-hard-drives",{"title":1248,"path":1249,"stem":1250,"icon":782},"Join nodes","\u002Ffleet\u002Fjoin-nodes","07.fleet\u002F03.join-nodes",{"title":1252,"path":1253,"stem":1254,"icon":1255},"Manage nodes","\u002Ffleet\u002Fmanage-nodes","07.fleet\u002F04.manage-nodes","i-ph-list-bullets",{"title":1257,"path":1258,"stem":1259,"icon":527},"Node health","\u002Ffleet\u002Fnodes","07.fleet\u002F05.nodes",{"title":1261,"path":1262,"stem":1263,"icon":1264},"Nodes as services","\u002Ffleet\u002Fservices","07.fleet\u002F06.services","i-ph-gear-six",{"title":1266,"path":1267,"stem":1268,"icon":1269},"Doctor","\u002Ffleet\u002Fdoctor","07.fleet\u002F07.doctor","i-ph-stethoscope",{"title":1271,"path":1272,"stem":1273,"icon":421},"Troubleshooting","\u002Ffleet\u002Ftroubleshooting","07.fleet\u002F08.troubleshooting",{"title":1275,"path":1276,"stem":1277,"icon":962},"Tracing and metrics","\u002Ffleet\u002Fobservability","07.fleet\u002F09.observability",{"title":1279,"path":1280,"stem":1281,"children":1282,"icon":1284},"Choose sandbox tier 2","\u002Ffleet\u002Fsandbox-tier-2","07.fleet\u002F10.sandbox-tier-2\u002F00.index",[1283,1285,1289,1293],{"title":1279,"path":1280,"stem":1281,"icon":1284},"i-ph-shield-chevron",{"title":1286,"path":1287,"stem":1288,"icon":1284},"Set up gVisor","\u002Ffleet\u002Fsandbox-tier-2\u002Fgvisor","07.fleet\u002F10.sandbox-tier-2\u002F01.gvisor",{"title":1290,"path":1291,"stem":1292,"icon":1284},"Set up microVM isolation","\u002Ffleet\u002Fsandbox-tier-2\u002Fmicrovms","07.fleet\u002F10.sandbox-tier-2\u002F02.microvms",{"title":1294,"path":1295,"stem":1296,"icon":1284},"Configure remote sandboxes","\u002Ffleet\u002Fsandbox-tier-2\u002Fremote","07.fleet\u002F10.sandbox-tier-2\u002F03.remote",{"title":1298,"path":1299,"stem":1300,"icon":1301},"Sandbox on macOS","\u002Ffleet\u002Fsandbox-on-macos","07.fleet\u002F11.sandbox-on-macos","i-ph-apple-logo",{"title":1303,"path":1304,"stem":1305,"icon":1306},"Sandbox on Windows","\u002Ffleet\u002Fsandbox-on-windows","07.fleet\u002F12.sandbox-on-windows","i-ph-windows-logo",{"title":1308,"path":1309,"stem":1310,"children":1311,"icon":797},"Configure local models","\u002Ffleet\u002Flocal-models","07.fleet\u002F13.local-models\u002F00.index",[1312,1313,1317,1321],{"title":1308,"path":1309,"stem":1310,"icon":797},{"title":1314,"path":1315,"stem":1316,"icon":797},"Share a local model with the fleet","\u002Ffleet\u002Flocal-models\u002Ffleet","07.fleet\u002F13.local-models\u002F01.fleet",{"title":1318,"path":1319,"stem":1320,"icon":797},"Review local-model safety checks","\u002Ffleet\u002Flocal-models\u002Ftrust","07.fleet\u002F13.local-models\u002F02.trust",{"title":1322,"path":1323,"stem":1324,"icon":797},"Size and price local models","\u002Ffleet\u002Flocal-models\u002Fsizing-and-cost","07.fleet\u002F13.local-models\u002F03.sizing-and-cost",{"title":1326,"path":1327,"stem":1328,"icon":1241},"Agents on a Mac with MLX","\u002Ffleet\u002Flocal-models-on-a-mac","07.fleet\u002F14.local-models-on-a-mac",{"title":1330,"path":1331,"stem":1332,"icon":127},"Queues","\u002Ffleet\u002Fqueues","07.fleet\u002F15.queues",{"title":1334,"path":1335,"stem":1336,"children":1337,"icon":1339},"Choose a Temporal backend","\u002Ffleet\u002Ftemporal-backends","07.fleet\u002F16.temporal-backends\u002F00.index",[1338,1340,1344,1348],{"title":1334,"path":1335,"stem":1336,"icon":1339},"i-ph-cloud",{"title":1341,"path":1342,"stem":1343},"Set retention and move tenants","\u002Ffleet\u002Ftemporal-backends\u002Fretention-and-migration","07.fleet\u002F16.temporal-backends\u002F01.retention-and-migration",{"title":1345,"path":1346,"stem":1347},"Encrypt Temporal payloads","\u002Ffleet\u002Ftemporal-backends\u002Fencryption","07.fleet\u002F16.temporal-backends\u002F02.encryption",{"title":1349,"path":1350,"stem":1351},"Read payloads in Temporal UI","\u002Ffleet\u002Ftemporal-backends\u002Fcodec","07.fleet\u002F16.temporal-backends\u002F03.codec",{"title":1353,"path":1354,"stem":1355,"icon":1356},"Regions","\u002Ffleet\u002Fregions","07.fleet\u002F17.regions","i-ph-globe-hemisphere-east",{"title":1358,"path":1359,"stem":1360,"children":1361,"icon":1363},"Run the roles separately","\u002Ffleet\u002Fseparate-roles","07.fleet\u002F18.separate-roles\u002F00.index",[1362,1364,1368,1372,1376],{"title":1358,"path":1359,"stem":1360,"icon":1363},"i-ph-squares-four",{"title":1365,"path":1366,"stem":1367},"Prepare database rights","\u002Ffleet\u002Fseparate-roles\u002Fdatabase-rights","07.fleet\u002F18.separate-roles\u002F01.database-rights",{"title":1369,"path":1370,"stem":1371},"Keep plaintext secrets on edges","\u002Ffleet\u002Fseparate-roles\u002Fsecrets","07.fleet\u002F18.separate-roles\u002F02.secrets",{"title":1373,"path":1374,"stem":1375},"Operate through role outages","\u002Ffleet\u002Fseparate-roles\u002Foutages","07.fleet\u002F18.separate-roles\u002F03.outages",{"title":1377,"path":1378,"stem":1379},"Use Temporal UI with separate roles","\u002Ffleet\u002Fseparate-roles\u002Ftemporal-ui","07.fleet\u002F18.separate-roles\u002F04.temporal-ui",{"title":1381,"path":1382,"stem":1383,"icon":1384},"High availability","\u002Ffleet\u002Fhigh-availability","07.fleet\u002F19.high-availability","i-ph-copy",{"title":1386,"path":1387,"stem":1388,"icon":1389},"Management over a WAN","\u002Ffleet\u002Fmanagement-over-a-wan","07.fleet\u002F20.management-over-a-wan","i-ph-globe-hemisphere-west",{"title":1391,"path":1392,"stem":1393,"icon":1394},"Cloud federation","\u002Ffleet\u002Fcloud-federation","07.fleet\u002F21.cloud-federation","i-ph-cloud-check",{"title":1396,"path":1397,"stem":1398,"icon":451},"Payload storage","\u002Ffleet\u002Fpayload-storage","07.fleet\u002F22.payload-storage",{"title":1400,"path":1401,"stem":1402,"children":1403,"icon":1405},"Upgrade a cluster","\u002Ffleet\u002Fupgrades","07.fleet\u002F23.upgrades\u002F00.index",[1404,1406,1410,1414,1418,1422,1426,1430,1434,1438,1442,1446,1450,1454],{"title":1400,"path":1401,"stem":1402,"icon":1405},"i-ph-arrows-clockwise",{"title":1407,"path":1408,"stem":1409},"Prepare for sandbox changes","\u002Ffleet\u002Fupgrades\u002Fsandbox-changes","07.fleet\u002F23.upgrades\u002F01.sandbox-changes",{"title":1411,"path":1412,"stem":1413},"Review policy changes","\u002Ffleet\u002Fupgrades\u002Fpolicy-changes","07.fleet\u002F23.upgrades\u002F02.policy-changes",{"title":1415,"path":1416,"stem":1417},"Review data and privacy migrations","\u002Ffleet\u002Fupgrades\u002Fdata-migrations","07.fleet\u002F23.upgrades\u002F03.data-migrations",{"title":1419,"path":1420,"stem":1421},"Prepare storage and identity migrations","\u002Ffleet\u002Fupgrades\u002Fstorage-and-identity","07.fleet\u002F23.upgrades\u002F04.storage-and-identity",{"title":1423,"path":1424,"stem":1425},"Prepare plugins for an upgrade","\u002Ffleet\u002Fupgrades\u002Fplugin-changes","07.fleet\u002F23.upgrades\u002F05.plugin-changes",{"title":1427,"path":1428,"stem":1429},"Keep calls compatible during upgrades","\u002Ffleet\u002Fupgrades\u002Fcall-compatibility","07.fleet\u002F23.upgrades\u002F06.call-compatibility",{"title":1431,"path":1432,"stem":1433},"Review model and budget migrations","\u002Ffleet\u002Fupgrades\u002Fmodel-and-budget-changes","07.fleet\u002F23.upgrades\u002F07.model-and-budget-changes",{"title":1435,"path":1436,"stem":1437},"Migrate to shared worker pools","\u002Ffleet\u002Fupgrades\u002Fshared-pools","07.fleet\u002F23.upgrades\u002F08.shared-pools",{"title":1439,"path":1440,"stem":1441},"Upgrade node binaries and runtimes","\u002Ffleet\u002Fupgrades\u002Fnodes","07.fleet\u002F23.upgrades\u002F09.nodes",{"title":1443,"path":1444,"stem":1445},"Understand runtime shutdown","\u002Ffleet\u002Fupgrades\u002Fruntime-shutdown","07.fleet\u002F23.upgrades\u002F10.runtime-shutdown",{"title":1447,"path":1448,"stem":1449},"Review runtime behaviour changes","\u002Ffleet\u002Fupgrades\u002Fruntime-changes","07.fleet\u002F23.upgrades\u002F11.runtime-changes",{"title":1451,"path":1452,"stem":1453},"Verify releases and switch channels","\u002Ffleet\u002Fupgrades\u002Frelease-verification","07.fleet\u002F23.upgrades\u002F12.release-verification",{"title":1455,"path":1456,"stem":1457},"Roll a runtime out in steps","\u002Ffleet\u002Fupgrades\u002Fruntime-rollouts","07.fleet\u002F23.upgrades\u002F13.runtime-rollouts",{"title":1459,"path":1460,"stem":1461,"icon":463},"Releases","\u002Ffleet\u002Freleases","07.fleet\u002F24.releases",{"title":1463,"path":1464,"stem":1465,"icon":1466},"Docker","\u002Ffleet\u002Fdocker","07.fleet\u002F25.docker","i-ph-shipping-container",{"title":1468,"path":1469,"stem":1470,"children":1471,"icon":480},"Deploy with Kubernetes","\u002Ffleet\u002Fkubernetes","07.fleet\u002F26.kubernetes\u002F00.index",[1472,1473,1477],{"title":1468,"path":1469,"stem":1470,"icon":480},{"title":1474,"path":1475,"stem":1476,"icon":480},"Helm objects and values","\u002Ffleet\u002Fkubernetes\u002Fvalues","07.fleet\u002F26.kubernetes\u002F01.values",{"title":1478,"path":1479,"stem":1480,"icon":480},"Maintain a Kubernetes deployment","\u002Ffleet\u002Fkubernetes\u002Fmaintenance","07.fleet\u002F26.kubernetes\u002F02.maintenance",{"title":1482,"path":1483,"stem":1484,"icon":1485},"Offline install","\u002Ffleet\u002Foffline-install","07.fleet\u002F27.offline-install","i-ph-airplane-tilt",{"title":1487,"path":1488,"stem":1489,"icon":98},"FIPS builds","\u002Ffleet\u002Ffips","07.fleet\u002F28.fips",{"title":1491,"path":1492,"stem":1493,"icon":249},"Run Orchestrator Zero from an MCP client","\u002Ffleet\u002Fmcp-client","07.fleet\u002F29.mcp-client",{"title":1495,"path":1496,"stem":1497,"children":1498,"icon":451},"Back up a cluster","\u002Ffleet\u002Fbackups","07.fleet\u002F30.backups\u002F00.index",[1499,1500],{"title":1495,"path":1496,"stem":1497,"icon":451},{"title":1501,"path":1502,"stem":1503},"Restore a cluster","\u002Ffleet\u002Fbackups\u002Frestore","07.fleet\u002F30.backups\u002F01.restore",{"title":1505,"path":1506,"stem":1507,"children":1508,"icon":71},"Spend","\u002Fspend","08.spend\u002F00.index",[1509,1511,1533,1547,1585],{"title":1510,"path":1506,"stem":1507},"Manage model access and spending",{"title":1512,"path":1513,"stem":1514,"children":1515,"icon":552},"Read cost and usage","\u002Fspend\u002Fcost-and-usage","08.spend\u002F01.cost-and-usage\u002F00.index",[1516,1517,1521,1525,1529],{"title":1512,"path":1513,"stem":1514,"icon":552},{"title":1518,"path":1519,"stem":1520},"Understand recorded charges","\u002Fspend\u002Fcost-and-usage\u002Faccounting","08.spend\u002F01.cost-and-usage\u002F01.accounting",{"title":1522,"path":1523,"stem":1524},"Read model call timings","\u002Fspend\u002Fcost-and-usage\u002Ftimings","08.spend\u002F01.cost-and-usage\u002F02.timings",{"title":1526,"path":1527,"stem":1528},"Export usage","\u002Fspend\u002Fcost-and-usage\u002Fexports","08.spend\u002F01.cost-and-usage\u002F03.exports",{"title":1530,"path":1531,"stem":1532},"Explain prices and cache costs","\u002Fspend\u002Fcost-and-usage\u002Fprices-and-cache","08.spend\u002F01.cost-and-usage\u002F04.prices-and-cache",{"title":1534,"path":1535,"stem":1536,"children":1537,"icon":134},"Set budgets and quotas","\u002Fspend\u002Fbudgets-and-quotas","08.spend\u002F02.budgets-and-quotas\u002F00.index",[1538,1539,1543],{"title":1534,"path":1535,"stem":1536,"icon":134},{"title":1540,"path":1541,"stem":1542,"icon":134},"Understand quota charging and refusals","\u002Fspend\u002Fbudgets-and-quotas\u002Fcharging","08.spend\u002F02.budgets-and-quotas\u002F01.charging",{"title":1544,"path":1545,"stem":1546,"icon":134},"Request and review budget","\u002Fspend\u002Fbudgets-and-quotas\u002Frequests","08.spend\u002F02.budgets-and-quotas\u002F02.requests",{"title":1548,"path":1549,"stem":1550,"children":1551,"icon":416},"Connect a model provider","\u002Fspend\u002Fmodels-and-keys","08.spend\u002F03.models-and-keys\u002F00.index",[1552,1553,1557,1561,1565,1569,1573,1577,1581],{"title":1548,"path":1549,"stem":1550,"icon":416},{"title":1554,"path":1555,"stem":1556},"Choose model aliases","\u002Fspend\u002Fmodels-and-keys\u002Faliases","08.spend\u002F03.models-and-keys\u002F01.aliases",{"title":1558,"path":1559,"stem":1560},"Map a plugin's models","\u002Fspend\u002Fmodels-and-keys\u002Fmapping","08.spend\u002F03.models-and-keys\u002F02.mapping",{"title":1562,"path":1563,"stem":1564},"Set reasoning effort and cascades","\u002Fspend\u002Fmodels-and-keys\u002Feffort-and-cascades","08.spend\u002F03.models-and-keys\u002F03.effort-and-cascades",{"title":1566,"path":1567,"stem":1568},"Authenticate model calls","\u002Fspend\u002Fmodels-and-keys\u002Fauthentication","08.spend\u002F03.models-and-keys\u002F04.authentication",{"title":1570,"path":1571,"stem":1572},"Control what model calls can reach","\u002Fspend\u002Fmodels-and-keys\u002Fdata-rules","08.spend\u002F03.models-and-keys\u002F05.data-rules",{"title":1574,"path":1575,"stem":1576},"Pool model deployments","\u002Fspend\u002Fmodels-and-keys\u002Fdeployment-pools","08.spend\u002F03.models-and-keys\u002F06.deployment-pools",{"title":1578,"path":1579,"stem":1580},"Configure caches and server tools","\u002Fspend\u002Fmodels-and-keys\u002Fcache-and-tools","08.spend\u002F03.models-and-keys\u002F07.cache-and-tools",{"title":1582,"path":1583,"stem":1584},"Check model changes and retirement","\u002Fspend\u002Fmodels-and-keys\u002Fcanaries-and-retirement","08.spend\u002F03.models-and-keys\u002F08.canaries-and-retirement",{"title":1586,"path":1587,"stem":1588,"icon":1589},"Translating providers","\u002Fspend\u002Ftranslating-providers","08.spend\u002F04.translating-providers","i-ph-translate",{"title":1591,"path":1592,"stem":1593,"children":1594,"icon":71},"Admin","\u002Fadmin","09.admin\u002F00.index",[1595,1597,1623,1650,1654,1658,1680,1685,1696],{"title":1596,"path":1592,"stem":1593},"Administer access and credentials",{"title":1598,"path":1599,"stem":1600,"children":1601,"icon":98},"Configure sign-in","\u002Fadmin\u002Fsign-in","09.admin\u002F01.sign-in\u002F00.index",[1602,1603,1607,1611,1615,1619],{"title":1598,"path":1599,"stem":1600,"icon":98},{"title":1604,"path":1605,"stem":1606},"Configure an identity provider","\u002Fadmin\u002Fsign-in\u002Fidentity-providers","09.admin\u002F01.sign-in\u002F01.identity-providers",{"title":1608,"path":1609,"stem":1610},"Provision accounts from a directory","\u002Fadmin\u002Fsign-in\u002Fprovisioning","09.admin\u002F01.sign-in\u002F02.provisioning",{"title":1612,"path":1613,"stem":1614},"Manage passwords and second factors","\u002Fadmin\u002Fsign-in\u002Fpasswords","09.admin\u002F01.sign-in\u002F03.passwords",{"title":1616,"path":1617,"stem":1618},"Sign in from the CLI and MCP clients","\u002Fadmin\u002Fsign-in\u002Fclients","09.admin\u002F01.sign-in\u002F04.clients",{"title":1620,"path":1621,"stem":1622},"End sessions and inspect sign-in events","\u002Fadmin\u002Fsign-in\u002Fsessions","09.admin\u002F01.sign-in\u002F05.sessions",{"title":1624,"path":1625,"stem":1626,"children":1627,"icon":1629},"Manage tenant secrets","\u002Fadmin\u002Fsecrets","09.admin\u002F02.secrets\u002F00.index",[1628,1630,1634,1638,1642,1646],{"title":1624,"path":1625,"stem":1626,"icon":1629},"i-ph-key",{"title":1631,"path":1632,"stem":1633},"Bind secrets to destination hosts","\u002Fadmin\u002Fsecrets\u002Fhost-bindings","09.admin\u002F02.secrets\u002F01.host-bindings",{"title":1635,"path":1636,"stem":1637},"Test and rotate secrets","\u002Fadmin\u002Fsecrets\u002Frotation","09.admin\u002F02.secrets\u002F02.rotation",{"title":1639,"path":1640,"stem":1641},"Use an external secret store","\u002Fadmin\u002Fsecrets\u002Fexternal-stores","09.admin\u002F02.secrets\u002F03.external-stores",{"title":1643,"path":1644,"stem":1645},"Deliver and scan plugin secrets","\u002Fadmin\u002Fsecrets\u002Fplugin-secrets","09.admin\u002F02.secrets\u002F04.plugin-secrets",{"title":1647,"path":1648,"stem":1649},"Configure plugin settings","\u002Fadmin\u002Fsecrets\u002Fsettings","09.admin\u002F02.secrets\u002F05.settings",{"title":1651,"path":1652,"stem":1653,"icon":1629},"Credential injection","\u002Fadmin\u002Fcredential-injection","09.admin\u002F03.credential-injection",{"title":1655,"path":1656,"stem":1657,"icon":1629},"Key commands","\u002Fadmin\u002Fkey-commands","09.admin\u002F04.key-commands",{"title":1659,"path":1660,"stem":1661,"children":1662,"icon":782},"Connect a plugin to another system","\u002Fadmin\u002Fconnections","09.admin\u002F05.connections\u002F00.index",[1663,1664,1668,1672,1676],{"title":1659,"path":1660,"stem":1661,"icon":782},{"title":1665,"path":1666,"stem":1667,"icon":782},"Renew and reconnect credentials","\u002Fadmin\u002Fconnections\u002Frenewal","09.admin\u002F05.connections\u002F01.renewal",{"title":1669,"path":1670,"stem":1671,"icon":782},"Restrict connection destinations","\u002Fadmin\u002Fconnections\u002Fdestinations","09.admin\u002F05.connections\u002F02.destinations",{"title":1673,"path":1674,"stem":1675,"icon":782},"Diagnose connection failures","\u002Fadmin\u002Fconnections\u002Ftroubleshooting","09.admin\u002F05.connections\u002F03.troubleshooting",{"title":1677,"path":1678,"stem":1679,"icon":782},"Understand connection security","\u002Fadmin\u002Fconnections\u002Fsecurity","09.admin\u002F05.connections\u002F04.security",{"title":1681,"path":1682,"stem":1683,"icon":1684},"Tenants","\u002Fadmin\u002Ftenants","09.admin\u002F06.tenants","i-ph-buildings",{"title":1686,"path":1687,"stem":1688,"children":1689,"icon":1691},"Export and verify a tenant","\u002Fadmin\u002Ftenant-export","09.admin\u002F07.tenant-export\u002F00.index",[1690,1692],{"title":1686,"path":1687,"stem":1688,"icon":1691},"i-ph-export",{"title":1693,"path":1694,"stem":1695,"icon":1691},"Tenant export format","\u002Fadmin\u002Ftenant-export\u002Fformat","09.admin\u002F07.tenant-export\u002F01.format",{"title":1697,"path":1698,"stem":1699,"icon":1700},"Notifications","\u002Fadmin\u002Fnotifications","09.admin\u002F08.notifications","i-ph-bell-ringing",{"title":1702,"path":1703,"stem":1704,"children":1705,"icon":71},"Reference","\u002Freference","10.reference\u002F00.index",[1706,1707,1726,1760,1794,1798,1803,1807,1812,1817,1822,1826],{"title":1702,"path":1703,"stem":1704},{"title":1708,"path":1709,"stem":1710,"children":1711,"icon":1725},"CLI","\u002Freference\u002Fcli","10.reference\u002F01.cli\u002F00.index",[1712,1713,1719],{"title":1708,"path":1709,"stem":1710},{"title":1714,"path":1715,"stem":1716,"children":1717},"oz0","\u002Freference\u002Fcli\u002Foz0","10.reference\u002F01.cli\u002F01.oz0\u002F00.index",[1718],{"title":1714,"path":1715,"stem":1716},{"title":1720,"path":1721,"stem":1722,"children":1723},"oz0-node","\u002Freference\u002Fcli\u002Foz0-node","10.reference\u002F01.cli\u002F02.oz0-node\u002F00.index",[1724],{"title":1720,"path":1721,"stem":1722},"i-ph-terminal-window",{"title":1727,"path":1728,"stem":1729,"children":1730,"icon":725},"oz0-plugin.yaml","\u002Freference\u002Fplugin-manifest","10.reference\u002F02.plugin-manifest\u002F00.index",[1731,1732,1736,1740,1744,1748,1752,1756],{"title":1727,"path":1728,"stem":1729,"icon":725},{"title":1733,"path":1734,"stem":1735},"Dependencies and cross-plugin access","\u002Freference\u002Fplugin-manifest\u002Fdependencies","10.reference\u002F02.plugin-manifest\u002F01.dependencies",{"title":1737,"path":1738,"stem":1739},"Tool declarations","\u002Freference\u002Fplugin-manifest\u002Ftools","10.reference\u002F02.plugin-manifest\u002F02.tools",{"title":1741,"path":1742,"stem":1743},"Harnesses, events and channels","\u002Freference\u002Fplugin-manifest\u002Fruntimes","10.reference\u002F02.plugin-manifest\u002F03.runtimes",{"title":1745,"path":1746,"stem":1747},"Connections and hooks","\u002Freference\u002Fplugin-manifest\u002Fconnections","10.reference\u002F02.plugin-manifest\u002F04.connections",{"title":1749,"path":1750,"stem":1751},"Plugin sets and policies","\u002Freference\u002Fplugin-manifest\u002Fsets-policy","10.reference\u002F02.plugin-manifest\u002F05.sets-policy",{"title":1753,"path":1754,"stem":1755},"Data, evidence and mail","\u002Freference\u002Fplugin-manifest\u002Fdata","10.reference\u002F02.plugin-manifest\u002F06.data",{"title":1757,"path":1758,"stem":1759},"Generated OpenAPI manifests","\u002Freference\u002Fplugin-manifest\u002Fopenapi","10.reference\u002F02.plugin-manifest\u002F07.openapi",{"title":1761,"path":1762,"stem":1763,"children":1764,"icon":666},"Agent definition","\u002Freference\u002Fagent-definition","10.reference\u002F03.agent-definition\u002F00.index",[1765,1766,1770,1774,1778,1782,1786,1790],{"title":1761,"path":1762,"stem":1763,"icon":666},{"title":1767,"path":1768,"stem":1769},"Identity, instructions and tools","\u002Freference\u002Fagent-definition\u002Fidentity","10.reference\u002F03.agent-definition\u002F01.identity",{"title":1771,"path":1772,"stem":1773},"Models and placement","\u002Freference\u002Fagent-definition\u002Fmodels","10.reference\u002F03.agent-definition\u002F02.models",{"title":1775,"path":1776,"stem":1777},"Limits and spend","\u002Freference\u002Fagent-definition\u002Flimits","10.reference\u002F03.agent-definition\u002F03.limits",{"title":1779,"path":1780,"stem":1781},"Judges and candidate selection","\u002Freference\u002Fagent-definition\u002Fquality","10.reference\u002F03.agent-definition\u002F04.quality",{"title":1783,"path":1784,"stem":1785},"Delegation and human decisions","\u002Freference\u002Fagent-definition\u002Fcoordination","10.reference\u002F03.agent-definition\u002F05.coordination",{"title":1787,"path":1788,"stem":1789},"History and recovery","\u002Freference\u002Fagent-definition\u002Fhistory","10.reference\u002F03.agent-definition\u002F06.history",{"title":1791,"path":1792,"stem":1793},"Sandbox, data and retention","\u002Freference\u002Fagent-definition\u002Fsecurity","10.reference\u002F03.agent-definition\u002F07.security",{"title":1795,"path":1796,"stem":1797,"icon":517},"Ports","\u002Freference\u002Fports","10.reference\u002F04.ports",{"title":1799,"path":1800,"stem":1801,"icon":1802},"Environment variables","\u002Freference\u002Fenvironment","10.reference\u002F05.environment","i-ph-brackets-curly",{"title":1804,"path":1805,"stem":1806,"icon":373},"Files and directories","\u002Freference\u002Ffiles","10.reference\u002F06.files",{"title":1808,"path":1809,"stem":1810,"icon":1811},"Lists and pages","\u002Freference\u002Flist-pages","10.reference\u002F07.list-pages","i-ph-list-numbers",{"title":1813,"path":1814,"stem":1815,"icon":1816},"Spend refusals","\u002Freference\u002Fspend-refusals","10.reference\u002F08.spend-refusals","i-ph-hand-coins",{"title":1818,"path":1819,"stem":1820,"icon":1821},"Admin API","\u002Freference\u002Fadmin-api","10.reference\u002F09.admin-api","i-ph-repeat",{"title":1823,"path":1824,"stem":1825},"Compatibility","\u002Freference\u002Fcompatibility","10.reference\u002F10.compatibility",{"title":1827,"path":1828,"stem":1829},"Known issues","\u002Freference\u002Fknown-issues","10.reference\u002F11.known-issues",{"title":1831,"path":1832,"stem":1833,"children":1834,"icon":71},"About","\u002Fabout","11.about\u002F00.index",[1835,1836,1840,1845],{"title":1831,"path":1832,"stem":1833},{"title":1837,"path":1838,"stem":1839,"icon":967},"Licensing","\u002Fabout\u002Flicensing","11.about\u002F01.licensing",{"title":1841,"path":1842,"stem":1843,"icon":1844},"About these docs","\u002Fabout\u002Fcontributing-docs","11.about\u002F02.contributing-docs","i-ph-pencil-simple",{"title":1846,"path":1847,"stem":1848,"icon":42},"A local environment","\u002Fabout\u002Flocal-environment","11.about\u002F03.local-environment",{"id":1850,"title":469,"body":1851,"description":1860,"extension":3735,"links":3736,"meta":3737,"navigation":3740,"path":470,"seo":3741,"stem":471,"__hash__":3742},"docs\u002F04.build\u002F01.plugins\u002F16.indexes\u002F02.manage.md",{"type":1852,"value":1853,"toc":3724},"minimark",[1854,1858,1861,1866,1869,1901,1910,1913,1975,1978,2003,2013,2016,2019,2030,2052,2095,2100,2107,2128,2152,2207,2225,2232,2236,2258,2261,2265,2268,2333,2340,2344,2361,2394,2413,2450,2476,2482,2513,2538,2587,2591,2606,2937,2973,2995,3071,3077,3100,3118,3123,3289,3307,3311,3329,3662,3689,3711,3720],[1855,1856,1857],"p",{},"For: tenant administrators and plugin authors.",[1855,1859,1860],{},"Configure trusted indexes or publish an index of your own.",[1862,1863,1865],"h2",{"id":1864},"manage-the-indexes-a-cluster-reads","Manage the indexes a cluster reads",[1855,1867,1868],{},"Cluster admins add, trust, refresh and remove indexes; they are the cluster's, for every tenant. Tenant admins install from them.",[1870,1871,1877],"pre",{"className":1872,"code":1873,"filename":1874,"language":1875,"meta":1876,"style":1876},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","oz0 index add acme https:\u002F\u002Fplugins.example.com\u002Findex.json\n","Terminal","bash","",[1878,1879,1880],"code",{"__ignoreMap":1876},[1881,1882,1885,1888,1892,1895,1898],"span",{"class":1883,"line":1884},"line",1,[1881,1886,1714],{"class":1887},"sBMFI",[1881,1889,1891],{"class":1890},"sfazB"," index",[1881,1893,1894],{"class":1890}," add",[1881,1896,1897],{"class":1890}," acme",[1881,1899,1900],{"class":1890}," https:\u002F\u002Fplugins.example.com\u002Findex.json\n",[1870,1902,1908],{"className":1903,"code":1905,"filename":1906,"language":1907,"meta":1876},[1904],"language-text","INDEX  STATE        VERSION  EXPIRES  PLUGINS  ROOT                                     URL\nacme   not trusted  -        -        0        offered SHA256:0fbd772d9a665eae19f6f2bf  https:\u002F\u002Fplugins.example.com\u002Findex.json\n\nIndex acme is not used until you trust it. Its copy names root key pyz0ZO4P... (SHA256:0fbd772d9a665eae19f6f2bf09d26512);\nif that is the key its publisher gave you: oz0 index trust acme --fingerprint SHA256:0fbd772d9a665eae19f6f2bf09d26512\n","Output","text",[1878,1909,1905],{"__ignoreMap":1876},[1855,1911,1912],{},"An index other than ours is used only once you trust it. Compare the fingerprint of the root key its copy names with the one its publisher gives you, then pin the key, by that fingerprint or by the key itself:",[1870,1914,1916],{"className":1872,"code":1915,"filename":1874,"language":1875,"meta":1876,"style":1876},"oz0 index trust acme --fingerprint SHA256:0fbd772d9a665eae19f6f2bf09d26512\noz0 index trust acme --root-key pyz0ZO4Pazv63lUxmfv2BUX+SeciSKzoGTJXOjmhy8w=\noz0 index add acme https:\u002F\u002Fplugins.example.com\u002Findex.json --root-key pyz0ZO4P...   # add and trust at once\n",[1878,1917,1918,1935,1952],{"__ignoreMap":1876},[1881,1919,1920,1922,1924,1927,1929,1932],{"class":1883,"line":1884},[1881,1921,1714],{"class":1887},[1881,1923,1891],{"class":1890},[1881,1925,1926],{"class":1890}," trust",[1881,1928,1897],{"class":1890},[1881,1930,1931],{"class":1890}," --fingerprint",[1881,1933,1934],{"class":1890}," SHA256:0fbd772d9a665eae19f6f2bf09d26512\n",[1881,1936,1938,1940,1942,1944,1946,1949],{"class":1883,"line":1937},2,[1881,1939,1714],{"class":1887},[1881,1941,1891],{"class":1890},[1881,1943,1926],{"class":1890},[1881,1945,1897],{"class":1890},[1881,1947,1948],{"class":1890}," --root-key",[1881,1950,1951],{"class":1890}," pyz0ZO4Pazv63lUxmfv2BUX+SeciSKzoGTJXOjmhy8w=\n",[1881,1953,1955,1957,1959,1961,1963,1966,1968,1971],{"class":1883,"line":1954},3,[1881,1956,1714],{"class":1887},[1881,1958,1891],{"class":1890},[1881,1960,1894],{"class":1890},[1881,1962,1897],{"class":1890},[1881,1964,1965],{"class":1890}," https:\u002F\u002Fplugins.example.com\u002Findex.json",[1881,1967,1948],{"class":1890},[1881,1969,1970],{"class":1890}," pyz0ZO4P...",[1881,1972,1974],{"class":1973},"sHwdD","   # add and trust at once\n",[1855,1976,1977],{},"The server pins what the fetched copy offers only when its fingerprint is the one you give: whoever controls what the URL serves (its host, the DNS, the network) controls what it offers. Once an index is trusted:",[1979,1980,1981,1993],"ul",{},[1982,1983,1984,1985,1988,1989,1992],"li",{},"only ",[1878,1986,1987],{},"--root-key"," replaces its root, for when its publisher really replaced theirs; a copy signed under another root is refused, and ",[1878,1990,1991],{},"index list"," keeps showing the pinned one;",[1982,1994,1995,1998,1999,2002],{},[1878,1996,1997],{},"index trust \u003Cname> --allow-withdrawn"," and ",[1878,2000,2001],{},"--refuse-withdrawn"," change only whether withdrawn and quarantined versions install with a warning or are refused (the default).",[1855,2004,2005,2006,2009,2010,2012],{},"Ours is trusted through the root keys built into the server, so ",[1878,2007,2008],{},"index trust oz0"," takes only those two flags. To read a mirror of it under a key you trust, add the mirror under another name with ",[1878,2011,1987],{},".",[1855,2014,2015],{},"Every signed-in user sees index URLs, and the audit log records them, so an index URL may not carry a user name or password, and should carry no other secret either.",[1855,2017,2018],{},"From then on the server takes a copy of the index only when:",[1979,2020,2021,2024,2027],{},[1982,2022,2023],{},"an online key that the pinned root key certified for this index signed it;",[1982,2025,2026],{},"neither the copy nor the key's certificate has expired;",[1982,2028,2029],{},"its version is higher than the highest the cluster has seen, or the same version with the same contents. A lower one is refused as a rollback.",[1855,2031,2032,2034,2035,2038,2039,2038,2042,2038,2045,2038,2048,2051],{},[1878,2033,1991],{}," shows each index's state (",[1878,2036,2037],{},"ready",", ",[1878,2040,2041],{},"not trusted",[1878,2043,2044],{},"no copy",[1878,2046,2047],{},"expired",[1878,2049,2050],{},"no root key","), the version the cluster has and when it expires, and the last check's error. Installs fetch a copy older than 10 minutes again, and use the copy they have when the index cannot be reached, until it expires.",[1870,2053,2055],{"className":1872,"code":2054,"filename":1874,"language":1875,"meta":1876,"style":1876},"oz0 index refresh            # every trusted index\noz0 index refresh acme\noz0 index remove oz0         # stop listing ours\n",[1878,2056,2057,2069,2080],{"__ignoreMap":1876},[1881,2058,2059,2061,2063,2066],{"class":1883,"line":1884},[1881,2060,1714],{"class":1887},[1881,2062,1891],{"class":1890},[1881,2064,2065],{"class":1890}," refresh",[1881,2067,2068],{"class":1973},"            # every trusted index\n",[1881,2070,2071,2073,2075,2077],{"class":1883,"line":1937},[1881,2072,1714],{"class":1887},[1881,2074,1891],{"class":1890},[1881,2076,2065],{"class":1890},[1881,2078,2079],{"class":1890}," acme\n",[1881,2081,2082,2084,2086,2089,2092],{"class":1883,"line":1954},[1881,2083,1714],{"class":1887},[1881,2085,1891],{"class":1890},[1881,2087,2088],{"class":1890}," remove",[1881,2090,2091],{"class":1890}," oz0",[1881,2093,2094],{"class":1973},"         # stop listing ours\n",[2096,2097,2099],"h3",{"id":2098},"offline","Offline",[1855,2101,2102,2103,2106],{},"A cluster that cannot reach an index takes a mirrored copy instead. Copy the signed ",[1878,2104,2105],{},"index.json"," across and upload it; it is checked exactly as a fetched copy:",[1870,2108,2110],{"className":1872,"code":2109,"filename":1874,"language":1875,"meta":1876,"style":1876},"oz0 index refresh acme --file index.json\n",[1878,2111,2112],{"__ignoreMap":1876},[1881,2113,2114,2116,2118,2120,2122,2125],{"class":1883,"line":1884},[1881,2115,1714],{"class":1887},[1881,2117,1891],{"class":1890},[1881,2119,2065],{"class":1890},[1881,2121,1897],{"class":1890},[1881,2123,2124],{"class":1890}," --file",[1881,2126,2127],{"class":1890}," index.json\n",[1855,2129,2130,2131,2135,2136,2139,2140,2143,2144,2147,2148,2151],{},"A cluster that should never fetch an index at all imports it instead (",[2132,2133,2134],"a",{"href":1483},"offline install","): ",[1878,2137,2138],{},"index add"," with ",[1878,2141,2142],{},"--file"," adds an index whose URL is ",[1878,2145,2146],{},"imported:",", which nothing fetches, in any mode; each later copy comes from ",[1878,2149,2150],{},"index refresh --file",", with the same checks (a lower version is refused as a rollback):",[1870,2153,2155],{"className":1872,"code":2154,"filename":1874,"language":1875,"meta":1876,"style":1876},"oz0 index add airgap --file index.json --root-key \u003Croot key>\noz0 index refresh airgap --file index-next.json\n",[1878,2156,2157,2192],{"__ignoreMap":1876},[1881,2158,2159,2161,2163,2165,2168,2170,2173,2175,2179,2182,2185,2189],{"class":1883,"line":1884},[1881,2160,1714],{"class":1887},[1881,2162,1891],{"class":1890},[1881,2164,1894],{"class":1890},[1881,2166,2167],{"class":1890}," airgap",[1881,2169,2124],{"class":1890},[1881,2171,2172],{"class":1890}," index.json",[1881,2174,1948],{"class":1890},[1881,2176,2178],{"class":2177},"sMK4o"," \u003C",[1881,2180,2181],{"class":1890},"root",[1881,2183,2184],{"class":1890}," ke",[1881,2186,2188],{"class":2187},"sTEyZ","y",[1881,2190,2191],{"class":2177},">\n",[1881,2193,2194,2196,2198,2200,2202,2204],{"class":1883,"line":1937},[1881,2195,1714],{"class":1887},[1881,2197,1891],{"class":1890},[1881,2199,2065],{"class":1890},[1881,2201,2167],{"class":1890},[1881,2203,2124],{"class":1890},[1881,2205,2206],{"class":1890}," index-next.json\n",[1855,2208,2209,2210,2213,2214,2217,2218,2221,2222,2224],{},"An index URL is ",[1878,2211,2212],{},"https:\u002F\u002F","; in dev mode it may also be ",[1878,2215,2216],{},"http:\u002F\u002F"," or ",[1878,2219,2220],{},"file:\u002F\u002F",". ",[1878,2223,2138],{}," refuses one the server could never fetch, before it adds anything, on an all-in-one server and on a management server whose edges fetch its indexes alike.",[1855,2226,2227,2228,2012],{},"Removing an index forgets the highest version seen of it: adding it again starts over. Indexes and the highest versions seen are part of a ",[2132,2229,2231],{"href":2230},"\u002Ffleet\u002Fbackups#back-up","backup",[1862,2233,2235],{"id":2234},"run-an-index-of-your-own","Run an index of your own",[1855,2237,2238,2239,2241,2242,2245,2246,2249,2250,2253,2254,2257],{},"An index is one file, ",[1878,2240,2105],{},", which any web server can serve. Its format is a JSON Schema in the engine's repository, ",[1878,2243,2244],{},"schemas\u002Fplugin-index\u002Fv1",": ",[1878,2247,2248],{},"index.schema.json"," for the index, ",[1878,2251,2252],{},"listing.schema.json"," for what ",[1878,2255,2256],{},"plugin inspect --json"," prints, and the envelope and certificate it is signed in.",[1855,2259,2260],{},"The schema files currently require repository access. Public source downloads are coming soon.",[2096,2262,2264],{"id":2263},"keys","Keys",[1855,2266,2267],{},"An index has two Ed25519 keys. The root key stays offline; its public key is what admins pin. It certifies an online key, which signs each version of the index, for a time:",[1870,2269,2271],{"className":1872,"code":2270,"filename":1874,"language":1875,"meta":1876,"style":1876},"oz0 index keygen ~\u002Fkeys\u002Facme-root.key      # prints the public key to give to admins\noz0 index keygen ~\u002Fkeys\u002Facme-online.key\noz0 index certify ~\u002Fkeys\u002Facme-online.key --root ~\u002Fkeys\u002Facme-root.key --index acme --valid 90d -o acme-online.cert\n",[1878,2272,2273,2288,2299],{"__ignoreMap":1876},[1881,2274,2275,2277,2279,2282,2285],{"class":1883,"line":1884},[1881,2276,1714],{"class":1887},[1881,2278,1891],{"class":1890},[1881,2280,2281],{"class":1890}," keygen",[1881,2283,2284],{"class":1890}," ~\u002Fkeys\u002Facme-root.key",[1881,2286,2287],{"class":1973},"      # prints the public key to give to admins\n",[1881,2289,2290,2292,2294,2296],{"class":1883,"line":1937},[1881,2291,1714],{"class":1887},[1881,2293,1891],{"class":1890},[1881,2295,2281],{"class":1890},[1881,2297,2298],{"class":1890}," ~\u002Fkeys\u002Facme-online.key\n",[1881,2300,2301,2303,2305,2308,2311,2314,2316,2319,2321,2324,2327,2330],{"class":1883,"line":1954},[1881,2302,1714],{"class":1887},[1881,2304,1891],{"class":1890},[1881,2306,2307],{"class":1890}," certify",[1881,2309,2310],{"class":1890}," ~\u002Fkeys\u002Facme-online.key",[1881,2312,2313],{"class":1890}," --root",[1881,2315,2284],{"class":1890},[1881,2317,2318],{"class":1890}," --index",[1881,2320,1897],{"class":1890},[1881,2322,2323],{"class":1890}," --valid",[1881,2325,2326],{"class":1890}," 90d",[1881,2328,2329],{"class":1890}," -o",[1881,2331,2332],{"class":1890}," acme-online.cert\n",[1855,2334,2335,2336,2339],{},"Keep both keys outside any repository; ",[1878,2337,2338],{},"keygen"," writes them readable only by you and never overwrites one. When the online key's certificate nears its expiry, or the key leaks, certify a new one: admins need not change anything.",[2096,2341,2343],{"id":2342},"listings","Listings",[1855,2345,2346,2348,2349,2352,2353,2356,2357,2360],{},[1878,2347,2256],{}," describes a plugin at a pinned commit or digest. From a Git URL it resolves ",[1878,2350,2351],{},"--ref"," to a commit, packs the plugin as the edge does, asks the forge for the repository's ID (GitHub, GitLab and Gitea, Forgejo or Codeberg; ",[1878,2354,2355],{},"--forge"," names it for other hosts, ",[1878,2358,2359],{},"--forge none"," skips the check), and prints the listing's source and generated part, sorted, so the same commit always gives the same bytes:",[1870,2362,2364],{"className":1872,"code":2363,"filename":1874,"language":1875,"meta":1876,"style":1876},"oz0 plugin inspect --json https:\u002F\u002Fgithub.com\u002Facme\u002Fteam --ref v0.1.0 > listing.json\n",[1878,2365,2366],{"__ignoreMap":1876},[1881,2367,2368,2370,2373,2376,2379,2382,2385,2388,2391],{"class":1883,"line":1884},[1881,2369,1714],{"class":1887},[1881,2371,2372],{"class":1890}," plugin",[1881,2374,2375],{"class":1890}," inspect",[1881,2377,2378],{"class":1890}," --json",[1881,2380,2381],{"class":1890}," https:\u002F\u002Fgithub.com\u002Facme\u002Fteam",[1881,2383,2384],{"class":1890}," --ref",[1881,2386,2387],{"class":1890}," v0.1.0",[1881,2389,2390],{"class":2177}," >",[1881,2392,2393],{"class":1890}," listing.json\n",[1855,2395,2396,2397,2400,2401,2404,2405,2408,2409,2412],{},"A listing of a bundle or an OCI artifact is made from the pinned bytes themselves, so that its generated part describes what servers install: give ",[1878,2398,2399],{},"inspect"," the bundle file that ",[1878,2402,2403],{},"plugin pack"," built, with ",[1878,2406,2407],{},"--url"," where you will publish it, or an ",[1878,2410,2411],{},"oci:\u002F\u002F"," reference with its digest (pulled anonymously). The source then pins the bundle's SHA-256 or the manifest digest:",[1870,2414,2416],{"className":1872,"code":2415,"filename":1874,"language":1875,"meta":1876,"style":1876},"oz0 plugin inspect --json team-0.1.0.tar.gz --url https:\u002F\u002Ffiles.example.com\u002Fteam-0.1.0.tar.gz\noz0 plugin inspect --json oci:\u002F\u002Fghcr.io\u002Facme\u002Fteam@sha256:4f1c...\n",[1878,2417,2418,2437],{"__ignoreMap":1876},[1881,2419,2420,2422,2424,2426,2428,2431,2434],{"class":1883,"line":1884},[1881,2421,1714],{"class":1887},[1881,2423,2372],{"class":1890},[1881,2425,2375],{"class":1890},[1881,2427,2378],{"class":1890},[1881,2429,2430],{"class":1890}," team-0.1.0.tar.gz",[1881,2432,2433],{"class":1890}," --url",[1881,2435,2436],{"class":1890}," https:\u002F\u002Ffiles.example.com\u002Fteam-0.1.0.tar.gz\n",[1881,2438,2439,2441,2443,2445,2447],{"class":1883,"line":1937},[1881,2440,1714],{"class":1887},[1881,2442,2372],{"class":1890},[1881,2444,2375],{"class":1890},[1881,2446,2378],{"class":1890},[1881,2448,2449],{"class":1890}," oci:\u002F\u002Fghcr.io\u002Facme\u002Fteam@sha256:4f1c...\n",[1855,2451,2452,2453,2456,2457,2461,2462,2466,2467,2470,2471,2475],{},"Without ",[1878,2454,2455],{},"--json"," it prints a summary: its tools' functions with an estimate of each definition's tokens and each agent's capability card, when the plugin carries a ",[2132,2458,2460],{"href":2459},"\u002Fbuild\u002Fparts\u002Ftools\u002Fsnapshots#the-measured-listing","measured listing",", its ",[2132,2463,2465],{"href":2464},"\u002Fbuild\u002Fplugins\u002Findexes\u002Fversion-records#sboms","SBOM",", its docs and its licence. It runs no plugin code. It checks the README and the licence as ",[1878,2468,2469],{},"plugin lint"," does, and fails on a README past ",[2132,2472,2474],{"href":2473},"\u002Fbuild\u002Fplugins\u002Flimits\u002Fdocumentation#the-readme-its-images-and-its-diagrams","its limits",", so a listing never describes a page the hub cannot show.",[1855,2477,2478,2481],{},[1878,2479,2480],{},"--docs-dir \u003Cdir>"," also writes the files the listing's docs name (the README, the images it shows, every licence file and the graph of the plugin's parts) into a folder, each named by the 64 hex characters of its SHA-256, for an index's site to serve:",[1870,2483,2485],{"className":1872,"code":2484,"filename":1874,"language":1875,"meta":1876,"style":1876},"oz0 plugin inspect --json https:\u002F\u002Fgithub.com\u002Facme\u002Fteam --ref v0.1.0 --docs-dir docs > listing.json\n",[1878,2486,2487],{"__ignoreMap":1876},[1881,2488,2489,2491,2493,2495,2497,2499,2501,2503,2506,2509,2511],{"class":1883,"line":1884},[1881,2490,1714],{"class":1887},[1881,2492,2372],{"class":1890},[1881,2494,2375],{"class":1890},[1881,2496,2378],{"class":1890},[1881,2498,2381],{"class":1890},[1881,2500,2384],{"class":1890},[1881,2502,2387],{"class":1890},[1881,2504,2505],{"class":1890}," --docs-dir",[1881,2507,2508],{"class":1890}," docs",[1881,2510,2390],{"class":2177},[1881,2512,2393],{"class":1890},[1855,2514,2515,2516,2520,2521,2524,2525,2528,2529,2532,2533,2537],{},"To make the listed version ",[2132,2517,2519],{"href":2518},"\u002Fbuild\u002Fplugins\u002Findexes\u002Fversion-records#version-states","validated",", run its evals and attach the report: ",[1878,2522,2523],{},"plugin test --report report.json"," on exactly the files you list, then ",[1878,2526,2527],{},"plugin inspect --test-report report.json",". Inspect refuses a report of other files or one that skipped an eval. A report of a run with ",[1878,2530,2531],{},"--coverage"," also carries its ",[2132,2534,2536],{"href":2535},"\u002Fimprove\u002Fevals\u002Fcoverage#policy-path-coverage","policy-path coverage",": the figure and the counts per kind, never the points.",[1870,2539,2541],{"className":1872,"code":2540,"filename":1874,"language":1875,"meta":1876,"style":1876},"oz0 plugin test .\u002Fteam --report report.json\noz0 plugin inspect --json https:\u002F\u002Fgithub.com\u002Facme\u002Fteam --ref v0.1.0 --test-report report.json > listing.json\n",[1878,2542,2543,2561],{"__ignoreMap":1876},[1881,2544,2545,2547,2549,2552,2555,2558],{"class":1883,"line":1884},[1881,2546,1714],{"class":1887},[1881,2548,2372],{"class":1890},[1881,2550,2551],{"class":1890}," test",[1881,2553,2554],{"class":1890}," .\u002Fteam",[1881,2556,2557],{"class":1890}," --report",[1881,2559,2560],{"class":1890}," report.json\n",[1881,2562,2563,2565,2567,2569,2571,2573,2575,2577,2580,2583,2585],{"class":1883,"line":1937},[1881,2564,1714],{"class":1887},[1881,2566,2372],{"class":1890},[1881,2568,2375],{"class":1890},[1881,2570,2378],{"class":1890},[1881,2572,2381],{"class":1890},[1881,2574,2384],{"class":1890},[1881,2576,2387],{"class":1890},[1881,2578,2579],{"class":1890}," --test-report",[1881,2581,2582],{"class":1890}," report.json",[1881,2584,2390],{"class":2177},[1881,2586,2393],{"class":1890},[2096,2588,2590],{"id":2589},"the-index","The index",[1855,2592,2593,2594,2597,2598,2601,2602,2605],{},"The index's payload lists each plugin with its name, its publisher (whose ID is the namespace), what its authors write (a summary, maintainers, a homepage, issues and security link, tags), and its versions, each with a status, a ",[1878,2595,2596],{},"source"," and the whole ",[1878,2599,2600],{},"generated"," part from ",[1878,2603,2604],{},"plugin inspect",":",[1870,2607,2612],{"className":2608,"code":2609,"filename":2610,"language":2611,"meta":1876,"style":1876},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"format\": \"oz0.plugin-index.v1\",\n  \"name\": \"acme\",\n  \"version\": 1,\n  \"plugins\": [{\n    \"name\": \"com.example\u002Fteam\",\n    \"publisher\": {\"id\": \"com.example\", \"verified\": \"dns\"},\n    \"author\": {\"summary\": \"Greets people\", \"maintainers\": [{\"name\": \"Ada\"}]},\n    \"versions\": [{\"version\": \"0.1.0\", \"status\": \"active\", \"source\": {\"git\": {...}}, \"generated\": {...}}]\n  }]\n}\n","index-payload.json","json",[1878,2613,2614,2619,2644,2664,2682,2697,2718,2771,2834,2925,2931],{"__ignoreMap":1876},[1881,2615,2616],{"class":1883,"line":1884},[1881,2617,2618],{"class":2177},"{\n",[1881,2620,2621,2624,2628,2631,2633,2636,2639,2641],{"class":1883,"line":1937},[1881,2622,2623],{"class":2177},"  \"",[1881,2625,2627],{"class":2626},"spNyl","format",[1881,2629,2630],{"class":2177},"\"",[1881,2632,2605],{"class":2177},[1881,2634,2635],{"class":2177}," \"",[1881,2637,2638],{"class":1890},"oz0.plugin-index.v1",[1881,2640,2630],{"class":2177},[1881,2642,2643],{"class":2177},",\n",[1881,2645,2646,2648,2651,2653,2655,2657,2660,2662],{"class":1883,"line":1954},[1881,2647,2623],{"class":2177},[1881,2649,2650],{"class":2626},"name",[1881,2652,2630],{"class":2177},[1881,2654,2605],{"class":2177},[1881,2656,2635],{"class":2177},[1881,2658,2659],{"class":1890},"acme",[1881,2661,2630],{"class":2177},[1881,2663,2643],{"class":2177},[1881,2665,2667,2669,2672,2674,2676,2680],{"class":1883,"line":2666},4,[1881,2668,2623],{"class":2177},[1881,2670,2671],{"class":2626},"version",[1881,2673,2630],{"class":2177},[1881,2675,2605],{"class":2177},[1881,2677,2679],{"class":2678},"sbssI"," 1",[1881,2681,2643],{"class":2177},[1881,2683,2685,2687,2690,2692,2694],{"class":1883,"line":2684},5,[1881,2686,2623],{"class":2177},[1881,2688,2689],{"class":2626},"plugins",[1881,2691,2630],{"class":2177},[1881,2693,2605],{"class":2177},[1881,2695,2696],{"class":2177}," [{\n",[1881,2698,2700,2703,2705,2707,2709,2711,2714,2716],{"class":1883,"line":2699},6,[1881,2701,2702],{"class":2177},"    \"",[1881,2704,2650],{"class":1887},[1881,2706,2630],{"class":2177},[1881,2708,2605],{"class":2177},[1881,2710,2635],{"class":2177},[1881,2712,2713],{"class":1890},"com.example\u002Fteam",[1881,2715,2630],{"class":2177},[1881,2717,2643],{"class":2177},[1881,2719,2721,2723,2726,2728,2730,2733,2735,2738,2740,2742,2744,2747,2749,2752,2754,2757,2759,2761,2763,2766,2768],{"class":1883,"line":2720},7,[1881,2722,2702],{"class":2177},[1881,2724,2725],{"class":1887},"publisher",[1881,2727,2630],{"class":2177},[1881,2729,2605],{"class":2177},[1881,2731,2732],{"class":2177}," {",[1881,2734,2630],{"class":2177},[1881,2736,2737],{"class":2678},"id",[1881,2739,2630],{"class":2177},[1881,2741,2605],{"class":2177},[1881,2743,2635],{"class":2177},[1881,2745,2746],{"class":1890},"com.example",[1881,2748,2630],{"class":2177},[1881,2750,2751],{"class":2177},",",[1881,2753,2635],{"class":2177},[1881,2755,2756],{"class":2678},"verified",[1881,2758,2630],{"class":2177},[1881,2760,2605],{"class":2177},[1881,2762,2635],{"class":2177},[1881,2764,2765],{"class":1890},"dns",[1881,2767,2630],{"class":2177},[1881,2769,2770],{"class":2177},"},\n",[1881,2772,2774,2776,2779,2781,2783,2785,2787,2790,2792,2794,2796,2799,2801,2803,2805,2808,2810,2812,2815,2817,2820,2822,2824,2826,2829,2831],{"class":1883,"line":2773},8,[1881,2775,2702],{"class":2177},[1881,2777,2778],{"class":1887},"author",[1881,2780,2630],{"class":2177},[1881,2782,2605],{"class":2177},[1881,2784,2732],{"class":2177},[1881,2786,2630],{"class":2177},[1881,2788,2789],{"class":2678},"summary",[1881,2791,2630],{"class":2177},[1881,2793,2605],{"class":2177},[1881,2795,2635],{"class":2177},[1881,2797,2798],{"class":1890},"Greets people",[1881,2800,2630],{"class":2177},[1881,2802,2751],{"class":2177},[1881,2804,2635],{"class":2177},[1881,2806,2807],{"class":2678},"maintainers",[1881,2809,2630],{"class":2177},[1881,2811,2605],{"class":2177},[1881,2813,2814],{"class":2177}," [{",[1881,2816,2630],{"class":2177},[1881,2818,2650],{"class":2819},"swJcz",[1881,2821,2630],{"class":2177},[1881,2823,2605],{"class":2177},[1881,2825,2635],{"class":2177},[1881,2827,2828],{"class":1890},"Ada",[1881,2830,2630],{"class":2177},[1881,2832,2833],{"class":2177},"}]},\n",[1881,2835,2837,2839,2842,2844,2846,2848,2850,2852,2854,2856,2858,2861,2863,2865,2867,2870,2872,2874,2876,2879,2881,2883,2885,2887,2889,2891,2893,2895,2898,2900,2902,2904,2907,2910,2912,2914,2916,2918,2920,2922],{"class":1883,"line":2836},9,[1881,2838,2702],{"class":2177},[1881,2840,2841],{"class":1887},"versions",[1881,2843,2630],{"class":2177},[1881,2845,2605],{"class":2177},[1881,2847,2814],{"class":2177},[1881,2849,2630],{"class":2177},[1881,2851,2671],{"class":2678},[1881,2853,2630],{"class":2177},[1881,2855,2605],{"class":2177},[1881,2857,2635],{"class":2177},[1881,2859,2860],{"class":1890},"0.1.0",[1881,2862,2630],{"class":2177},[1881,2864,2751],{"class":2177},[1881,2866,2635],{"class":2177},[1881,2868,2869],{"class":2678},"status",[1881,2871,2630],{"class":2177},[1881,2873,2605],{"class":2177},[1881,2875,2635],{"class":2177},[1881,2877,2878],{"class":1890},"active",[1881,2880,2630],{"class":2177},[1881,2882,2751],{"class":2177},[1881,2884,2635],{"class":2177},[1881,2886,2596],{"class":2678},[1881,2888,2630],{"class":2177},[1881,2890,2605],{"class":2177},[1881,2892,2732],{"class":2177},[1881,2894,2630],{"class":2177},[1881,2896,2897],{"class":2819},"git",[1881,2899,2630],{"class":2177},[1881,2901,2605],{"class":2177},[1881,2903,2732],{"class":2177},[1881,2905,2906],{"class":2187},"...",[1881,2908,2909],{"class":2177},"}},",[1881,2911,2635],{"class":2177},[1881,2913,2600],{"class":2678},[1881,2915,2630],{"class":2177},[1881,2917,2605],{"class":2177},[1881,2919,2732],{"class":2177},[1881,2921,2906],{"class":2187},[1881,2923,2924],{"class":2177},"}}]\n",[1881,2926,2928],{"class":1883,"line":2927},10,[1881,2929,2930],{"class":2177},"  }]\n",[1881,2932,2934],{"class":1883,"line":2933},11,[1881,2935,2936],{"class":2177},"}\n",[1855,2938,2939,2940,2943,2944,2947,2948,2951,2952,2955,2956,2038,2959,2038,2962,2965,2966,2968,2969,2972],{},"Sign it with the online key. ",[1878,2941,2942],{},"--version"," must grow with every publication, and ",[1878,2945,2946],{},"--expires"," (default 72 hours) is the longest a withdrawal takes to reach every server, so keep it short and sign often. Signing also fills in each version's ",[1878,2949,2950],{},"clashes"," from the generated parts and its trust ",[1878,2953,2954],{},"facets"," (",[1878,2957,2958],{},"publisher-proven",[1878,2960,2961],{},"custody",[1878,2963,2964],{},"no-advisories",", and ",[1878,2967,2756],{}," for the project's own plugins), replacing any the payload had, resolves each version's ",[1878,2970,2971],{},"uses:"," to the index's listings, and names on each plugin the listings that use it.",[1855,2974,2975,2978,2979,2982,2983,2985,2986,2989,2990,2994],{},[1878,2976,2977],{},"index sign"," writes each version's full listing as a file named by its SHA-256 into ",[1878,2980,2981],{},"--detail-dir"," and signs a compact index that pins it; publish the folder beside ",[1878,2984,2105],{}," if your site shows plugin pages (servers never fetch it), and keep it: the next sign reads a compact version back from it. ",[1878,2987,2988],{},"index verify --detail-dir"," checks the folder against the index. A server reads an index of at most ",[2132,2991,2993],{"href":2992},"\u002Fbuild\u002Fplugins\u002Flimits\u002Fartifacts#index-size","32 MiB","; the compact entries keep it far below that.",[1870,2996,2998],{"className":1872,"code":2997,"filename":1874,"language":1875,"meta":1876,"style":1876},"oz0 index sign index-payload.json --key ~\u002Fkeys\u002Facme-online.key --cert acme-online.cert --version 2 --expires 72h \\\n  --detail-dir detail -o index.json\noz0 index verify index.json --root-key ~\u002Fkeys\u002Facme-root.key --detail-dir detail\n",[1878,2999,3000,3038,3050],{"__ignoreMap":1876},[1881,3001,3002,3004,3006,3009,3012,3015,3017,3020,3023,3026,3029,3032,3035],{"class":1883,"line":1884},[1881,3003,1714],{"class":1887},[1881,3005,1891],{"class":1890},[1881,3007,3008],{"class":1890}," sign",[1881,3010,3011],{"class":1890}," index-payload.json",[1881,3013,3014],{"class":1890}," --key",[1881,3016,2310],{"class":1890},[1881,3018,3019],{"class":1890}," --cert",[1881,3021,3022],{"class":1890}," acme-online.cert",[1881,3024,3025],{"class":1890}," --version",[1881,3027,3028],{"class":2678}," 2",[1881,3030,3031],{"class":1890}," --expires",[1881,3033,3034],{"class":1890}," 72h",[1881,3036,3037],{"class":2187}," \\\n",[1881,3039,3040,3043,3046,3048],{"class":1883,"line":1937},[1881,3041,3042],{"class":1890},"  --detail-dir",[1881,3044,3045],{"class":1890}," detail",[1881,3047,2329],{"class":1890},[1881,3049,2127],{"class":1890},[1881,3051,3052,3054,3056,3059,3061,3063,3065,3068],{"class":1883,"line":1954},[1881,3053,1714],{"class":1887},[1881,3055,1891],{"class":1890},[1881,3057,3058],{"class":1890}," verify",[1881,3060,2172],{"class":1890},[1881,3062,1948],{"class":1890},[1881,3064,2284],{"class":1890},[1881,3066,3067],{"class":1890}," --detail-dir",[1881,3069,3070],{"class":1890}," detail\n",[1870,3072,3075],{"className":3073,"code":3074,"filename":1906,"language":1907,"meta":1876},[1904],"Index acme version 2 verifies: 1 plugins, 1 versions; expires 2026-10-09T08:44:22Z.\nSigned by SHA256:2671940a799c3b425482885bd3952d53, certified by root SHA256:916ec2110d8cc16ffe83dcd0daeced35 until 2026-11-05T08:44:21Z.\nEach version's detail document is in detail and matches the index (1).\n",[1878,3076,3074],{"__ignoreMap":1876},[1855,3078,3079,3080,3083,3084,2245,3086,3088,3089,3096,3097,3099],{},"A version an agent made carries its ",[1878,3081,3082],{},"provenance"," beside its ",[1878,3085,2961],{},[1878,3087,2256],{}," of a Git source reads the\ninspected commit's OZ trailers (the ones ",[2132,3090,3092,3095],{"href":3091},"\u002Fgovern\u002Freviewed-changes\u002Fchangesets#where-a-change-came-from",[1878,3093,3094],{},"push_changes"," writes",") into\nthe listing's ",[1878,3098,3082],{},", and the index puts it on the version.",[1855,3101,3102,3104,3105,2038,3108,2038,3111,2038,3114,3117],{},[1878,3103,2977],{}," keeps of it only what anyone may read: the\njob and the agent as opaque text, the agent's plugin and version, the model alias, and the evidence counted by kind\n(",[1878,3106,3107],{},"read",[1878,3109,3110],{},"finding",[1878,3112,3113],{},"eval",[1878,3115,3116],{},"comparison","), never an evidence ID or a link into the publisher's tenant.",[1855,3119,3120,3122],{},[1878,3121,2977],{}," works\noffline and reads no commit itself. An index signed before carries none, and servers before this release ignore the\nkey:",[1870,3124,3126],{"className":2608,"code":3125,"language":2611,"meta":1876,"style":1876},"\"provenance\": {\"job\": \"job-0192...\", \"agent\": \"improver\", \"plugin\": \"plugin-improver@0.1.0\", \"model\": \"smart\",\n               \"evidence\": [{\"kind\": \"finding\", \"count\": 2}, {\"kind\": \"comparison\", \"count\": 1}]}\n",[1878,3127,3128,3213],{"__ignoreMap":1876},[1881,3129,3130,3132,3134,3136,3138,3141,3143,3146,3148,3150,3152,3155,3157,3159,3161,3164,3166,3168,3170,3173,3175,3177,3179,3182,3184,3186,3188,3191,3193,3195,3197,3200,3202,3204,3206,3209,3211],{"class":1883,"line":1884},[1881,3131,2630],{"class":2177},[1881,3133,3082],{"class":1890},[1881,3135,2630],{"class":2177},[1881,3137,2245],{"class":2187},[1881,3139,3140],{"class":2177},"{",[1881,3142,2630],{"class":2177},[1881,3144,3145],{"class":2626},"job",[1881,3147,2630],{"class":2177},[1881,3149,2605],{"class":2177},[1881,3151,2635],{"class":2177},[1881,3153,3154],{"class":1890},"job-0192...",[1881,3156,2630],{"class":2177},[1881,3158,2751],{"class":2177},[1881,3160,2635],{"class":2177},[1881,3162,3163],{"class":2626},"agent",[1881,3165,2630],{"class":2177},[1881,3167,2605],{"class":2177},[1881,3169,2635],{"class":2177},[1881,3171,3172],{"class":1890},"improver",[1881,3174,2630],{"class":2177},[1881,3176,2751],{"class":2177},[1881,3178,2635],{"class":2177},[1881,3180,3181],{"class":2626},"plugin",[1881,3183,2630],{"class":2177},[1881,3185,2605],{"class":2177},[1881,3187,2635],{"class":2177},[1881,3189,3190],{"class":1890},"plugin-improver@0.1.0",[1881,3192,2630],{"class":2177},[1881,3194,2751],{"class":2177},[1881,3196,2635],{"class":2177},[1881,3198,3199],{"class":2626},"model",[1881,3201,2630],{"class":2177},[1881,3203,2605],{"class":2177},[1881,3205,2635],{"class":2177},[1881,3207,3208],{"class":1890},"smart",[1881,3210,2630],{"class":2177},[1881,3212,2643],{"class":2177},[1881,3214,3215,3218,3221,3223,3225,3227,3229,3232,3234,3236,3238,3240,3242,3244,3246,3249,3251,3253,3255,3258,3260,3262,3264,3266,3268,3270,3272,3274,3276,3278,3280,3282,3284,3286],{"class":1883,"line":1937},[1881,3216,3217],{"class":2177},"               \"",[1881,3219,3220],{"class":2626},"evidence",[1881,3222,2630],{"class":2177},[1881,3224,2605],{"class":2177},[1881,3226,2814],{"class":2177},[1881,3228,2630],{"class":2177},[1881,3230,3231],{"class":1887},"kind",[1881,3233,2630],{"class":2177},[1881,3235,2605],{"class":2177},[1881,3237,2635],{"class":2177},[1881,3239,3110],{"class":1890},[1881,3241,2630],{"class":2177},[1881,3243,2751],{"class":2177},[1881,3245,2635],{"class":2177},[1881,3247,3248],{"class":1887},"count",[1881,3250,2630],{"class":2177},[1881,3252,2605],{"class":2177},[1881,3254,3028],{"class":2678},[1881,3256,3257],{"class":2177},"},",[1881,3259,2732],{"class":2177},[1881,3261,2630],{"class":2177},[1881,3263,3231],{"class":1887},[1881,3265,2630],{"class":2177},[1881,3267,2605],{"class":2177},[1881,3269,2635],{"class":2177},[1881,3271,3116],{"class":1890},[1881,3273,2630],{"class":2177},[1881,3275,2751],{"class":2177},[1881,3277,2635],{"class":2177},[1881,3279,3248],{"class":1887},[1881,3281,2630],{"class":2177},[1881,3283,2605],{"class":2177},[1881,3285,2679],{"class":2678},[1881,3287,3288],{"class":2177},"}]}\n",[1855,3290,3291,3292,3294,3295,3298,3299,3302,3303,3306],{},"To take a version back, set its ",[1878,3293,2869],{}," to ",[1878,3296,3297],{},"withdrawn"," (or ",[1878,3300,3301],{},"quarantined",", while you look into it), with a ",[1878,3304,3305],{},"reason",", and publish a new version of the index. Never give a withdrawn name to someone else.",[2096,3308,3310],{"id":3309},"advisories","Advisories",[1855,3312,3313,3314,3317,3318,3320,3321,3324,3325,3328],{},"An index may carry known vulnerabilities of the packages plugins lock, for every cluster that trusts it to ",[2132,3315,3316],{"href":499},"scan its installed plugins"," with. They are an ",[1878,3319,3309],{}," section of the payload in the hub's format, ",[1878,3322,3323],{},"oz0-hub.advisories.v1"," (defined in ",[1878,3326,3327],{},"schemas\u002Fplugin-index\u002Fv1\u002Fadvisories.schema.json","), signed with the rest:",[1870,3330,3332],{"className":2608,"code":3331,"filename":2610,"language":2611,"meta":1876,"style":1876},"{\n  \"format\": \"oz0.plugin-index.v1\",\n  \"name\": \"acme\",\n  \"plugins\": [...],\n  \"advisories\": {\n    \"format\": \"oz0-hub.advisories.v1\",\n    \"updated\": \"2026-10-12T00:00:00Z\",\n    \"advisories\": [{\n      \"id\": \"GHSA-xxxx-xxxx-xxxx\", \"aliases\": [\"CVE-2026-1234\"],\n      \"ecosystem\": \"PyPI\", \"package\": \"httpx\",\n      \"ranges\": [{\"introduced\": \"0.20\", \"fixed\": \"0.28.1\"}],\n      \"summary\": \"One line\", \"severity\": \"high\",\n      \"references\": [\"https:\u002F\u002Fexample.com\u002Fadvisory\"]\n    }]\n  }\n}\n",[1878,3333,3334,3338,3356,3374,3392,3405,3423,3443,3455,3495,3533,3583,3621,3645,3651,3657],{"__ignoreMap":1876},[1881,3335,3336],{"class":1883,"line":1884},[1881,3337,2618],{"class":2177},[1881,3339,3340,3342,3344,3346,3348,3350,3352,3354],{"class":1883,"line":1937},[1881,3341,2623],{"class":2177},[1881,3343,2627],{"class":2626},[1881,3345,2630],{"class":2177},[1881,3347,2605],{"class":2177},[1881,3349,2635],{"class":2177},[1881,3351,2638],{"class":1890},[1881,3353,2630],{"class":2177},[1881,3355,2643],{"class":2177},[1881,3357,3358,3360,3362,3364,3366,3368,3370,3372],{"class":1883,"line":1954},[1881,3359,2623],{"class":2177},[1881,3361,2650],{"class":2626},[1881,3363,2630],{"class":2177},[1881,3365,2605],{"class":2177},[1881,3367,2635],{"class":2177},[1881,3369,2659],{"class":1890},[1881,3371,2630],{"class":2177},[1881,3373,2643],{"class":2177},[1881,3375,3376,3378,3380,3382,3384,3387,3389],{"class":1883,"line":2666},[1881,3377,2623],{"class":2177},[1881,3379,2689],{"class":2626},[1881,3381,2630],{"class":2177},[1881,3383,2605],{"class":2177},[1881,3385,3386],{"class":2177}," [",[1881,3388,2906],{"class":2187},[1881,3390,3391],{"class":2177},"],\n",[1881,3393,3394,3396,3398,3400,3402],{"class":1883,"line":2684},[1881,3395,2623],{"class":2177},[1881,3397,3309],{"class":2626},[1881,3399,2630],{"class":2177},[1881,3401,2605],{"class":2177},[1881,3403,3404],{"class":2177}," {\n",[1881,3406,3407,3409,3411,3413,3415,3417,3419,3421],{"class":1883,"line":2699},[1881,3408,2702],{"class":2177},[1881,3410,2627],{"class":1887},[1881,3412,2630],{"class":2177},[1881,3414,2605],{"class":2177},[1881,3416,2635],{"class":2177},[1881,3418,3323],{"class":1890},[1881,3420,2630],{"class":2177},[1881,3422,2643],{"class":2177},[1881,3424,3425,3427,3430,3432,3434,3436,3439,3441],{"class":1883,"line":2720},[1881,3426,2702],{"class":2177},[1881,3428,3429],{"class":1887},"updated",[1881,3431,2630],{"class":2177},[1881,3433,2605],{"class":2177},[1881,3435,2635],{"class":2177},[1881,3437,3438],{"class":1890},"2026-10-12T00:00:00Z",[1881,3440,2630],{"class":2177},[1881,3442,2643],{"class":2177},[1881,3444,3445,3447,3449,3451,3453],{"class":1883,"line":2773},[1881,3446,2702],{"class":2177},[1881,3448,3309],{"class":1887},[1881,3450,2630],{"class":2177},[1881,3452,2605],{"class":2177},[1881,3454,2696],{"class":2177},[1881,3456,3457,3460,3462,3464,3466,3468,3471,3473,3475,3477,3480,3482,3484,3486,3488,3491,3493],{"class":1883,"line":2836},[1881,3458,3459],{"class":2177},"      \"",[1881,3461,2737],{"class":2678},[1881,3463,2630],{"class":2177},[1881,3465,2605],{"class":2177},[1881,3467,2635],{"class":2177},[1881,3469,3470],{"class":1890},"GHSA-xxxx-xxxx-xxxx",[1881,3472,2630],{"class":2177},[1881,3474,2751],{"class":2177},[1881,3476,2635],{"class":2177},[1881,3478,3479],{"class":2678},"aliases",[1881,3481,2630],{"class":2177},[1881,3483,2605],{"class":2177},[1881,3485,3386],{"class":2177},[1881,3487,2630],{"class":2177},[1881,3489,3490],{"class":1890},"CVE-2026-1234",[1881,3492,2630],{"class":2177},[1881,3494,3391],{"class":2177},[1881,3496,3497,3499,3502,3504,3506,3508,3511,3513,3515,3517,3520,3522,3524,3526,3529,3531],{"class":1883,"line":2927},[1881,3498,3459],{"class":2177},[1881,3500,3501],{"class":2678},"ecosystem",[1881,3503,2630],{"class":2177},[1881,3505,2605],{"class":2177},[1881,3507,2635],{"class":2177},[1881,3509,3510],{"class":1890},"PyPI",[1881,3512,2630],{"class":2177},[1881,3514,2751],{"class":2177},[1881,3516,2635],{"class":2177},[1881,3518,3519],{"class":2678},"package",[1881,3521,2630],{"class":2177},[1881,3523,2605],{"class":2177},[1881,3525,2635],{"class":2177},[1881,3527,3528],{"class":1890},"httpx",[1881,3530,2630],{"class":2177},[1881,3532,2643],{"class":2177},[1881,3534,3535,3537,3540,3542,3544,3546,3548,3551,3553,3555,3557,3560,3562,3564,3566,3569,3571,3573,3575,3578,3580],{"class":1883,"line":2933},[1881,3536,3459],{"class":2177},[1881,3538,3539],{"class":2678},"ranges",[1881,3541,2630],{"class":2177},[1881,3543,2605],{"class":2177},[1881,3545,2814],{"class":2177},[1881,3547,2630],{"class":2177},[1881,3549,3550],{"class":2819},"introduced",[1881,3552,2630],{"class":2177},[1881,3554,2605],{"class":2177},[1881,3556,2635],{"class":2177},[1881,3558,3559],{"class":1890},"0.20",[1881,3561,2630],{"class":2177},[1881,3563,2751],{"class":2177},[1881,3565,2635],{"class":2177},[1881,3567,3568],{"class":2819},"fixed",[1881,3570,2630],{"class":2177},[1881,3572,2605],{"class":2177},[1881,3574,2635],{"class":2177},[1881,3576,3577],{"class":1890},"0.28.1",[1881,3579,2630],{"class":2177},[1881,3581,3582],{"class":2177},"}],\n",[1881,3584,3586,3588,3590,3592,3594,3596,3599,3601,3603,3605,3608,3610,3612,3614,3617,3619],{"class":1883,"line":3585},12,[1881,3587,3459],{"class":2177},[1881,3589,2789],{"class":2678},[1881,3591,2630],{"class":2177},[1881,3593,2605],{"class":2177},[1881,3595,2635],{"class":2177},[1881,3597,3598],{"class":1890},"One line",[1881,3600,2630],{"class":2177},[1881,3602,2751],{"class":2177},[1881,3604,2635],{"class":2177},[1881,3606,3607],{"class":2678},"severity",[1881,3609,2630],{"class":2177},[1881,3611,2605],{"class":2177},[1881,3613,2635],{"class":2177},[1881,3615,3616],{"class":1890},"high",[1881,3618,2630],{"class":2177},[1881,3620,2643],{"class":2177},[1881,3622,3624,3626,3629,3631,3633,3635,3637,3640,3642],{"class":1883,"line":3623},13,[1881,3625,3459],{"class":2177},[1881,3627,3628],{"class":2678},"references",[1881,3630,2630],{"class":2177},[1881,3632,2605],{"class":2177},[1881,3634,3386],{"class":2177},[1881,3636,2630],{"class":2177},[1881,3638,3639],{"class":1890},"https:\u002F\u002Fexample.com\u002Fadvisory",[1881,3641,2630],{"class":2177},[1881,3643,3644],{"class":2177},"]\n",[1881,3646,3648],{"class":1883,"line":3647},14,[1881,3649,3650],{"class":2177},"    }]\n",[1881,3652,3654],{"class":1883,"line":3653},15,[1881,3655,3656],{"class":2177},"  }\n",[1881,3658,3660],{"class":1883,"line":3659},16,[1881,3661,2936],{"class":2177},[1855,3663,3664,3666,3667,2955,3669,3672,3673,3675,3676,3679,3680,3682,3683,3685,3686,3688],{},[1878,3665,2841],{}," lists affected versions exactly; a range runs from ",[1878,3668,3550],{},[1878,3670,3671],{},"0"," for every version) up to, not including, ",[1878,3674,3568],{},", or up to and including ",[1878,3677,3678],{},"last_affected",". To take an advisory back, publish a new version of the index without it (servers skip an entry that carries OSV's ",[1878,3681,3297],{},", and an index's entry never hides another index's). ",[1878,3684,2977],{}," refuses a PyPI or npm entry that carries ",[1878,3687,3297],{}," or does not validate, with how many and why, rather than sign an index whose advisories no server would apply.",[1855,3690,3691,3692,1998,3694,3697,3698,3700,3701,2038,3704,3707,3708,3710],{},"Servers keep PyPI and npm entries, spelled exactly ",[1878,3693,3510],{},[1878,3695,3696],{},"npm",", and skip the rest, so a newer index may carry other ecosystems; ",[1878,3699,2977],{}," refuses either name in another spelling (",[1878,3702,3703],{},"pypi",[1878,3705,3706],{},"NPM","), which no server would read as it. Servers before this release ignore the section. ",[1878,3709,2977],{}," keeps it as it is.",[1855,3712,3713,3714,2245,3716,3719],{},"To list a plugin on a hub rather than run one, see ",[2132,3715,428],{"href":429},[1878,3717,3718],{},"hub submit"," writes the listing file a hub builds its index from.",[3721,3722,3723],"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 .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 .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 pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":1876,"searchDepth":1937,"depth":1937,"links":3725},[3726,3729],{"id":1864,"depth":1937,"text":1865,"children":3727},[3728],{"id":2098,"depth":1954,"text":2099},{"id":2234,"depth":1937,"text":2235,"children":3730},[3731,3732,3733,3734],{"id":2263,"depth":1954,"text":2264},{"id":2342,"depth":1954,"text":2343},{"id":2589,"depth":1954,"text":2590},{"id":3309,"depth":1954,"text":3310},"md",null,{"audience":3738,"doc_type":3739},"tenant administrators and plugin authors","how-to",{"icon":463},{"title":469,"description":1860},"sNK_OMI5pxDoLrNdiQD88DGeEssKZTx4bQSInY-r6bA",[3744,3746],{"title":465,"path":466,"stem":467,"description":3745,"icon":463,"children":-1},"Interpret version states, SBOMs and install conflicts.",{"title":473,"path":474,"stem":475,"description":3747,"icon":327,"children":-1},"Give agents a tool from PyPI, npm, a container image or a remote MCP server without writing code.",1794443022710]