[{"data":1,"prerenderedAt":663},["ShallowReactive",2],{"navigation":3,"index":169},[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":171,"body":172,"description":171,"extension":655,"meta":656,"navigation":309,"path":657,"seo":658,"stem":661,"__hash__":662},"landing\u002Findex.md","",{"type":173,"value":174,"toc":653},"minimark",[175,546,634,649],[176,177,183,189,202,207,227],"u-page-hero",{"className":178,"orientation":182},[179,180,181],"dark:bg-gradient-to-b","from-neutral-900","to-neutral-950","horizontal",[184,185,186],"template",{"v-slot:top":171},[187,188],"hero-background",{},[184,190,191],{"v-slot:title":171},[192,193,194,195,201],"p",{},"AI agents that ",[196,197,200],"span",{"className":198},[199],"text-primary","outlive the process",".",[184,203,204],{"v-slot:description":171},[192,205,206],{},"teaspill is a self-hosted platform for durable AI agents: they survive crashes, restarts, and deploys, spawn sub-agents, and stream everything they do to your UI — live. You write TypeScript; teaspill keeps it running.",[184,208,209,217],{"v-slot:links":171},[210,211,214],"u-button",{"size":212,"to":6,"trailing-icon":213},"xl","i-lucide-arrow-right",[192,215,216],{},"Get started",[210,218,224],{"size":212,"to":219,"color":220,"icon":221,"target":222,"variant":223},"https:\u002F\u002Fgithub.com\u002Feverynow-dev\u002Fteaspill","neutral","i-simple-icons-github","_blank","outline",[192,225,226],{},"View on GitHub",[228,229,232],"prose-pre",{"code":230,"filename":231},"import { defineAgent, native } from \"@teaspill\u002Fagents-sdk\";\nimport { z } from \"zod\";\n\nexport const researcher = defineAgent({\n  type: \"researcher\",\n  spawnSchema: z.object({ topic: z.string() }),\n  state: z.object({ summary: z.string().optional() }),\n  harness: native({\n    model: \"claude-sonnet-4-5\",\n    systemPrompt:\n      \"Research the topic. Spawn a summarizer with \" +\n      \"your notes, wait, then finish with its summary.\",\n    ingressUrl: \"http:\u002F\u002Flocalhost:8080\",\n  }),\n});\n","agents\u002Fresearcher.ts",[233,234,237],"pre",{"className":235,"code":230,"filename":231,"language":236,"meta":171,"style":171},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ts",[238,239,240,281,304,311,336,356,399,444,458,475,484,498,510,527,537],"code",{"__ignoreMap":171},[196,241,244,248,252,256,259,262,265,268,271,275,278],{"class":242,"line":243},"line",1,[196,245,247],{"class":246},"s7zQu","import",[196,249,251],{"class":250},"sMK4o"," {",[196,253,255],{"class":254},"sTEyZ"," defineAgent",[196,257,258],{"class":250},",",[196,260,261],{"class":254}," native",[196,263,264],{"class":250}," }",[196,266,267],{"class":246}," from",[196,269,270],{"class":250}," \"",[196,272,274],{"class":273},"sfazB","@teaspill\u002Fagents-sdk",[196,276,277],{"class":250},"\"",[196,279,280],{"class":250},";\n",[196,282,284,286,288,291,293,295,297,300,302],{"class":242,"line":283},2,[196,285,247],{"class":246},[196,287,251],{"class":250},[196,289,290],{"class":254}," z",[196,292,264],{"class":250},[196,294,267],{"class":246},[196,296,270],{"class":250},[196,298,299],{"class":273},"zod",[196,301,277],{"class":250},[196,303,280],{"class":250},[196,305,307],{"class":242,"line":306},3,[196,308,310],{"emptyLinePlaceholder":309},true,"\n",[196,312,314,317,321,324,327,330,333],{"class":242,"line":313},4,[196,315,316],{"class":246},"export",[196,318,320],{"class":319},"spNyl"," const",[196,322,323],{"class":254}," researcher ",[196,325,326],{"class":250},"=",[196,328,255],{"class":329},"s2Zo4",[196,331,332],{"class":254},"(",[196,334,335],{"class":250},"{\n",[196,337,339,343,346,348,351,353],{"class":242,"line":338},5,[196,340,342],{"class":341},"swJcz","  type",[196,344,345],{"class":250},":",[196,347,270],{"class":250},[196,349,350],{"class":273},"researcher",[196,352,277],{"class":250},[196,354,355],{"class":250},",\n",[196,357,359,362,364,366,368,371,373,376,379,381,383,385,388,391,394,397],{"class":242,"line":358},6,[196,360,361],{"class":341},"  spawnSchema",[196,363,345],{"class":250},[196,365,290],{"class":254},[196,367,201],{"class":250},[196,369,370],{"class":329},"object",[196,372,332],{"class":254},[196,374,375],{"class":250},"{",[196,377,378],{"class":341}," topic",[196,380,345],{"class":250},[196,382,290],{"class":254},[196,384,201],{"class":250},[196,386,387],{"class":329},"string",[196,389,390],{"class":254},"() ",[196,392,393],{"class":250},"}",[196,395,396],{"class":254},")",[196,398,355],{"class":250},[196,400,402,405,407,409,411,413,415,417,420,422,424,426,428,431,433,436,438,440,442],{"class":242,"line":401},7,[196,403,404],{"class":341},"  state",[196,406,345],{"class":250},[196,408,290],{"class":254},[196,410,201],{"class":250},[196,412,370],{"class":329},[196,414,332],{"class":254},[196,416,375],{"class":250},[196,418,419],{"class":341}," summary",[196,421,345],{"class":250},[196,423,290],{"class":254},[196,425,201],{"class":250},[196,427,387],{"class":329},[196,429,430],{"class":254},"()",[196,432,201],{"class":250},[196,434,435],{"class":329},"optional",[196,437,390],{"class":254},[196,439,393],{"class":250},[196,441,396],{"class":254},[196,443,355],{"class":250},[196,445,447,450,452,454,456],{"class":242,"line":446},8,[196,448,449],{"class":341},"  harness",[196,451,345],{"class":250},[196,453,261],{"class":329},[196,455,332],{"class":254},[196,457,335],{"class":250},[196,459,461,464,466,468,471,473],{"class":242,"line":460},9,[196,462,463],{"class":341},"    model",[196,465,345],{"class":250},[196,467,270],{"class":250},[196,469,470],{"class":273},"claude-sonnet-4-5",[196,472,277],{"class":250},[196,474,355],{"class":250},[196,476,478,481],{"class":242,"line":477},10,[196,479,480],{"class":341},"    systemPrompt",[196,482,483],{"class":250},":\n",[196,485,487,490,493,495],{"class":242,"line":486},11,[196,488,489],{"class":250},"      \"",[196,491,492],{"class":273},"Research the topic. Spawn a summarizer with ",[196,494,277],{"class":250},[196,496,497],{"class":250}," +\n",[196,499,501,503,506,508],{"class":242,"line":500},12,[196,502,489],{"class":250},[196,504,505],{"class":273},"your notes, wait, then finish with its summary.",[196,507,277],{"class":250},[196,509,355],{"class":250},[196,511,513,516,518,520,523,525],{"class":242,"line":512},13,[196,514,515],{"class":341},"    ingressUrl",[196,517,345],{"class":250},[196,519,270],{"class":250},[196,521,522],{"class":273},"http:\u002F\u002Flocalhost:8080",[196,524,277],{"class":250},[196,526,355],{"class":250},[196,528,530,533,535],{"class":242,"line":529},14,[196,531,532],{"class":250},"  }",[196,534,396],{"class":254},[196,536,355],{"class":250},[196,538,540,542,544],{"class":242,"line":539},15,[196,541,393],{"class":250},[196,543,396],{"class":254},[196,545,280],{"class":250},[547,548,551,556],"u-page-section",{"className":549},[550],"dark:bg-neutral-950",[184,552,553],{"v-slot:title":171},[192,554,555],{},"What teaspill gives you",[184,557,558,571,584,597,609,622],{"v-slot:features":171},[559,560,561,566],"u-page-feature",{"icon":38},[184,562,563],{"v-slot:title":171},[192,564,565],{},"Durable by default",[184,567,568],{"v-slot:description":171},[192,569,570],{},"An agent's process can die mid-run; the agent doesn't. Every step is recorded, so work resumes exactly where it stopped — no lost conversations, no repeated side effects.",[559,572,574,579],{"icon":573},"i-lucide-git-fork",[184,575,576],{"v-slot:title":171},[192,577,578],{},"Multi-agent from day one",[184,580,581],{"v-slot:description":171},[192,582,583],{},"Agents spawn sub-agents, message each other, and gather results. Delivery and ordering are guaranteed by the platform, not by plumbing you write.",[559,585,587,592],{"icon":586},"i-lucide-activity",[184,588,589],{"v-slot:title":171},[192,590,591],{},"Stream everything to your UI",[184,593,594],{"v-slot:description":171},[192,595,596],{},"Every message, tool call, and result lands on a live timeline your frontend can replay, follow token by token, or join late without missing anything.",[559,598,599,604],{"icon":73},[184,600,601],{"v-slot:title":171},[192,602,603],{},"Pick your engine",[184,605,606],{"v-slot:description":171},[192,607,608],{},"Run the model loop with teaspill's native engine — any provider — or with the Claude Agent SDK. Swapping is one line in the agent definition; nothing else changes.",[559,610,612,617],{"icon":611},"i-lucide-container",[184,613,614],{"v-slot:title":171},[192,615,616],{},"Self-hosted, five services",[184,618,619],{"v-slot:description":171},[192,620,621],{},"One Docker Compose file runs the whole platform: coordination, catalog, history, live sync, and the gateway. Your infrastructure, your keys, your data.",[559,623,624,629],{"icon":121},[184,625,626],{"v-slot:title":171},[192,627,628],{},"One front door",[184,630,631],{"v-slot:description":171},[192,632,633],{},"Your app, your UI, and the CLI talk to teaspill through a single gateway, authenticated with API keys — plus short-lived read tokens for browsers.",[547,635,639],{"className":636},[179,637,638],"from-neutral-950","to-neutral-900",[640,641,646],"u-page-c-t-a",{":links":642,"className":643,"description":644,"title":645},"[{\"label\":\"Quick start\",\"to\":\"\u002Fgetting-started\u002Fquick-start\",\"trailingIcon\":\"i-lucide-arrow-right\"},{\"label\":\"View on GitHub\",\"to\":\"https:\u002F\u002Fgithub.com\u002Feverynow-dev\u002Fteaspill\",\"target\":\"_blank\",\"variant\":\"subtle\",\"icon\":\"i-simple-icons-github\"}]",[550],"Boot the stack with Docker Compose, define an agent in TypeScript, and watch its timeline stream into your browser.","Run your first durable agent",[647,648],"stars-bg",{},[650,651,652],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}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 pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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":171,"searchDepth":243,"depth":283,"links":654},[],"md",{},"\u002F",{"title":659,"description":660},"teaspill — durable AI agents, self-hosted","AI agents that survive restarts and deploys, spawn sub-agents, and stream everything they do to your UI. Define agents in TypeScript; teaspill keeps them running.","index","IVpwf2QnhXXx8WY1z6-B5qcMun_f8oiMi7UBKjIKOSs",1784473420465]