[{"data":1,"prerenderedAt":218},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fv2\u002Ffleet\u002Fboundary":3},{"id":4,"title":5,"body":6,"description":16,"extension":211,"meta":212,"navigation":213,"path":214,"seo":215,"stem":216,"__hash__":217},"docs\u002Fdocs\u002Fv2\u002Ffleet\u002Fboundary.md","The Boundary",{"type":7,"value":8,"toc":202},"minimark",[9,13,17,28,31,36,39,58,61,65,71,77,125,131,135,141,144,148,151,156,164,167,171,181,187,190,193],[10,11,5],"h1",{"id":12},"the-boundary",[14,15,16],"p",{},"An agent is a complete thing with one way in and one way out.",[14,18,19,23,24,27],{},[20,21,22],"strong",{},"In:"," text, audio, images — stimuli.\n",[20,25,26],{},"Out:"," text, audio, images, and actions.",[14,29,30],{},"That is the whole surface. It does not widen because the caller happens to be another\nagent rather than a person.",[32,33,35],"h2",{"id":34},"what-this-rules-out","What this rules out",[14,37,38],{},"None of these exist, and none of them will:",[40,41,42,46,49,52,55],"ul",{},[43,44,45],"li",{},"subscribing to another agent's hooks",[43,47,48],{},"reading another agent's session or memory",[43,50,51],{},"calling another agent's tools directly",[43,53,54],{},"waiting on another agent's boot, or booting in a required order",[43,56,57],{},"sharing a policy, a capsule, or a context between agents",[14,59,60],{},"Each looks like a small convenience. Each turns two independent agents into one tangled\nthing that only works in a particular arrangement.",[32,62,64],{"id":63},"why-the-constraint-is-worth-it","Why the constraint is worth it",[14,66,67,70],{},[20,68,69],{},"Agents stay whole."," Install an agent, run it, and it works — because it never assumed\nwhat else was running. That is what makes agents publishable and replaceable, and it\nevaporates the moment one depends on another's internals.",[14,72,73,76],{},[20,74,75],{},"Location stops mattering."," If the only way in is a stimulus, it makes no difference\nwhether the agent is in this process, elsewhere on your laptop, or deployed behind a URL.\nMoving one to the cloud is a change of address, not a rewrite.",[78,79,80,93],"table",{},[81,82,83],"thead",{},[84,85,86,90],"tr",{},[87,88,89],"th",{},"Where",[87,91,92],{},"How you reach it",[94,95,96,109,117],"tbody",{},[84,97,98,102],{},[99,100,101],"td",{},"Booted by your script",[99,103,104,105],{},"the handle from ",[106,107,108],"code",{},"Axon()",[84,110,111,114],{},[99,112,113],{},"Running elsewhere on this machine",[99,115,116],{},"its local HTTP address",[84,118,119,122],{},[99,120,121],{},"Deployed",[99,123,124],{},"its URL, with a connect token",[14,126,127,130],{},[20,128,129],{},"Boot order stops mattering."," Hooks fire during boot, before other agents exist — so\ncross-agent subscriptions aren't merely inadvisable, they're often impossible to satisfy.\nYou do not synchronise a computer's startup with its monitor's; you assume both come up,\nthen use them.",[32,132,134],{"id":133},"the-escape-hatch","The escape hatch",[14,136,137,138],{},"One, deliberately narrow: ",[20,139,140],{},"a tool can do anything.",[14,142,143],{},"If an agent needs a capability the protocol doesn't cover, a tool author can build it —\nincluding one that spawns or drives another agent. That stays contained, because it is one\nagent's implementation detail rather than a platform concept. Anything not expressible\nthrough stimuli is expressible in a tool, and the cost is that you own it.",[32,145,147],{"id":146},"when-two-agents-shouldnt-be-two-agents","When two agents shouldn't be two agents",[14,149,150],{},"Sometimes the coupling you want means the line is in the wrong place. The test:",[14,152,153],{},[20,154,155],{},"Could this agent be published on its own, and would anyone else install it?",[14,157,158,159,163],{},"If yes, it is a real agent and talks to others through the protocol. If no — if it exists\nsolely to serve one caller that knows its internals — it is a ",[160,161,162],"em",{},"part"," of that agent. Make it\na tool, a module, or a capsule-side subagent. Those are designed for tight coupling.",[14,165,166],{},"Reaching for cross-agent hooks usually means this question was answered wrong.",[32,168,170],{"id":169},"how-agents-talk","How agents talk",[14,172,173,176,177,180],{},[20,174,175],{},"Request"," — send a stimulus and wait. An HTTP call to another agent's route, or\n",[106,178,179],{},"request()"," through a handle you booted.",[14,182,183,186],{},[20,184,185],{},"Emission"," — send and move on. Whether the receiver acts on it is a property of its\ncognition, not of the transport.",[14,188,189],{},"Both go through the front door. Neither requires the sender to know anything about the\nreceiver except its address.",[191,192],"hr",{},[14,194,195,196,201],{},"Next: ",[197,198,200],"a",{"href":199},"\u002Fdocs\u002Fv2\u002Ffleet\u002Fcode","Agents in Code"," — the API this shape produces.",{"title":203,"searchDepth":204,"depth":204,"links":205},"",2,[206,207,208,209,210],{"id":34,"depth":204,"text":35},{"id":63,"depth":204,"text":64},{"id":133,"depth":204,"text":134},{"id":146,"depth":204,"text":147},{"id":169,"depth":204,"text":170},"md",{},true,"\u002Fdocs\u002Fv2\u002Ffleet\u002Fboundary",{"title":5,"description":16},"docs\u002Fv2\u002Ffleet\u002Fboundary","8_hBcZgQq7qwDsBNg1WRWa6eZIz7m3EDFRVmC5yJpuA",1786104361094]