[{"data":1,"prerenderedAt":446},["ShallowReactive",2],{"navigation":3,"\u002Fconcepts\u002Flifecycle":169,"\u002Fconcepts\u002Flifecycle-surround":441},[4,28,85,127,157],{"title":5,"path":6,"stem":7,"children":8,"icon":27},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17,22],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":23,"path":24,"stem":25,"icon":26},"Architecture","\u002Fgetting-started\u002Farchitecture","1.getting-started\u002F4.architecture","i-lucide-layers","i-lucide-rocket",{"title":29,"icon":30,"path":31,"stem":32,"children":33,"page":84},"Concepts","i-lucide-lightbulb","\u002Fconcepts","2.concepts",[34,39,44,49,54,59,64,69,74,79],{"title":35,"path":36,"stem":37,"icon":38},"Durable agents","\u002Fconcepts\u002Fdurable-agents","2.concepts\u002F1.durable-agents","i-lucide-infinity",{"title":40,"path":41,"stem":42,"icon":43},"Glossary","\u002Fconcepts\u002Fglossary","2.concepts\u002F10.glossary","i-lucide-book-a",{"title":45,"path":46,"stem":47,"icon":48},"Restate in five minutes","\u002Fconcepts\u002Frestate-primer","2.concepts\u002F2.restate-primer","i-lucide-cpu",{"title":50,"path":51,"stem":52,"icon":53},"Entities & addressing","\u002Fconcepts\u002Fentities-addressing","2.concepts\u002F3.entities-addressing","i-lucide-at-sign",{"title":55,"path":56,"stem":57,"icon":58},"Timelines & events","\u002Fconcepts\u002Ftimelines-events","2.concepts\u002F4.timelines-events","i-lucide-list-ordered",{"title":60,"path":61,"stem":62,"icon":63},"Projections & the catalog","\u002Fconcepts\u002Fprojections-catalog","2.concepts\u002F5.projections-catalog","i-lucide-database",{"title":65,"path":66,"stem":67,"icon":68},"Workspaces & execution","\u002Fconcepts\u002Fworkspaces","2.concepts\u002F6.workspaces","i-lucide-terminal",{"title":70,"path":71,"stem":72,"icon":73},"Harnesses","\u002Fconcepts\u002Fharnesses","2.concepts\u002F7.harnesses","i-lucide-plug",{"title":75,"path":76,"stem":77,"icon":78},"Multi-agent patterns","\u002Fconcepts\u002Fmulti-agent","2.concepts\u002F8.multi-agent","i-lucide-network",{"title":80,"path":81,"stem":82,"icon":83},"Lifecycle & control","\u002Fconcepts\u002Flifecycle","2.concepts\u002F9.lifecycle","i-lucide-sliders-horizontal",false,{"title":86,"icon":87,"path":88,"stem":89,"children":90,"page":84},"Guides","i-lucide-book-open","\u002Fguides","3.guides",[91,106],{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":84},"Agents","i-lucide-bot","\u002Fguides\u002Fagents","3.guides\u002F1.agents",[97,101],{"title":98,"path":99,"stem":100,"icon":93},"Building agents","\u002Fguides\u002Fagents\u002Fbuilding-agents","3.guides\u002F1.agents\u002F1.building-agents",{"title":102,"path":103,"stem":104,"icon":105},"Frontend integration","\u002Fguides\u002Fagents\u002Ffrontend-integration","3.guides\u002F1.agents\u002F2.frontend-integration","i-lucide-monitor",{"title":107,"icon":108,"path":109,"stem":110,"children":111,"page":84},"Operations","i-lucide-server-cog","\u002Fguides\u002Foperations","3.guides\u002F2.operations",[112,117,122],{"title":113,"path":114,"stem":115,"icon":116},"Self-hosting","\u002Fguides\u002Foperations\u002Fself-hosting","3.guides\u002F2.operations\u002F1.self-hosting","i-lucide-server",{"title":118,"path":119,"stem":120,"icon":121},"Auth & API keys","\u002Fguides\u002Foperations\u002Fauth-api-keys","3.guides\u002F2.operations\u002F2.auth-api-keys","i-lucide-key-round",{"title":123,"path":124,"stem":125,"icon":126},"Backup & restore","\u002Fguides\u002Foperations\u002Fbackup-restore","3.guides\u002F2.operations\u002F3.backup-restore","i-lucide-database-backup",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":84},"Reference","i-lucide-book-marked","\u002Freference","4.reference",[133,138,143,148,153],{"title":134,"path":135,"stem":136,"icon":137},"Event schema","\u002Freference\u002Fevents","4.reference\u002F1.events","i-lucide-list-tree",{"title":139,"path":140,"stem":141,"icon":142},"Addressing","\u002Freference\u002Faddressing","4.reference\u002F2.addressing","i-lucide-map-pin",{"title":144,"path":145,"stem":146,"icon":147},"Gateway HTTP API","\u002Freference\u002Fgateway-api","4.reference\u002F3.gateway-api","i-lucide-webhook",{"title":149,"path":150,"stem":151,"icon":152},"CLI","\u002Freference\u002Fcli","4.reference\u002F4.cli","i-lucide-square-terminal",{"title":154,"path":155,"stem":156,"icon":83},"Configuration","\u002Freference\u002Fconfiguration","4.reference\u002F5.configuration",{"title":158,"path":159,"stem":160,"children":161,"icon":163},"Contributing","\u002Fcontributing","5.contributing\u002F1.index",[162,164],{"title":158,"path":159,"stem":160,"icon":163},"i-lucide-git-pull-request",{"title":165,"path":166,"stem":167,"icon":168},"The package map","\u002Fcontributing\u002Fpackage-map","5.contributing\u002F2.package-map","i-lucide-boxes",{"id":170,"title":80,"body":171,"description":434,"extension":435,"links":436,"meta":437,"navigation":438,"path":81,"seo":439,"stem":82,"__hash__":440},"docs\u002F2.concepts\u002F9.lifecycle.md",{"type":172,"value":173,"toc":424},"minimark",[174,191,196,207,210,214,231,247,259,266,280,284,301,323,327,341,349,353,368,383,387,394,407,411,420],[175,176,177,178,182,183,186,187,190],"p",{},"An agent is ",[179,180,181],"strong",{},"active"," while a wake runs, ",[179,184,185],{},"idle"," while it sleeps between wakes, and ",[179,188,189],{},"archived"," once it has been quiet long enough — and from the outside, you can intervene with exactly four verbs.",[192,193,195],"h2",{"id":194},"the-states","The states",[197,198,203],"pre",{"className":199,"code":201,"language":202},[200],"language-text","        wake arrives                idle window passes\n idle ───────────────► active      idle ───────────────► archived\n active ──────────────► idle       archived ────────────► active\n        turn ends                   any message (resurrection)\n","text",[204,205,201],"code",{"__ignoreMap":206},"",[175,208,209],{},"Nothing here is terminal. An idle agent is fully alive — it holds its state and wakes instantly. An archived agent has been put away — but as you'll see below, even that is reversible by sending it a message.",[192,211,213],{"id":212},"the-four-control-verbs","The four control verbs",[175,215,216,217,220,221,220,224,220,227,230],{},"Outside intervention is deliberately small: ",[204,218,219],{},"interrupt",", ",[204,222,223],{},"pause",[204,225,226],{},"resume",[204,228,229],{},"archive",". Anything else you want to tell an agent is just a message.",[175,232,233,237,238,241,242,246],{},[179,234,235],{},[204,236,219],{}," stops the current run cleanly. The run ends with ",[204,239,240],{},"run_finished(outcome: \"interrupted\")"," on the ",[243,244,245],"a",{"href":56},"timeline",", partial work already recorded stays recorded, and the agent remains immediately messageable — interrupted is not broken.",[175,248,249,253,254,258],{},[179,250,251],{},[204,252,223],{}," holds the agent: new wakes queue up instead of running, and nothing is processed until ",[179,255,256],{},[204,257,226],{}," lifts the pause and works through the queue in order. Nothing sent to a paused agent is lost. A paused agent is also never auto-archived out from under you.",[175,260,261,265],{},[179,262,263],{},[204,264,229],{}," requests archival now instead of waiting for the idle window — same effect as the automatic path below.",[197,267,271],{"className":268,"code":269,"language":270,"meta":206,"style":206},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","teaspill control \u002Fa\u002Fresearcher\u002F01j9z8k3q7v2m8f4t6d1c5b0aa interrupt --reason \"wrong topic\"\n","sh",[204,272,273],{"__ignoreMap":206},[274,275,278],"span",{"class":276,"line":277},"line",1,[274,279,269],{},[192,281,283],{"id":282},"idle-auto-archive","Idle auto-archive",[175,285,286,287,293,294,297,298,300],{},"An agent that stays idle past its idle window — 30 minutes by default, tunable per deployment with ",[243,288,290],{"href":289},"\u002Freference\u002Fconfiguration#agent-loop-and-executor",[204,291,292],{},"TEASPILL_IDLE_ARCHIVE_MS"," — archives automatically: its complete state is stored in the ",[243,295,296],{"href":61},"catalog",", its working footprint is released, and its catalog status flips to ",[204,299,189],{},". This is the default cost model — you never pay for agents that have nothing to do, and you never write cleanup code.",[302,303,304],"accordion",{},[305,306,309],"accordion-item",{"icon":307,"label":308},"i-lucide-microscope","What exactly is stored where when an agent archives",[175,310,311,312,315,316,318,319,322],{},"Archival writes a final ",[204,313,314],{},"state_snapshot"," to the timeline, followed by the ",[204,317,189],{}," marker — so the episode's closing state is readable from history like everything else. The complete state also lands in the entity's catalog row as the archive of record, which is what resurrection restores from. The timeline itself is untouched and stays readable; only the agent's live working copy inside the coordination engine is released. This split is why ",[243,320,321],{"href":124},"backups"," treat archived agents as the safest thing in the system.",[192,324,326],{"id":325},"resurrection","Resurrection",[175,328,329,330,333,334,336,337,340],{},"Send any message to an archived agent and it comes back: same URL, same timeline, same memory. State is restored from the catalog, the message is processed as a normal wake, and — the detail that keeps histories whole — ",[179,331,332],{},"the event numbering continues where it left off",". The event right after ",[204,335,189],{}," is the resurrecting wake's ",[204,338,339],{},"run_started",". Nothing distinguishes an agent that archived and returned from one that never left, except the markers saying so.",[175,342,343,344,348],{},"Archive and resurrection together are why teaspill agents can be ",[345,346,347],"em",{},"long-lived by default",": a support agent per customer, a project agent per repo — idle ones cost storage, not compute, and any of them is one message from awake.",[192,350,352],{"id":351},"steer-talking-to-a-busy-agent","Steer: talking to a busy agent",[175,354,355,356,359,360,363,364,367],{},"Messages normally queue for the ",[345,357,358],{},"next"," wake. ",[179,361,362],{},"Steer"," injects a message into the agent's ",[345,365,366],{},"current"," run instead — mid-turn, between steps — for the \"wait, also check X\" moment when the agent is already working. If the agent isn't mid-turn, a steer degrades gracefully into a normal message: nothing is lost, it arrives as its own wake.",[175,369,370,371,374,375,378,379,382],{},"Steer is a delivery mode, not a fifth verb. Today it is how agents nudge ",[345,372,373],{},"each other",": the ",[204,376,377],{},"send_message"," tool accepts ",[204,380,381],{},"mode: \"steer\"",", so a parent can redirect a freshly spawned child without waiting for the child's turn to end.",[192,384,386],{"id":385},"custom-control-is-messages","Custom control is messages",[175,388,389,390,393],{},"There is no fifth verb and no signal vocabulary. \"Re-prioritize\", \"switch model\", \"drop that subtask\" — anything domain-specific — is a typed message your agent declares a schema for and handles like any other input. The four verbs cover the platform's business (stopping, holding, shelving); everything about ",[345,391,392],{},"your"," agent's behavior stays in your agent's vocabulary.",[395,396,397],"note",{},[175,398,399,400,403,404,406],{},"The control endpoint and its request shapes are specified in the ",[243,401,402],{"href":145},"Gateway API reference",". For what archival means for backups and disaster recovery, see ",[243,405,123],{"href":124},".",[192,408,410],{"id":409},"next-steps","Next steps",[175,412,413,414,416,417,419],{},"That completes the concept ramp. The ",[243,415,40],{"href":41}," collects every term in one place — from here, ",[243,418,98],{"href":99}," puts the whole vocabulary to work.",[421,422,423],"style",{},"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);}",{"title":206,"searchDepth":277,"depth":425,"links":426},2,[427,428,429,430,431,432,433],{"id":194,"depth":425,"text":195},{"id":212,"depth":425,"text":213},{"id":282,"depth":425,"text":283},{"id":325,"depth":425,"text":326},{"id":351,"depth":425,"text":352},{"id":385,"depth":425,"text":386},{"id":409,"depth":425,"text":410},"Active, idle, archived — and the four verbs for intervening from outside, including bringing an archived agent back.","md",null,{},{"icon":83},{"title":80,"description":434},"YC3o98gRNlEA710To5hD5wkb8gdrk_2cC9VUGmFfLYY",[442,444],{"title":75,"path":76,"stem":77,"description":443,"icon":78,"children":-1},"Spawn, send, observe — the whole coordination surface, and the patterns you build with it.",{"title":98,"path":99,"stem":100,"description":445,"icon":93,"children":-1},"Define an agent with the Agents SDK — schemas, harness, tools, the onWake hook, state revisions, and serving it to the gateway.",1784473423286]