[{"data":1,"prerenderedAt":3341},["ShallowReactive",2],{"navigation_docs":3,"docs-page:\u002Fbuild\u002Fapps\u002Fruntime-api":1849,"docs-surround:\u002Fbuild\u002Fapps\u002Fruntime-api":3336},[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":852,"body":1851,"description":3327,"extension":3328,"links":3329,"meta":3330,"navigation":3333,"path":853,"seo":3334,"stem":854,"__hash__":3335},"docs\u002F04.build\u002F03.apps\u002F01.runtime-api\u002F00.index.md",{"type":1852,"value":1853,"toc":3316},"minimark",[1854,1858,1870,2256,2261,2271,2296,2300,2306,2321,2326,2354,2358,2361,2459,2466,2576,2595,2608,2612,2669,2771,2774,2826,2830,2835,2929,3003,3014,3018,3021,3077,3090,3112,3125,3140,3144,3163,3196,3230,3250,3254,3261,3312],[1855,1856,1857],"p",{},"For: application developers.",[1855,1859,1860,1861,1865,1866,1869],{},"Call ",[1862,1863,1864],"code",{},"oz0.runtime.v1.RuntimeService"," on the edge's HTTPS port, ",[1862,1867,1868],{},"7443",", to run agents and inspect their jobs. The API supports Connect with JSON or protobuf, gRPC and gRPC-Web. The CLI uses this same API, and an application can use an HTTP client, gRPC library or client SDK.",[1871,1872,1873,1886],"table",{},[1874,1875,1876],"thead",{},[1877,1878,1879,1883],"tr",{},[1880,1881,1882],"th",{},"Method",[1880,1884,1885],{},"Does",[1887,1888,1889,1905,1915,1925,1935,1961,1980,1995,2008,2030,2044,2054,2071,2083,2097,2111,2121,2131,2145,2162,2182,2195,2230],"tbody",{},[1877,1890,1891,1897],{},[1892,1893,1894],"td",{},[1862,1895,1896],{},"StartJob",[1892,1898,1899,1900],{},"Starts an agent. The job's ID is the start's key: the same start again answers with that job, running or ended, and any other start under the ID is refused. See ",[1901,1902,1904],"a",{"href":1903},"\u002Fbuild\u002Fapps\u002Fruntime-api#job-ids-and-retries","job IDs and retries",[1877,1906,1907,1912],{},[1892,1908,1909],{},[1862,1910,1911],{},"GetJob",[1892,1913,1914],{},"Status, answer or error, child job IDs, and cost per branch",[1877,1916,1917,1922],{},[1892,1918,1919],{},[1862,1920,1921],{},"CancelJob",[1892,1923,1924],{},"Cancels a job and its children",[1877,1926,1927,1932],{},[1892,1928,1929],{},[1862,1930,1931],{},"ListJobs",[1892,1933,1934],{},"Recent top-level jobs, newest first",[1877,1936,1937,1942],{},[1892,1938,1939],{},[1862,1940,1941],{},"WatchJob",[1892,1943,1944,1945,1948,1949,1952,1953,1956,1957],{},"A stream of what the job and its child jobs do as it happens: text, tool calls, tool results, children and approvals, ending with the job's final state. Each event has a ",[1862,1946,1947],{},"seq"," and a ",[1862,1950,1951],{},"resume_token","; a watcher that reconnects with ",[1862,1954,1955],{},"since_seq"," and the token gets only what came after, on any edge. See ",[1901,1958,1960],{"href":1959},"\u002Fbuild\u002Fapps\u002Flive-feeds#resume","Live feeds",[1877,1962,1963,1972],{},[1892,1964,1965,1968,1969],{},[1862,1966,1967],{},"OpenFeed",", ",[1862,1970,1971],{},"UpdateFeed",[1892,1973,1974,1975,1977,1978],{},"One stream for many conversations and jobs, and the person's own chats, that a browser tab or an app keeps open; ",[1862,1976,1971],{}," adds and removes what it follows, on any edge. See ",[1901,1979,1960],{"href":886},[1877,1981,1982,1987],{},[1892,1983,1984],{},[1862,1985,1986],{},"ListApprovals",[1892,1988,1989,1990,1994],{},"Lists approvals oldest first, for a job, job tree or accessible tenants. See ",[1901,1991,1993],{"href":1992},"#listing-waiting-approvals","filters and partial results",".",[1877,1996,1997,2002],{},[1892,1998,1999],{},[1862,2000,2001],{},"DecideApproval",[1892,2003,2004,2005],{},"Approves or denies one, with a comment; admins and operators may. See ",[1901,2006,2007],{"href":270},"Approvals",[1877,2009,2010,2015],{},[1892,2011,2012],{},[1862,2013,2014],{},"GetJobTrace",[1892,2016,2017,2018,2020,2021,2024,2025,2029],{},"The job's steps from its history, with what each cost, and findings about what looks wrong. See ",[1901,2019,227],{"href":228},". For a job whose ID (or its tree's root's) starts with ",[1862,2022,2023],{},"cov.",", also the decision points it reached (",[1901,2026,2028],{"href":2027},"\u002Fimprove\u002Fevals\u002Fcoverage#policy-path-coverage","policy-path coverage",")",[1877,2031,2032,2037],{},[1892,2033,2034],{},[1862,2035,2036],{},"GetJobStep",[1892,2038,2039,2040,2043],{},"What one step read and wrote; step ",[1862,2041,2042],{},"job"," is what the job itself was started with and answered. It can hold customer data: admins and operators may, and each call is in the audit log",[1877,2045,2046,2051],{},[1892,2047,2048],{},[1862,2049,2050],{},"GetCatalog",[1892,2052,2053],{},"The tenant's agents and flows, with their input and output schemas",[1877,2055,2056,2061],{},[1892,2057,2058],{},[1862,2059,2060],{},"ListStartable",[1892,2062,2063,2064,2066,2067,1994],{},"Lists what ",[1862,2065,1896],{}," would allow for this caller, with conversation filters. See ",[1901,2068,2070],{"href":2069},"#listing-startable-agents-and-flows","startable catalog",[1877,2072,2073,2078],{},[1892,2074,2075],{},[1862,2076,2077],{},"GetJobBoard",[1892,2079,2080,2081],{},"The notes and findings the agents of a job's tree pinned to its shared board; their text and tags need the content permission, and a view of them is audited. See ",[1901,2082,246],{"href":247},[1877,2084,2085,2090],{},[1892,2086,2087],{},[1862,2088,2089],{},"GetJobWait",[1892,2091,2092,2093],{},"Why a job waits, in plain words: its pending steps, their queues and attempts, the last failure, and what each waits for. See ",[1901,2094,2096],{"href":2095},"\u002Ffleet\u002Fqueues#why-is-a-job-waiting","why is a job waiting?",[1877,2098,2099,2104],{},[1892,2100,2101],{},[1862,2102,2103],{},"ListQueues",[1892,2105,2106,2107],{},"The tenant's task queues with their backlog, their oldest task and the nodes that poll them, and why the others do not. See ",[1901,2108,2110],{"href":2109},"\u002Ffleet\u002Fqueues#queues","queues",[1877,2112,2113,2118],{},[1892,2114,2115],{},[1862,2116,2117],{},"SetJobTags",[1892,2119,2120],{},"Adds tags to a job and removes others, even after it ended; operators and above may",[1877,2122,2123,2128],{},[1892,2124,2125],{},[1862,2126,2127],{},"ExportJob",[1892,2129,2130],{},"A job as one JSON document: the job, its trace, findings and tags, and with the content permission each step's input and output, which is audited",[1877,2132,2133,2138],{},[1892,2134,2135],{},[1862,2136,2137],{},"CompareJobs",[1892,2139,2140,2141],{},"Two jobs side by side, their steps aligned. See ",[1901,2142,2144],{"href":2143},"\u002Fimprove\u002Fsearch-and-compare#compare-two-jobs","compare two jobs",[1877,2146,2147,2152],{},[1892,2148,2149],{},[1862,2150,2151],{},"RetryJob",[1892,2153,2154,2155,2158,2159,2029],{},"Starts a job again with the same agent, input, tags and budget, under a new ID; operators and above may. With an ",[1862,2156,2157],{},"Idempotency-Key"," header, a retry of the call answers with the job the first one started (",[1862,2160,2161],{},"retried",[1877,2163,2164,2175],{},[1892,2165,2166,1968,2169,1968,2172],{},[1862,2167,2168],{},"FireRoutine",[1862,2170,2171],{},"ListRoutineFires",[1862,2173,2174],{},"BackfillRoutine",[1892,2176,2177,2178],{},"Run a routine now (or as a dry run), list its fires, and run a schedule's fires for a past period. See ",[1901,2179,2181],{"href":2180},"\u002Fbuild\u002Fparts\u002Froutines#from-your-own-app","routines",[1877,2183,2184,2189],{},[1892,2185,2186],{},[1862,2187,2188],{},"ListEvents",[1892,2190,2191,2192],{},"The tenant's event sources, its latest events and the jobs that wait for one; an event's text needs the content permission. See ",[1901,2193,2194],{"href":238},"waiting for events",[1877,2196,2197,2205],{},[1892,2198,2199,1968,2202],{},[1862,2200,2201],{},"GetConversation",[1862,2203,2204],{},"ListConversations",[1892,2206,2207,2208,2211,2212,2214,2215,2218,2219,2222,2223,2226,2227],{},"A conversation's latest turns (50, or ",[1862,2209,2210],{},"limit"," up to 200), by its ID or one of its jobs, with what was said and answered for those with the content permission (audited); and the tenant's latest conversations, facts only. ",[1862,2213,1896],{}," continues one with ",[1862,2216,2217],{},"continue_from"," or ",[1862,2220,2221],{},"conversation",". Someone else's private chat needs ",[1862,2224,2225],{},"reason",". See ",[1901,2228,2229],{"href":252},"conversations",[1877,2231,2232,2249],{},[1892,2233,2234,1968,2237,1968,2240,1968,2243,1968,2246],{},[1862,2235,2236],{},"ListMyConversations",[1862,2238,2239],{},"UpdateMyConversation",[1862,2241,2242],{},"ShareConversation",[1862,2244,2245],{},"UnshareConversation",[1862,2247,2248],{},"ListConversationShares",[1892,2250,2251,2252],{},"A person's chats, for accounts only: their own and those shared with them, pinned first, with a cursor; pin, archive, rename, mark read, remove from the list (which erases nothing); the owner's shares. See ",[1901,2253,2255],{"href":2254},"\u002Fagents\u002Fconversations\u002Faccess-and-history#chats-yours-private-by-default","chats",[2257,2258,2260],"h3",{"id":2259},"listing-waiting-approvals","Listing waiting approvals",[1855,2262,2263,2264,2266,2267,2270],{},"The approvals list shows what waits for a person's decision across the tenant's running jobs, oldest first. ",[1862,2265,2042],{}," narrows it to one job; adding ",[1862,2268,2269],{},"tree"," includes jobs it delegated to.",[1855,2272,2273,2274,2218,2277,2280,2281,2284,2285,1968,2288,2291,2292,2295],{},"Across tenants, ",[1862,2275,2276],{},"every_tenant",[1862,2278,2279],{},"tenants"," (at most 20 named tenants) lists approvals in each tenant the caller may read. Each approval names its ",[1862,2282,2283],{},"tenant",". The answer reports ",[1862,2286,2287],{},"tenants_read",[1862,2289,2290],{},"tenants_refused"," where the caller lacks the required role, and ",[1862,2293,2294],{},"tenants_unread"," for tenants beyond the first 20 by name or served by another region. One unread or refused tenant does not fail the whole request.",[2257,2297,2299],{"id":2298},"listing-startable-agents-and-flows","Listing startable agents and flows",[1855,2301,2302,2303,2305],{},"The startable catalog lists agents and flows that ",[1862,2304,1896],{}," would accept from the caller now. It applies start permissions or agent grants, key scopes, retirement and kill switches.",[1855,2307,2308,2309,2312,2313,2316,2317,1994],{},"Entries say whether they take part in conversations and whose conversations they may continue. ",[1862,2310,2311],{},"conversations_only"," narrows new-chat choices; ",[1862,2314,2315],{},"continues"," narrows hand-over targets. A reader gets an empty list with the reason. The console's chat picker uses this catalog. See ",[1901,2318,2320],{"href":2319},"\u002Fgetting-started\u002Fweb-ui\u002Fchats#the-chat-drawer","the chat drawer",[2322,2323,2325],"h2",{"id":2324},"mcp-a2a-and-ag-ui","MCP, A2A and AG-UI",[1855,2327,2328,2329,2332,2333,2336,2337,2339,2340,2343,2344,2332,2347,2350,2351,2353],{},"The same agents, for the same callers, are also an ",[1901,2330,2331],{"href":896},"MCP server"," at ",[1862,2334,2335],{},"POST \u002Fmcp\u002F\u003Ctenant>",", with tasks for long jobs, ",[1901,2338,909],{"href":910}," with signed Agent Cards at ",[1862,2341,2342],{},"\u002Fa2a\u002F\u003Ctenant>\u002F\u003Cagent>",", and an ",[1901,2345,2346],{"href":878},"AG-UI route",[1862,2348,2349],{},"POST \u002Fv1\u002Fagui\u002Fagents\u002F\u003Cagent>"," for apps built on an AG-UI client, where approvals and questions are the protocol's interrupts. All of them start jobs through ",[1862,2352,1896],{},", so its rules hold there too.",[2322,2355,2357],{"id":2356},"typed-http-routes-and-the-openapi-document","Typed HTTP routes and the OpenAPI document",[1855,2359,2360],{},"Next to the Connect API, the edge has plain HTTP routes, for the same callers:",[1871,2362,2363,2372],{},[1874,2364,2365],{},[1877,2366,2367,2370],{},[1880,2368,2369],{},"Route",[1880,2371,1885],{},[1887,2373,2374,2392,2402,2416,2432,2445],{},[1877,2375,2376,2381],{},[1892,2377,2378],{},[1862,2379,2380],{},"POST \u002Fv1\u002Fagents\u002F\u003Cname>\u002Fjobs",[1892,2382,2383,2384,2387,2388,2391],{},"Starts an agent or a flow with its input as the body: JSON, or ",[1862,2385,2386],{},"text\u002Fplain"," for a text input. It answers ",[1862,2389,2390],{},"201"," with the job.",[1877,2393,2394,2399],{},[1892,2395,2396],{},[1862,2397,2398],{},"GET \u002Fv1\u002Fjobs\u002F\u003Cid>",[1892,2400,2401],{},"The job: its status, and its answer once it has one",[1877,2403,2404,2409],{},[1892,2405,2406],{},[1862,2407,2408],{},"GET \u002Fv1\u002Fopenapi.json",[1892,2410,2411,2412,2415],{},"An OpenAPI 3.1 document of the tenant's agents and flows; ",[1862,2413,2414],{},"?plugin=\u003Cname>"," for one plugin's",[1877,2417,2418,2423],{},[1892,2419,2420],{},[1862,2421,2422],{},"GET \u002Fv1\u002Fjobs\u002F\u003Cid>\u002Fevents",[1892,2424,2425,2426,2428,2429],{},"The job's events as Server-Sent Events, what ",[1862,2427,1941],{}," streams, resumed with ",[1862,2430,2431],{},"Last-Event-ID",[1877,2433,2434,2442],{},[1892,2435,2436,1968,2439],{},[1862,2437,2438],{},"POST \u002Fv1\u002Ffeeds",[1862,2440,2441],{},"GET \u002Fv1\u002Ffeeds\u002F\u003Cid>\u002Fevents",[1892,2443,2444],{},"A feed made for Server-Sent Events, and its events",[1877,2446,2447,2452],{},[1892,2448,2449],{},[1862,2450,2451],{},"POST \u002Fv1\u002Fstream-tickets",[1892,2453,2454,2455,2458],{},"A one-time ticket that opens one of those streams in a browser's ",[1862,2456,2457],{},"EventSource",", which cannot send a key",[1855,2460,2461,2462,2465],{},"The streams, their tickets and the tenant's allowed origins for pages elsewhere are on ",[1901,2463,1960],{"href":2464},"\u002Fbuild\u002Fapps\u002Flive-feeds\u002Fbrowser-and-access#server-sent-events",". An API key in a URL is refused on them.",[2467,2468,2474],"pre",{"className":2469,"code":2470,"filename":2471,"language":2472,"meta":2473,"style":2473},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl --cacert ca.crt -H \"Authorization: Bearer $OZ0_API_KEY\" -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"repo\": \"acme\u002Fapi\", \"pr\": 42}' 'https:\u002F\u002Fedge.example.com:7443\u002Fv1\u002Fagents\u002Facme-reviewer\u002Fjobs?tenant=acme'\ncurl --cacert ca.crt -H \"Authorization: Bearer $OZ0_API_KEY\" 'https:\u002F\u002Fedge.example.com:7443\u002Fv1\u002Fopenapi.json?tenant=acme' > oz0.json\n","Terminal","bash","",[1862,2475,2476,2523,2544],{"__ignoreMap":2473},[2477,2478,2481,2485,2489,2492,2495,2499,2502,2506,2509,2511,2514,2517,2520],"span",{"class":2479,"line":2480},"line",1,[2477,2482,2484],{"class":2483},"sBMFI","curl",[2477,2486,2488],{"class":2487},"sfazB"," --cacert",[2477,2490,2491],{"class":2487}," ca.crt",[2477,2493,2494],{"class":2487}," -H",[2477,2496,2498],{"class":2497},"sMK4o"," \"",[2477,2500,2501],{"class":2487},"Authorization: Bearer ",[2477,2503,2505],{"class":2504},"sTEyZ","$OZ0_API_KEY",[2477,2507,2508],{"class":2497},"\"",[2477,2510,2494],{"class":2487},[2477,2512,2513],{"class":2497}," '",[2477,2515,2516],{"class":2487},"Content-Type: application\u002Fjson",[2477,2518,2519],{"class":2497},"'",[2477,2521,2522],{"class":2504}," \\\n",[2477,2524,2526,2529,2531,2534,2536,2538,2541],{"class":2479,"line":2525},2,[2477,2527,2528],{"class":2487},"  -d",[2477,2530,2513],{"class":2497},[2477,2532,2533],{"class":2487},"{\"repo\": \"acme\u002Fapi\", \"pr\": 42}",[2477,2535,2519],{"class":2497},[2477,2537,2513],{"class":2497},[2477,2539,2540],{"class":2487},"https:\u002F\u002Fedge.example.com:7443\u002Fv1\u002Fagents\u002Facme-reviewer\u002Fjobs?tenant=acme",[2477,2542,2543],{"class":2497},"'\n",[2477,2545,2547,2549,2551,2553,2555,2557,2559,2561,2563,2565,2568,2570,2573],{"class":2479,"line":2546},3,[2477,2548,2484],{"class":2483},[2477,2550,2488],{"class":2487},[2477,2552,2491],{"class":2487},[2477,2554,2494],{"class":2487},[2477,2556,2498],{"class":2497},[2477,2558,2501],{"class":2487},[2477,2560,2505],{"class":2504},[2477,2562,2508],{"class":2497},[2477,2564,2513],{"class":2497},[2477,2566,2567],{"class":2487},"https:\u002F\u002Fedge.example.com:7443\u002Fv1\u002Fopenapi.json?tenant=acme",[2477,2569,2519],{"class":2497},[2477,2571,2572],{"class":2497}," >",[2477,2574,2575],{"class":2487}," oz0.json\n",[1855,2577,2578,2579,2582,2583,2586,2587,2590,2591,2594],{},"The document has one operation per agent, ",[1862,2580,2581],{},"run_\u003Cname>",". Its request body is the agent's input schema, and its response is the job, with ",[1862,2584,2585],{},"output"," typed by the agent's output schema. Generate a client from it with any OpenAPI generator. It changes when a plugin changes an agent or a schema, and its ",[1862,2588,2589],{},"ETag"," says when. A plugin installed before Orchestrator Zero put schemas in plugins' bundles needs ",[1862,2592,2593],{},"plugin update"," before its agents' schemas appear.",[1855,2596,2597,2598,2600,2601,2604,2605,2607],{},"With thousands of agents the whole document is megabytes (17.6 MB for 10,000): ",[1862,2599,2414],{},", and ",[1862,2602,2603],{},"oz0 client generate --plugin \u003Cname>",", describe one plugin's agents and flows, under an ",[1862,2606,2589],{}," that names the plugin.",[2322,2609,2611],{"id":2610},"start-a-job-with-curl","Start a job with curl",[2467,2613,2615],{"className":2469,"code":2614,"filename":2471,"language":2472,"meta":2473,"style":2473},"curl --cacert ca.crt -H \"Authorization: Bearer $OZ0_API_KEY\" \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"agent\": \"acme-reviewer\", \"input\": {\"repo\": \"acme\u002Fapi\", \"pr\": 42}, \"timeout\": \"900s\", \"tenant\": \"acme\"}' \\\n  https:\u002F\u002Fedge.example.com:7443\u002Foz0.runtime.v1.RuntimeService\u002FStartJob\n",[1862,2616,2617,2637,2650,2663],{"__ignoreMap":2473},[2477,2618,2619,2621,2623,2625,2627,2629,2631,2633,2635],{"class":2479,"line":2480},[2477,2620,2484],{"class":2483},[2477,2622,2488],{"class":2487},[2477,2624,2491],{"class":2487},[2477,2626,2494],{"class":2487},[2477,2628,2498],{"class":2497},[2477,2630,2501],{"class":2487},[2477,2632,2505],{"class":2504},[2477,2634,2508],{"class":2497},[2477,2636,2522],{"class":2504},[2477,2638,2639,2642,2644,2646,2648],{"class":2479,"line":2525},[2477,2640,2641],{"class":2487},"  -H",[2477,2643,2513],{"class":2497},[2477,2645,2516],{"class":2487},[2477,2647,2519],{"class":2497},[2477,2649,2522],{"class":2504},[2477,2651,2652,2654,2656,2659,2661],{"class":2479,"line":2546},[2477,2653,2528],{"class":2487},[2477,2655,2513],{"class":2497},[2477,2657,2658],{"class":2487},"{\"agent\": \"acme-reviewer\", \"input\": {\"repo\": \"acme\u002Fapi\", \"pr\": 42}, \"timeout\": \"900s\", \"tenant\": \"acme\"}",[2477,2660,2519],{"class":2497},[2477,2662,2522],{"class":2504},[2477,2664,2666],{"class":2479,"line":2665},4,[2477,2667,2668],{"class":2487},"  https:\u002F\u002Fedge.example.com:7443\u002Foz0.runtime.v1.RuntimeService\u002FStartJob\n",[2467,2670,2674],{"className":2671,"code":2672,"language":2673,"meta":2473,"style":2473},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ \"job\": { \"id\": \"job-bb270cf1-...\", \"agent\": \"acme-reviewer\", \"status\": \"JOB_STATUS_RUNNING\", \"startedAt\": \"...\" } }\n","json",[1862,2675,2676],{"__ignoreMap":2473},[2477,2677,2678,2681,2683,2686,2688,2691,2694,2696,2699,2701,2703,2705,2708,2710,2713,2715,2718,2720,2722,2724,2727,2729,2731,2733,2736,2738,2740,2742,2745,2747,2749,2751,2754,2756,2758,2760,2763,2765,2768],{"class":2479,"line":2480},[2477,2679,2680],{"class":2497},"{",[2477,2682,2498],{"class":2497},[2477,2684,2042],{"class":2685},"spNyl",[2477,2687,2508],{"class":2497},[2477,2689,2690],{"class":2497},":",[2477,2692,2693],{"class":2497}," {",[2477,2695,2498],{"class":2497},[2477,2697,2698],{"class":2483},"id",[2477,2700,2508],{"class":2497},[2477,2702,2690],{"class":2497},[2477,2704,2498],{"class":2497},[2477,2706,2707],{"class":2487},"job-bb270cf1-...",[2477,2709,2508],{"class":2497},[2477,2711,2712],{"class":2497},",",[2477,2714,2498],{"class":2497},[2477,2716,2717],{"class":2483},"agent",[2477,2719,2508],{"class":2497},[2477,2721,2690],{"class":2497},[2477,2723,2498],{"class":2497},[2477,2725,2726],{"class":2487},"acme-reviewer",[2477,2728,2508],{"class":2497},[2477,2730,2712],{"class":2497},[2477,2732,2498],{"class":2497},[2477,2734,2735],{"class":2483},"status",[2477,2737,2508],{"class":2497},[2477,2739,2690],{"class":2497},[2477,2741,2498],{"class":2497},[2477,2743,2744],{"class":2487},"JOB_STATUS_RUNNING",[2477,2746,2508],{"class":2497},[2477,2748,2712],{"class":2497},[2477,2750,2498],{"class":2497},[2477,2752,2753],{"class":2483},"startedAt",[2477,2755,2508],{"class":2497},[2477,2757,2690],{"class":2497},[2477,2759,2498],{"class":2497},[2477,2761,2762],{"class":2487},"...",[2477,2764,2508],{"class":2497},[2477,2766,2767],{"class":2497}," }",[2477,2769,2770],{"class":2497}," }\n",[1855,2772,2773],{},"Then poll it:",[2467,2775,2777],{"className":2469,"code":2776,"filename":2471,"language":2472,"meta":2473,"style":2473},"curl --cacert ca.crt -H \"Authorization: Bearer $OZ0_API_KEY\" \\\n  -H 'Content-Type: application\u002Fjson' -d '{\"id\": \"job-bb270cf1-...\", \"tenant\": \"acme\"}' \\\n  https:\u002F\u002Fedge.example.com:7443\u002Foz0.runtime.v1.RuntimeService\u002FGetJob\n",[1862,2778,2779,2799,2821],{"__ignoreMap":2473},[2477,2780,2781,2783,2785,2787,2789,2791,2793,2795,2797],{"class":2479,"line":2480},[2477,2782,2484],{"class":2483},[2477,2784,2488],{"class":2487},[2477,2786,2491],{"class":2487},[2477,2788,2494],{"class":2487},[2477,2790,2498],{"class":2497},[2477,2792,2501],{"class":2487},[2477,2794,2505],{"class":2504},[2477,2796,2508],{"class":2497},[2477,2798,2522],{"class":2504},[2477,2800,2801,2803,2805,2807,2809,2812,2814,2817,2819],{"class":2479,"line":2525},[2477,2802,2641],{"class":2487},[2477,2804,2513],{"class":2497},[2477,2806,2516],{"class":2487},[2477,2808,2519],{"class":2497},[2477,2810,2811],{"class":2487}," -d",[2477,2813,2513],{"class":2497},[2477,2815,2816],{"class":2487},"{\"id\": \"job-bb270cf1-...\", \"tenant\": \"acme\"}",[2477,2818,2519],{"class":2497},[2477,2820,2522],{"class":2504},[2477,2822,2823],{"class":2479,"line":2546},[2477,2824,2825],{"class":2487},"  https:\u002F\u002Fedge.example.com:7443\u002Foz0.runtime.v1.RuntimeService\u002FGetJob\n",[2322,2827,2829],{"id":2828},"requests-and-responses","Requests and responses",[1855,2831,2832,2834],{},[1862,2833,1896],{}," takes:",[2836,2837,2838,2844,2853,2859,2883,2888],"field-group",{},[2839,2840,2843],"field",{"name":2717,"type":2841,":required":2842},"string","true","The agent's or the flow's name, as the catalog lists it.",[2839,2845,2848,2849,2852],{"name":2846,"type":2847},"input","value","Text, or JSON that matches the agent's input schema. The edge checks it against the schema before the job starts: an input that does not fit is refused with ",[1862,2850,2851],{},"invalid_argument"," (HTTP 400) and what is wrong, and no job is made.",[2839,2854,2855,2856,1994],{"name":2283,"type":2841},"The tenant to run in; empty means ",[1862,2857,2858],{},"default",[2839,2860,2861,2862,2864,2865,1968,2868,1968,2871,2873,2874,2877,2878,2226,2881,1994],{"name":2698,"type":2841},"An ID for the job, which is the start's idempotency key; empty means a new one (derived from the ",[1862,2863,2157],{}," header when the request has one). May not contain ",[1862,2866,2867],{},"\u002F",[1862,2869,2870],{},"\\",[1862,2872,2508],{}," or control characters. The same start again under it answers with that job and ",[1862,2875,2876],{},"retried: true","; another start under it is refused with ",[1862,2879,2880],{},"already_exists",[1901,2882,1904],{"href":1903},[2839,2884,2887],{"name":2885,"type":2886},"timeout","duration","How long the job may run in all, on top of the agent's own limits.",[2839,2889,2892,2893,1968,2896,1968,2899,1968,2902,1968,2904,1968,2907,2910,2911,2913,2914,2916,2917,2919,2920,2923,2924,2928],{"name":2890,"type":2891},"recordedCalls","RecordedCall[]","Model answers to give the job instead of calling a provider: the lines of an eval's cassette (",[1862,2894,2895],{},"provider",[1862,2897,2898],{},"path",[1862,2900,2901],{},"requestSha256",[1862,2903,2735],{},[1862,2905,2906],{},"contentType",[1862,2908,2909],{},"body","). The edge answers the job's model calls, and its child jobs', from them in order, at no cost. It needs the tenant's admin role, and the job is marked as a replay. Leave ",[1862,2912,2698],{}," empty: such a job always gets a new ID of its own, runs for at most seven days, and while its recording is kept, a ",[1862,2915,1896],{}," with that ",[1862,2918,2698],{}," is refused (",[1862,2921,2922],{},"FailedPrecondition","). The ",[1901,2925,2927],{"href":2926},"\u002Fbuild\u002Fplugins\u002Fstudio\u002Ftest-and-explain#the-test-bench","test bench"," uses it.",[1855,2930,2931,2932,2935,2936,1968,2938,1968,2940,1968,2942,1968,2944,1968,2947,2949,2950,1968,2953,2956,2957,2960,2961,2964,2965,2968,2969,2971,2972,2975,2976,2978,2979,1968,2982,1968,2985,1968,2988,2991,2992,2995,2996,2999,3000,1994],{},"A ",[1862,2933,2934],{},"Job"," has ",[1862,2937,2698],{},[1862,2939,2717],{},[1862,2941,2735],{},[1862,2943,2753],{},[1862,2945,2946],{},"closedAt",[1862,2948,2585],{}," (the answer, text or JSON), ",[1862,2951,2952],{},"error",[1862,2954,2955],{},"children"," (direct child job IDs), ",[1862,2958,2959],{},"approvals"," (what it waits for, while it runs), ",[1862,2962,2963],{},"flow"," (true for a flow's job), ",[1862,2966,2967],{},"recording"," (for a job started with ",[1862,2970,2890],{},": how many it had, how many were used, and what differed) and ",[1862,2973,2974],{},"cost",". ",[1862,2977,2974],{}," holds the totals (",[1862,2980,2981],{},"usd",[1862,2983,2984],{},"calls",[1862,2986,2987],{},"inputTokens",[1862,2989,2990],{},"outputTokens",") and ",[1862,2993,2994],{},"branches",": one entry per job in the tree, the job itself first, with its agent, models, nodes, tokens, cached tokens and cost, and ",[1862,2997,2998],{},"translated"," when its calls went through a ",[1901,3001,3002],{"href":1587},"translating provider",[1855,3004,3005,3007,3008,3010,3011,3013],{},[1862,3006,1896],{}," answers with ",[1862,3009,2042],{}," and ",[1862,3012,2161],{},", which is true when the start was a retry and nothing started again.",[2322,3015,3017],{"id":3016},"job-ids-and-retries","Job IDs and retries",[1855,3019,3020],{},"A start may reach the edge and be applied even when its answer is lost on the way back, so a client that retries must\nnot start a second job. The job's ID is the start's idempotency key:",[3022,3023,3024,3031,3048,3065,3071,3074],"ul",{},[3025,3026,3027,3028,3030],"li",{},"The same start again under an ID, the same agent, input, tags, team, budget, timeout, data subjects,\nconversation and other options, from the same caller, answers with the job of that ID as it is, running or ended,\nwith ",[1862,3029,2876],{},". Nothing runs again, nothing is counted against a quota again, and nothing is audited as a start.",[3025,3032,3033,3034,3036,3037,3040,3041,3043,3044,3047],{},"Another start under the ID (another input, agent, option or caller) is refused with ",[1862,3035,2880],{}," (HTTP 409)\nand a detail, ",[1862,3038,3039],{},"oz0.runtime.v1.IdConflict",", whose ",[1862,3042,2225],{}," is ",[1862,3045,3046],{},"oz0_id_conflict",", with the job's ID and, when you may\nread that job, its start time. The refusal comes before anything of the start happens: no quota, budget, turn or\nfile hand-over. A job that ended never runs again under its ID: start a new job under a new ID.",[3025,3049,3050,3051,3053,3054,3057,3058,3061,3062,3064],{},"Without an ID, send an ",[1862,3052,2157],{}," header (1 to 128 visible ASCII characters, such as a UUID) instead: the\nedge derives the job's ID from you and the key, so the same start with the same key is the same job, and the same key\nwith another request is refused as above. ",[1862,3055,3056],{},"oz0 run"," and the SDKs send one on every start without an ID and retry\n",[1862,3059,3060],{},"unavailable"," with it. A start with ",[1862,3063,2890],{}," takes none: it always gets a new ID.",[3025,3066,3067,3068,3070],{},"An ID the edge gave (a start without an ID or a key) is the job's alone: no start with that ",[1862,3069,2698],{}," is a retry of it.",[3025,3072,3073],{},"How long: an ID stays taken for as long as its job's history is kept, the tenant's retention. After that it is\nfree again.",[3025,3075,3076],{},"Another caller's job: the caller is part of the request, so a start under someone else's job ID is refused, never\njoined.",[1855,3078,3079,3010,3081,3083,3084,3086,3087,3089],{},[1862,3080,2151],{},[1862,3082,2168],{}," take the ",[1862,3085,2157],{}," header the same way: a retry of the call answers with the job\nor fire the first call started (",[1862,3088,2876],{},"), and another request under the key is refused.",[1855,3091,3092,3093,3096,3097,3100,3101,3103,3104,1968,3106,3010,3108,3111],{},"The REST start\n(",[1862,3094,3095],{},"POST \u002Fv1\u002Fagents\u002F{agent}\u002Fjobs",") takes the header too, answers a retry with ",[1862,3098,3099],{},"200"," instead of ",[1862,3102,2390],{},", and its JSON error\ncarries ",[1862,3105,2225],{},[1862,3107,2042],{},[1862,3109,3110],{},"started_at"," for a refused ID.",[1855,3113,3114,3115,3118,3119,3121,3122,1994],{},"An ",[1901,3116,3117],{"href":878},"AG-UI"," resume sent again with the same\nrun ID (or ",[1862,3120,2157],{},") answers the decisions its first try made as made, and decides what is left. The admin\nAPI's calls take the same header: see ",[1901,3123,3124],{"href":1819},"the admin API",[1855,3126,3127,3128,3131,3132,3135,3136,3139],{},"The protobuf definition is in ",[1862,3129,3130],{},"proto\u002Foz0\u002Fruntime\u002Fv1\u002F"," in the repository: the service in ",[1862,3133,3134],{},"runtime.proto",", its messages in the ",[1862,3137,3138],{},"runtime_*.proto"," files beside it.",[2322,3141,3143],{"id":3142},"client-sdks","Client SDKs",[1855,3145,3146,3147,3149,3150,3153,3154,3149,3156,3159,3160,3162],{},"Typed clients for three languages are built from that file in the same change as the API, and carry the server's version: the ",[1901,3148,863],{"href":864}," (",[1862,3151,3152],{},"oz0-client","), the ",[1901,3155,868],{"href":869},[1862,3157,3158],{},"@oz0\u002Fclient",", Node 24) and the ",[1901,3161,873],{"href":874},". Each starts a job and waits for it, watches it, answers its questions and decides its approvals, and reads the catalog and what jobs cost; every other method is there too, typed. For one tenant's agents with their own input and output types, generate wrappers from its OpenAPI document:",[2467,3164,3166],{"className":2469,"code":3165,"filename":2471,"language":2472,"meta":2473,"style":2473},"oz0 client generate --tenant acme --lang python --out src\u002Foz0agents\n",[1862,3167,3168],{"__ignoreMap":2473},[2477,3169,3170,3172,3175,3178,3181,3184,3187,3190,3193],{"class":2479,"line":2480},[2477,3171,1714],{"class":2483},[2477,3173,3174],{"class":2487}," client",[2477,3176,3177],{"class":2487}," generate",[2477,3179,3180],{"class":2487}," --tenant",[2477,3182,3183],{"class":2487}," acme",[2477,3185,3186],{"class":2487}," --lang",[2477,3188,3189],{"class":2487}," python",[2477,3191,3192],{"class":2487}," --out",[2477,3194,3195],{"class":2487}," src\u002Foz0agents\n",[1855,3197,3198,3043,3201,1968,3204,2218,3207,3210,3211,3214,3215,2218,3218,3221,3222,3225,3226,3229],{},[1862,3199,3200],{},"--lang",[1862,3202,3203],{},"python",[1862,3205,3206],{},"ts",[1862,3208,3209],{},"go",". The command reads the document with the CLI context's operator certificate, or with an API key from ",[1862,3212,3213],{},"OZ0_API_KEY"," when ",[1862,3216,3217],{},"--url",[1862,3219,3220],{},"OZ0_URL"," names the edge (",[1862,3223,3224],{},"--ca-file"," for its CA), or from a saved file with ",[1862,3227,3228],{},"--from",". Run again, it leaves a file generated from the same catalog alone, so an app's CI can run it on every build; a file from another version of the generator, or for another tenant or Go package, is written again.",[1855,3231,3232,3233,3236,3237,3240,3241,2218,3247,1994],{},"From v1.0 the API only grows: ",[1862,3234,3235],{},"make proto-breaking"," checks every change against the last release with ",[1862,3238,3239],{},"buf breaking",", so an SDK or a client you generated yourself keeps working with newer servers. For another language, generate a client from the protobuf file with ",[1901,3242,3246],{"href":3243,"rel":3244},"https:\u002F\u002Fbuf.build",[3245],"nofollow","buf",[1862,3248,3249],{},"protoc",[2322,3251,3253],{"id":3252},"related-tasks","Related tasks",[3022,3255,3256],{},[3025,3257,3258,3260],{},[1901,3259,859],{"href":860},": Authenticate clients and apps acting for individual people.",[3262,3263,3264],"legacy-sections",{},[3022,3265,3266,3277,3286,3294,3303],{},[3025,3267,3268,3272,3273],{},[2477,3269,3271],{"id":3270},"admin-keys","Section",": ",[1901,3274,3276],{"href":3275},"\u002Fbuild\u002Fapps\u002Fruntime-api\u002Fauthentication#admin-keys","admin keys",[3025,3278,3279,3272,3282],{},[2477,3280,3271],{"id":3281},"apps-that-act-as-their-people",[1901,3283,3285],{"href":3284},"\u002Fbuild\u002Fapps\u002Fruntime-api\u002Fauthentication#apps-that-act-as-their-people","apps that act as their people",[3025,3287,3288,3272,3291],{},[2477,3289,3271],{"id":3290},"authentication",[1901,3292,3290],{"href":3293},"\u002Fbuild\u002Fapps\u002Fruntime-api\u002Fauthentication#authentication",[3025,3295,3296,3272,3299],{},[2477,3297,3271],{"id":3298},"keys-scoped-to-agents-and-flows",[1901,3300,3302],{"href":3301},"\u002Fbuild\u002Fapps\u002Fruntime-api\u002Fauthentication#keys-scoped-to-agents-and-flows","keys scoped to agents and flows",[3025,3304,3305,3272,3308],{},[2477,3306,3271],{"id":3307},"what-a-key-creates-is-labelled-with-it",[1901,3309,3311],{"href":3310},"\u002Fbuild\u002Fapps\u002Fruntime-api\u002Fauthentication#what-a-key-creates-is-labelled-with-it","what a key creates is labelled with it",[3313,3314,3315],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .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 .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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":2473,"searchDepth":2525,"depth":2525,"links":3317},[3318,3319,3320,3321,3322,3323,3324,3325,3326],{"id":2259,"depth":2546,"text":2260},{"id":2298,"depth":2546,"text":2299},{"id":2324,"depth":2525,"text":2325},{"id":2356,"depth":2525,"text":2357},{"id":2610,"depth":2525,"text":2611},{"id":2828,"depth":2525,"text":2829},{"id":3016,"depth":2525,"text":3017},{"id":3142,"depth":2525,"text":3143},{"id":3252,"depth":2525,"text":3253},"Start and inspect jobs through the edge API.","md",null,{"audience":3331,"doc_type":3332},"application developers","how-to",{"icon":857},{"title":852,"description":3327},"-b8RmVMl_g72sjldwQmBM1Z0qarGDqvkysPPyxpQXJg",[3337,3339],{"title":850,"path":846,"stem":847,"description":3338,"children":-1},"Choose a task in applications and clients.",{"title":859,"path":860,"stem":861,"description":3340,"icon":857,"children":-1},"Authenticate clients and apps acting for individual people.",1794442998771]