[{"data":1,"prerenderedAt":444},["ShallowReactive",2],{"i-mdi:magnify":3,"i-simple-icons:visualstudiocode":8,"i-mdi:github":11,"i-mdi:discord":13,"i-mdi:youtube":15,"i-mdi:flask-outline":17,"docs-\u002Fdocs\u002Fv2\u002Fproviders\u002Fbehaviour":19},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"currentColor\" d=\"M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5l-1.5 1.5l-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16A6.5 6.5 0 0 1 3 9.5A6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14S14 12 14 9.5S12 5 9.5 5\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9,"hidden":10},"\u003Cpath fill=\"currentColor\" d=\"M23.15 2.587L18.21.21a1.49 1.49 0 0 0-1.705.29l-9.46 8.63l-4.12-3.128a1 1 0 0 0-1.276.057L.327 7.261A1 1 0 0 0 .326 8.74L3.899 12L.326 15.26a1 1 0 0 0 .001 1.479L1.65 17.94a1 1 0 0 0 1.276.057l4.12-3.128l9.46 8.63a1.49 1.49 0 0 0 1.704.29l4.942-2.377A1.5 1.5 0 0 0 24 20.06V3.939a1.5 1.5 0 0 0-.85-1.352m-5.146 14.861L10.826 12l7.178-5.448z\"\u002F>",true,{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":12},"\u003Cpath fill=\"currentColor\" d=\"M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":14,"hidden":10},"\u003Cpath fill=\"currentColor\" d=\"m22 24l-5.25-5l.63 2H4.5A2.5 2.5 0 0 1 2 18.5v-15A2.5 2.5 0 0 1 4.5 1h15A2.5 2.5 0 0 1 22 3.5V24M12 6.8c-2.68 0-4.56 1.15-4.56 1.15c1.03-.92 2.83-1.45 2.83-1.45l-.17-.17c-1.69.03-3.22 1.2-3.22 1.2c-1.72 3.59-1.61 6.69-1.61 6.69c1.4 1.81 3.48 1.68 3.48 1.68l.71-.9c-1.25-.27-2.04-1.38-2.04-1.38S9.3 14.9 12 14.9s4.58-1.28 4.58-1.28s-.79 1.11-2.04 1.38l.71.9s2.08.13 3.48-1.68c0 0 .11-3.1-1.61-6.69c0 0-1.53-1.17-3.22-1.2l-.17.17s1.8.53 2.83 1.45c0 0-1.88-1.15-4.56-1.15m-2.07 3.79c.65 0 1.18.57 1.17 1.27c0 .69-.52 1.27-1.17 1.27c-.64 0-1.16-.58-1.16-1.27c0-.7.51-1.27 1.16-1.27m4.17 0c.65 0 1.17.57 1.17 1.27c0 .69-.52 1.27-1.17 1.27c-.64 0-1.16-.58-1.16-1.27c0-.7.51-1.27 1.16-1.27Z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":16},"\u003Cpath fill=\"currentColor\" d=\"m10 15l5.19-3L10 9zm11.56-7.83c.13.47.22 1.1.28 1.9c.07.8.1 1.49.1 2.09L22 12c0 2.19-.16 3.8-.44 4.83c-.25.9-.83 1.48-1.73 1.73c-.47.13-1.33.22-2.65.28c-1.3.07-2.49.1-3.59.1L12 19c-4.19 0-6.8-.16-7.83-.44c-.9-.25-1.48-.83-1.73-1.73c-.13-.47-.22-1.1-.28-1.9c-.07-.8-.1-1.49-.1-2.09L2 12c0-2.19.16-3.8.44-4.83c.25-.9.83-1.48 1.73-1.73c.47-.13 1.33-.22 2.65-.28c1.3-.07 2.49-.1 3.59-.1L12 5c4.19 0 6.8.16 7.83.44c.9.25 1.48.83 1.73 1.73\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":18},"\u003Cpath fill=\"currentColor\" d=\"M5 19a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1c0-.21-.07-.41-.18-.57L13 8.35V4h-2v4.35L5.18 18.43c-.11.16-.18.36-.18.57m1 3a3 3 0 0 1-3-3c0-.6.18-1.16.5-1.63L9 7.81V6a1 1 0 0 1-1-1V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1v1.81l5.5 9.56c.32.47.5 1.03.5 1.63a3 3 0 0 1-3 3zm7-6l1.34-1.34L16.27 18H7.73l2.66-4.61zm-.5-4a.5.5 0 0 1 .5.5a.5.5 0 0 1-.5.5a.5.5 0 0 1-.5-.5a.5.5 0 0 1 .5-.5\"\u002F>",{"id":20,"title":21,"body":22,"description":437,"extension":438,"meta":439,"navigation":10,"path":440,"seo":441,"stem":442,"__hash__":443},"docs\u002Fdocs\u002Fv2\u002Fproviders\u002Fbehaviour.md","Behaviour",{"type":23,"value":24,"toc":428},"minimark",[25,29,38,43,46,49,78,85,89,97,169,172,186,190,193,199,205,211,216,235,238,295,298,317,321,328,331,344,347,354,358,365,386,396,400,407,410,414,421,424],[26,27,21],"h1",{"id":28},"behaviour",[30,31,32,33,37],"p",{},"How a role becomes a model. Read this when something bound to a route you did not expect,\nwhen ",[34,35,36],"code",{},"axon prepare"," refused, or before you rely on ordering to control spend.",[39,40,42],"h2",{"id":41},"resolution-happens-once-at-boot","Resolution happens once, at boot",[30,44,45],{},"Every role a cognet declares is bound before its first wake. Nothing is chosen lazily, so\na call site can never block on resolution and can never resolve differently on the second\ntick than the first.",[30,47,48],{},"The steps, in order:",[50,51,52,60,66,72],"ol",{},[53,54,55,59],"li",{},[56,57,58],"strong",{},"Gather."," Every declared provider is asked for its catalogue, concurrently. A source\nthat cannot be reached contributes a visible failure, never a quietly shorter list.",[53,61,62,65],{},[56,63,64],{},"Reject."," For each role, every candidate is tested against the role's structural\nrequirements. Failures are kept with a reason.",[53,67,68,71],{},[56,69,70],{},"Rank."," Whatever survives is ordered by preference.",[53,73,74,77],{},[56,75,76],{},"Bind."," The top candidate becomes the role's engine.",[30,79,80,81,84],{},"Roles are resolved ",[56,82,83],{},"independently",", so one model may fill several. A machine with one\ngood local model runs a cognet declaring three roles — slower, still correct.",[39,86,88],{"id":87},"what-can-reject-a-candidate","What can reject a candidate",[30,90,91,92,96],{},"Only structural facts — things that make a model ",[93,94,95],"em",{},"unable"," to serve the role, never things\nthat make it worse at it.",[98,99,100,113],"table",{},[101,102,103],"thead",{},[104,105,106,110],"tr",{},[107,108,109],"th",{},"Requirement",[107,111,112],{},"Rejected when",[114,115,116,135,149,159],"tbody",{},[104,117,118,124],{},[119,120,121],"td",{},[34,122,123],{},"type",[119,125,126,127,130,131,134],{},"The handle shape differs — a ",[34,128,129],{},"transform"," model cannot fill a ",[34,132,133],{},"generate"," role",[104,136,137,146],{},[119,138,139,142,143],{},[34,140,141],{},"in"," \u002F ",[34,144,145],{},"out",[119,147,148],{},"A modality the cognet will send or expects back is unsupported",[104,150,151,156],{},[119,152,153],{},[34,154,155],{},"context",[119,157,158],{},"The model's window is smaller than the role's floor",[104,160,161,166],{},[119,162,163],{},[34,164,165],{},"structured",[119,167,168],{},"The role needs parseable output and the model does not guarantee it",[30,170,171],{},"Quality is deliberately absent. A weaker model still parses, still fits, and still runs,\nso which one to use is your tradeoff — never the cognet's to refuse.",[30,173,174,175,178,179,185],{},"Two rules about missing information, because they cut opposite ways. An ",[56,176,177],{},"absent context\nwindow"," means unknown, and does not exclude the model: sources that report no window\nwould otherwise vanish from every role that names one. An ",[56,180,181,182,184],{},"absent ",[34,183,165],{}," flag","\nmeans no: a model that cannot be relied on to emit parseable blocks breaks the grammar,\nand guessing optimistically fails at the first tick instead of at prepare.",[39,187,189],{"id":188},"how-candidates-are-ranked","How candidates are ranked",[30,191,192],{},"Four axes, in order. Each only decides when everything above it ties.",[30,194,195,198],{},[56,196,197],{},"1. Local first."," A model on your own machine outranks any hosted route. You already\nexpressed the preference by installing it, and it is the choice that keeps the agent\nworking with the network off.",[30,200,201,204],{},[56,202,203],{},"2. Wider context."," More headroom for the same job.",[30,206,207,210],{},[56,208,209],{},"3. More slots."," Same reasoning, for concurrency.",[30,212,213],{},[56,214,215],{},"4. The order you declared your providers in.",[30,217,218,219,222,223,226,227,230,231,234],{},"That last one is what decides who pays. One model is often reachable several ways —\n",[34,220,221],{},"anthropic\u002Fclaude-sonnet-4.6"," might be available through ",[34,224,225],{},"Anthropic()"," with your key,\n",[34,228,229],{},"OpenRouter()"," with your key, and ",[34,232,233],{},"Axon()"," on your balance. Those three candidates are\nidentical on every axis above: same model, so the same context; all hosted, so none local;\nno slots ceiling unless you set one.",[30,236,237],{},"So your list settles it:",[239,240,245],"pre",{"className":241,"code":242,"language":243,"meta":244,"style":244},"language-ts shiki shiki-themes dark-plus","providers: [Anthropic(), Axon()]   \u002F\u002F your key first, managed as the fallback\nproviders: [Axon(), Anthropic()]   \u002F\u002F managed first\n","ts","",[34,246,247,277],{"__ignoreMap":244},[248,249,252,256,260,264,267,270,273],"span",{"class":250,"line":251},"line",1,[248,253,255],{"class":254},"sqDPy","providers",[248,257,259],{"class":258},"sTNBD",": [",[248,261,263],{"class":262},"sCudf","Anthropic",[248,265,266],{"class":258},"(), ",[248,268,269],{"class":262},"Axon",[248,271,272],{"class":258},"()]   ",[248,274,276],{"class":275},"sOLPB","\u002F\u002F your key first, managed as the fallback\n",[248,278,280,282,284,286,288,290,292],{"class":250,"line":279},2,[248,281,255],{"class":254},[248,283,259],{"class":258},[248,285,269],{"class":262},[248,287,266],{"class":258},[248,289,263],{"class":262},[248,291,272],{"class":258},[248,293,294],{"class":275},"\u002F\u002F managed first\n",[30,296,297],{},"Without that rule the winner would be whichever catalogue happened to be appended first —\nan arbitrary choice with a real bill attached.",[299,300,302],"alert",{"type":301},"info",[30,303,304,305,308,309,312,313,316],{},"Ordering is a ",[56,306,307],{},"tie-break",", not an override. ",[34,310,311],{},"[Anthropic(), Ollama()]"," still binds the\nlocal model when both can serve a role, because local ranks above declaration order. To\nforce a specific route, pin it: ",[34,314,315],{},"model: \"anthropic:claude-sonnet-4-6\"",".",[39,318,320],{"id":319},"pins-prefer-they-never-require","Pins prefer, they never require",[30,322,323,324,327],{},"A ",[34,325,326],{},"model:"," string reorders candidates that already satisfy the role. It cannot promote one\nthat does not fit, and it cannot fail a boot.",[30,329,330],{},"A pin naming something you cannot supply is recorded rather than swallowed — the agent\nruns on whatever ranking chose, and tells you the pin was not honoured and why:",[332,333,334,339],"ul",{},[53,335,336],{},[34,337,338],{},"no \"anthropic\" provider is declared — the model exists on another route",[53,340,341],{},[34,342,343],{},"no declared provider supplies \"some-model\"",[30,345,346],{},"The distinction is the actionable part: one means connect a provider, the other means the\nid is wrong.",[30,348,349,350,353],{},"This is what keeps a published agent runnable by someone who does not share its author's\nproviders. An author's pin is a preference on ",[93,351,352],{},"their"," setup; on yours it degrades to a\nsuggestion.",[39,355,357],{"id":356},"when-a-role-cannot-be-filled","When a role cannot be filled",[30,359,360,361,364],{},"A role with no surviving candidate is ",[56,362,363],{},"unmet",". What that means depends on the role:",[332,366,367,376],{},[53,368,369,372,373,375],{},[56,370,371],{},"Required"," (the default) — the agent cannot run. ",[34,374,36],{}," stops and reports it.",[53,377,378,381,382,385],{},[56,379,380],{},"Optional"," — ordinary. The cognet checks ",[34,383,384],{},"kernel.engine.has(name)"," and takes a cheaper\npath, which is how compression, filtering and attention degrade on a machine with one\nlocal model and no network.",[30,387,388,389,392,393,316],{},"An unmet role reports every near miss with its reason, so the message is\n",[34,390,391],{},"your models fit everything except the 100k context"," rather than ",[34,394,395],{},"unresolved",[39,397,399],{"id":398},"when-a-catalogue-is-unreachable","When a catalogue is unreachable",[30,401,402,403,406],{},"A provider that cannot answer is a ",[56,404,405],{},"failure",", not an empty list. This matters more than\nit sounds: a dead Ollama daemon and a machine with no local models produce identical\ncatalogues, and only the failure entry tells them apart. Without it an agent silently\nfalls back to the cloud for a role you intended to run locally — a billing surprise and a\nprivacy one.",[30,408,409],{},"The public model catalogue behaves the same way. If it cannot be fetched, a small built-in\nlist of widely available models stands in so that routes which never depended on it keep\nworking — a provider being down must not empty routes that do not touch it. The gap is\nreported rather than hidden, and models served only from the fallback carry no managed\nroute, because a price that was never fetched must not be invented.",[39,411,413],{"id":412},"rebinding-while-running","Rebinding while running",[30,415,416,417,420],{},"The primary role is rebindable without a restart. Pressing ",[34,418,419],{},"*"," in the terminal and picking\na model rebuilds that role's engine in place: the new one is constructed before the old\nreference is dropped, so a caller mid-dispatch never sees a gap.",[30,422,423],{},"Rebinding chooses among what you already declared. It never reaches for a provider you do\nnot have.",[425,426,427],"style",{},"html pre.shiki code .sqDPy, html code.shiki .sqDPy{--shiki-default:#C8C8C8}html pre.shiki code .sTNBD, html code.shiki .sTNBD{--shiki-default:#D4D4D4}html pre.shiki code .sCudf, html code.shiki .sCudf{--shiki-default:#DCDCAA}html pre.shiki code .sOLPB, html code.shiki .sOLPB{--shiki-default:#6A9955}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);}",{"title":244,"searchDepth":279,"depth":279,"links":429},[430,431,432,433,434,435,436],{"id":41,"depth":279,"text":42},{"id":87,"depth":279,"text":88},{"id":188,"depth":279,"text":189},{"id":319,"depth":279,"text":320},{"id":356,"depth":279,"text":357},{"id":398,"depth":279,"text":399},{"id":412,"depth":279,"text":413},"How a cognet's role becomes a concrete model: every role is bound before its first wake, so nothing is chosen lazily or unpredictably.","md",{},"\u002Fdocs\u002Fv2\u002Fproviders\u002Fbehaviour",{"title":21,"description":437},"docs\u002Fv2\u002Fproviders\u002Fbehaviour","r3y5l4cok7ybhTVxo2kdXTvD4CC9zactXrnepN8iDMQ",1788121884426]