[{"data":1,"prerenderedAt":410},["ShallowReactive",2],{"navigation":3,"\u002Fconcepts\u002Fentities-addressing":169,"\u002Fconcepts\u002Fentities-addressing-surround":405},[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":50,"body":171,"description":398,"extension":399,"links":400,"meta":401,"navigation":402,"path":51,"seo":403,"stem":52,"__hash__":404},"docs\u002F2.concepts\u002F3.entities-addressing.md",{"type":172,"value":173,"toc":391},"minimark",[174,183,188,199,206,217,221,228,242,245,249,256,276,291,295,298,366,369,387],[175,176,177,178,182],"p",{},"Every running agent is an ",[179,180,181],"strong",{},"entity"," with a stable, URL-shaped id — and that one string identifies it everywhere: in the API, in every event it writes, in the stream URLs your UI reads.",[184,185,187],"h2",{"id":186},"anatomy-of-an-entity-url","Anatomy of an entity URL",[189,190,195],"pre",{"className":191,"code":193,"language":194},[192],"language-text","\u002Ft\u002Fdefault\u002Fa\u002Fresearcher\u002F01j9z8k3q7v2m8f4t6d1c5b0aa\n │    │    │     │        │\n │    │    │     │        └─ instance id (a sortable ULID by default)\n │    │    │     └─────────── agent type (your defineAgent type name)\n │    │    └───────────────── entity marker, always the literal \"a\"\n └────┴────────────────────── tenant — one per deployment, \"default\" unless configured\n","text",[196,197,193],"code",{"__ignoreMap":198},"",[175,200,201,202,205],{},"The tenant segment is a deployment-wide constant: one running stack is one tenant, so in practice it always reads ",[196,203,204],{},"\u002Ft\u002Fdefault\u002F…"," (or whatever your deployment names itself). You never juggle tenants day to day — the segment exists so identifiers stay unambiguous if deployments ever merge or migrate.",[175,207,208,209,212,213,216],{},"Segments are lowercase alphanumerics plus ",[196,210,211],{},"-"," and ",[196,214,215],{},"_",". Uppercase, dots, and slashes inside a segment are rejected.",[184,218,220],{"id":219},"the-short-form","The short form",[175,222,223,224,227],{},"The API and the CLI accept a tenant-less short form, ",[196,225,226],{},"\u002Fa\u002F\u003Ctype>\u002F\u003Cid>",", and expand it to the canonical URL for you:",[189,229,233],{"className":230,"code":231,"language":232,"meta":198,"style":198},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","teaspill send \u002Fa\u002Fresearcher\u002F01j9z8k3q7v2m8f4t6d1c5b0aa '{\"note\":\"also check oolong\"}'\n","sh",[196,234,235],{"__ignoreMap":198},[236,237,240],"span",{"class":238,"line":239},"line",1,[236,241,231],{},[175,243,244],{},"Canonical URLs are accepted everywhere the short form is; the short form is purely ergonomic. What gets stored is always the canonical form.",[184,246,248],{"id":247},"instance-ids","Instance ids",[175,250,251,252,255],{},"By default an id is a generated lowercase ",[179,253,254],{},"ULID"," — 26 characters, sortable by creation time, so sorting by id approximates sorting by age.",[175,257,258,259,262,263,266,267,271,272,275],{},"You can also supply your own id at spawn. That makes the spawn ",[179,260,261],{},"deterministic",": spawning the same ",[196,264,265],{},"(type, id)"," twice reaches the ",[268,269,270],"em",{},"same"," entity instead of creating a duplicate. A parent that keys each child's id off the subtask it handles can retry a spawn safely — the retry reattaches. ",[273,274,75],"a",{"href":76}," shows where this shines.",[277,278,279],"accordion",{},[280,281,284],"accordion-item",{"icon":282,"label":283},"i-lucide-microscope","What happens when a spawn hits an existing id",[175,285,286,287,290],{},"The second spawn lands on the same underlying object. If that object has no state yet, this is the first spawn and it initializes normally. If it already has state, the spawn is a no-op reattach — you get the existing entity back, which is the point of deterministic spawn. If the re-spawn's arguments differ materially from the original, the entity records an ",[196,288,289],{},"error"," event on its timeline rather than silently re-initializing — the mismatch is visible, and the original state is preserved.",[184,292,294],{"id":293},"one-id-everywhere","One id, everywhere",[175,296,297],{},"The same string follows the entity through the whole system:",[299,300,301,314],"table",{},[302,303,304],"thead",{},[305,306,307,311],"tr",{},[308,309,310],"th",{},"Where",[308,312,313],{},"What you see",[315,316,317,329,344,355],"tbody",{},[305,318,319,326],{},[320,321,322,323],"td",{},"The ",[273,324,325],{"href":61},"catalog",[320,327,328],{},"The row's primary key is the entity URL",[305,330,331,338],{},[320,332,333,334,337],{},"Every ",[273,335,336],{"href":56},"timeline"," event",[320,339,322,340,343],{},[196,341,342],{},"entityId"," field is the entity URL",[305,345,346,349],{},[320,347,348],{},"Stream URLs",[320,350,351,354],{},[196,352,353],{},"\u002Fstreams\u002Ft\u002Fdefault\u002Fagents\u002Fresearcher\u002F\u003Cid>\u002Ftimeline"," derives from it",[305,356,357,360],{},[320,358,359],{},"CLI & API",[320,361,362,365],{},[196,363,364],{},"\u002Fa\u002Fresearcher\u002F\u003Cid>"," short form, expanded on arrival",[175,367,368],{},"There is no separate internal id to map back and forth — if you hold the URL, you can find everything the entity has ever done.",[370,371,372],"note",{},[175,373,374,375,378,379,382,383,386],{},"The full grammar — length limits, stream-path derivation, ",[273,376,377],{"href":66},"workspace"," keys, and the helper functions in ",[196,380,381],{},"@teaspill\u002Fschema"," — lives in the ",[273,384,385],{"href":140},"Addressing reference",".",[388,389,390],"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":198,"searchDepth":239,"depth":392,"links":393},2,[394,395,396,397],{"id":186,"depth":392,"text":187},{"id":219,"depth":392,"text":220},{"id":247,"depth":392,"text":248},{"id":293,"depth":392,"text":294},"Every running agent is an entity with one URL-shaped id, and that single string identifies it everywhere.","md",null,{},{"icon":53},{"title":50,"description":398},"WZfe1x1Ax3Kmieg5U1F_dBW8_rhMaSy9g--WSQpyCo0",[406,408],{"title":45,"path":46,"stem":47,"description":407,"icon":48,"children":-1},"What Restate is, what a virtual object is, and why teaspill builds on both — for developers who have never used it.",{"title":55,"path":56,"stem":57,"description":409,"icon":58,"children":-1},"The append-only record of everything an agent does — numbered events your UI can replay, live-follow, or join late.",1784473422679]