[{"data":1,"prerenderedAt":576},["ShallowReactive",2],{"navigation_docs":3,"-guide-tech-stack":168,"-guide-tech-stack-surround":572},[4,146],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":36},"Guide","i-lucide-book-open","\u002Fguide","1.guide",[10,14,37,55,59,63,67,71,75,79,83,87,109,134,138,142],{"title":11,"path":12,"stem":13},"What is Agent Zero?","\u002Fguide\u002Fintroduction","1.guide\u002F1.introduction",{"title":15,"icon":16,"path":17,"stem":18,"children":19,"page":36},"API","i-lucide-plug","\u002Fguide\u002Fapi","1.guide\u002F10.api",[20,24,28,32],{"title":21,"path":22,"stem":23},"API overview","\u002Fguide\u002Fapi\u002Foverview","1.guide\u002F10.api\u002F1.overview",{"title":25,"path":26,"stem":27},"Define endpoints","\u002Fguide\u002Fapi\u002Fdefine-endpoints","1.guide\u002F10.api\u002F2.define-endpoints",{"title":29,"path":30,"stem":31},"Use the API from a client","\u002Fguide\u002Fapi\u002Fuse-from-client","1.guide\u002F10.api\u002F3.use-from-client",{"title":33,"path":34,"stem":35},"Protect endpoints","\u002Fguide\u002Fapi\u002Fprotect-endpoints","1.guide\u002F10.api\u002F4.protect-endpoints",false,{"title":38,"icon":39,"path":40,"stem":41,"children":42,"page":36},"Authentication","i-lucide-lock","\u002Fguide\u002Fauthentication","1.guide\u002F11.authentication",[43,47,51],{"title":44,"path":45,"stem":46},"Authentication overview","\u002Fguide\u002Fauthentication\u002Foverview","1.guide\u002F11.authentication\u002F1.overview",{"title":48,"path":49,"stem":50},"GitHub OAuth","\u002Fguide\u002Fauthentication\u002Foauth","1.guide\u002F11.authentication\u002F2.oauth",{"title":52,"path":53,"stem":54},"Permissions","\u002Fguide\u002Fauthentication\u002Fpermissions","1.guide\u002F11.authentication\u002F3.permissions",{"title":56,"path":57,"stem":58},"Organizations","\u002Fguide\u002Forganizations","1.guide\u002F12.organizations",{"title":60,"path":61,"stem":62},"Frontend","\u002Fguide\u002Ffrontend","1.guide\u002F13.frontend",{"title":64,"path":65,"stem":66},"Mails","\u002Fguide\u002Fmails","1.guide\u002F14.mails",{"title":68,"path":69,"stem":70},"Internationalization","\u002Fguide\u002Finternationalization","1.guide\u002F15.internationalization",{"title":72,"path":73,"stem":74},"Deployment","\u002Fguide\u002Fdeployment","1.guide\u002F16.deployment",{"title":76,"path":77,"stem":78},"Tech stack","\u002Fguide\u002Ftech-stack","1.guide\u002F2.tech-stack",{"title":80,"path":81,"stem":82},"Installation","\u002Fguide\u002Finstallation","1.guide\u002F3.installation",{"title":84,"path":85,"stem":86},"Environment variables","\u002Fguide\u002Fenvironment-variables","1.guide\u002F4.environment-variables",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":36},"Codebase","i-lucide-folder-tree","\u002Fguide\u002Fcodebase","1.guide\u002F5.codebase",[93,97,101,105],{"title":94,"path":95,"stem":96},"Codebase structure","\u002Fguide\u002Fcodebase\u002Fstructure","1.guide\u002F5.codebase\u002F1.structure",{"title":98,"path":99,"stem":100},"Dependencies","\u002Fguide\u002Fcodebase\u002Fdependencies","1.guide\u002F5.codebase\u002F2.dependencies",{"title":102,"path":103,"stem":104},"Formatting and linting","\u002Fguide\u002Fcodebase\u002Fformatting-linting","1.guide\u002F5.codebase\u002F3.formatting-linting",{"title":106,"path":107,"stem":108},"Agent Skills","\u002Fguide\u002Fcodebase\u002Fagent-skills","1.guide\u002F5.codebase\u002F4.agent-skills",{"title":110,"icon":111,"path":112,"stem":113,"children":114,"page":36},"Architecture","i-lucide-layers","\u002Fguide\u002Farchitecture","1.guide\u002F6.architecture",[115,118,122,126,130],{"title":110,"path":116,"stem":117},"\u002Fguide\u002Farchitecture\u002Foverview","1.guide\u002F6.architecture\u002F1.overview",{"title":119,"path":120,"stem":121},"State machine","\u002Fguide\u002Farchitecture\u002Fstate-machine","1.guide\u002F6.architecture\u002F2.state-machine",{"title":123,"path":124,"stem":125},"Execution boundary","\u002Fguide\u002Farchitecture\u002Fexecution-boundary","1.guide\u002F6.architecture\u002F3.execution-boundary",{"title":127,"path":128,"stem":129},"Issue-to-PR workflow","\u002Fguide\u002Farchitecture\u002Fissue-to-pr","1.guide\u002F6.architecture\u002F4.issue-to-pr",{"title":131,"path":132,"stem":133},"Adding a capability","\u002Fguide\u002Farchitecture\u002Fadding-a-capability","1.guide\u002F6.architecture\u002F5.adding-a-capability",{"title":135,"path":136,"stem":137},"Repository policy","\u002Fguide\u002Fconfiguration","1.guide\u002F7.configuration",{"title":139,"path":140,"stem":141},"Safety model","\u002Fguide\u002Fsafety","1.guide\u002F8.safety",{"title":143,"path":144,"stem":145},"Database","\u002Fguide\u002Fdatabase","1.guide\u002F9.database",{"title":147,"icon":148,"path":149,"stem":150,"children":151,"page":36},"Reference","i-lucide-book-marked","\u002Freference","2.reference",[152,156,160,164],{"title":153,"path":154,"stem":155},"CLI","\u002Freference\u002Fcli","2.reference\u002F1.cli",{"title":157,"path":158,"stem":159},"Model providers","\u002Freference\u002Fmodel-providers","2.reference\u002F2.model-providers",{"title":161,"path":162,"stem":163},"Source-control providers","\u002Freference\u002Fsource-control-providers","2.reference\u002F3.source-control-providers",{"title":165,"path":166,"stem":167},"Sandbox providers","\u002Freference\u002Fsandbox-providers","2.reference\u002F4.sandbox-providers",{"id":169,"title":76,"body":170,"description":565,"extension":566,"links":567,"meta":568,"navigation":569,"path":77,"seo":570,"stem":78,"__hash__":571},"docs\u002F1.guide\u002F2.tech-stack.md",{"type":171,"value":172,"toc":556},"minimark",[173,185,190,251,255,306,310,386,390,522,526],[174,175,176,177,184],"p",{},"Agent Zero is a TypeScript monorepo. Every tool below was chosen deliberately; the toolchain rules in ",[178,179,183],"a",{"href":180,"rel":181},"https:\u002F\u002Fgithub.com\u002Fwolfstar-project\u002Fagent-zero\u002Fblob\u002Fmain\u002FAGENTS.md",[182],"nofollow","AGENTS.md"," are binding for contributors and coding agents alike.",[186,187,189],"h2",{"id":188},"runtime-and-package-management","Runtime and package management",[191,192,193,206,233],"ul",{},[194,195,196,205],"li",{},[197,198,199,204],"strong",{},[178,200,203],{"href":201,"rel":202},"https:\u002F\u002Fnodejs.org",[182],"Node.js"," 24.2+"," — the minimum runtime for every package and generated bundle.",[194,207,208,215,216,220,221,224,225,228,229,232],{},[197,209,210],{},[178,211,214],{"href":212,"rel":213},"https:\u002F\u002Faube.jdx.dev",[182],"aube"," — the package manager, pinned through ",[217,218,219],"code",{},"packageManager"," in ",[217,222,223],{},"package.json",". aube reads and writes the existing ",[217,226,227],{},"pnpm-lock.yaml"," and ",[217,230,231],{},"pnpm-workspace.yaml"," in place, so the lockfile stays in pnpm's v9 format for anyone who still runs pnpm. Do not use npm, Yarn, or Bun in this repository, and do not add a second lockfile.",[194,234,235,242,243,246,247,250],{},[197,236,237],{},[178,238,241],{"href":239,"rel":240},"https:\u002F\u002Fmise.jdx.dev",[182],"mise"," — ",[217,244,245],{},"mise.toml"," pins both Node.js and aube, so one ",[217,248,249],{},"mise install"," sets up the whole toolchain.",[186,252,254],{"id":253},"build-and-orchestration","Build and orchestration",[191,256,257,267,285],{},[194,258,259,266],{},[197,260,261],{},[178,262,265],{"href":263,"rel":264},"https:\u002F\u002Fturborepo.dev",[182],"Turborepo"," — schedules workspace tasks in dependency order and caches build outputs. All orchestration goes through the root scripts; packages do not duplicate it.",[194,268,269,276,277,284],{},[197,270,271],{},[178,272,275],{"href":273,"rel":274},"https:\u002F\u002Ftsdown.dev",[182],"tsdown"," — builds publishable packages as ESM and CommonJS with matching declarations and source maps, through the shared ",[178,278,281],{"href":279,"rel":280},"https:\u002F\u002Fgithub.com\u002Fwolfstar-project\u002Fagent-zero\u002Fblob\u002Fmain\u002Fscripts\u002Ftsdown.config.ts",[182],[217,282,283],{},"scripts\u002Ftsdown.config.ts",". The Nuxt dashboard uses the Nuxt build pipeline instead.",[194,286,287,294,295,298,299,301,302,305],{},[197,288,289],{},[178,290,293],{"href":291,"rel":292},"https:\u002F\u002Fgithub.com\u002Fjohnsoncodehk\u002Ftypescript-native-bridge",[182],"typescript-native-bridge"," — overrides ",[217,296,297],{},"typescript"," repo-wide in ",[217,300,231],{},", so ",[217,303,304],{},"tsc"," keeps the classic package surface while the checker runs on tsgo in-process. The pin is exact because the fork only publishes prerelease versions.",[186,307,309],{"id":308},"quality-gates","Quality gates",[191,311,312,335,349,369],{},[194,313,314,326,327,334],{},[197,315,316,321,322],{},[178,317,320],{"href":318,"rel":319},"https:\u002F\u002Foxc.rs",[182],"Oxlint"," + ",[178,323,325],{"href":318,"rel":324},[182],"Oxfmt"," — type-aware linting and repository-wide formatting, extended with ",[178,328,331],{"href":329,"rel":330},"https:\u002F\u002Fgithub.com\u002Fe18e\u002Feslint-plugin",[182],[217,332,333],{},"@e18e\u002Feslint-plugin"," for modernization and performance rules. ESLint and Prettier are deliberately absent.",[194,336,337,344,345,348],{},[197,338,339],{},[178,340,343],{"href":341,"rel":342},"https:\u002F\u002Fknip.dev",[182],"Knip"," — detects unused files, exports, and dependencies across the workspace as part of ",[217,346,347],{},"lint:ci",".",[194,350,351,358,359,362,363,368],{},[197,352,353],{},[178,354,357],{"href":355,"rel":356},"https:\u002F\u002Fvitest.dev",[182],"Vitest"," — deterministic unit tests beside the source as ",[217,360,361],{},"*.test.ts","; ",[178,364,367],{"href":365,"rel":366},"https:\u002F\u002Fplaywright.dev",[182],"Playwright"," drives the dashboard's end-to-end suite.",[194,370,371,385],{},[197,372,373,321,380],{},[178,374,377],{"href":375,"rel":376},"https:\u002F\u002Fgithub.com\u002Farethetypeswrong\u002Farethetypeswrong.github.io",[182],[217,378,379],{},"@arethetypeswrong\u002Fcli",[178,381,384],{"href":382,"rel":383},"https:\u002F\u002Fpublint.dev",[182],"Publint"," — validate every package build.",[186,387,389],{"id":388},"application-stack","Application stack",[191,391,392,403,421,439,460,475,488,505],{},[194,393,394,402],{},[197,395,396,401],{},[178,397,400],{"href":398,"rel":399},"https:\u002F\u002Fnuxt.com",[182],"Nuxt"," 4"," — the dashboard, the single deployable app: UI, control plane, and authentication from one origin, served by Nuxt's own Nitro server.",[194,404,405,412,413,420],{},[197,406,407],{},[178,408,411],{"href":409,"rel":410},"https:\u002F\u002Funocss.dev",[182],"UnoCSS"," (preset-wind4) with ",[197,414,415],{},[178,416,419],{"href":417,"rel":418},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Ficon",[182],"@nuxt\u002Ficon"," (Lucide, bundled locally) — styling and icons.",[194,422,423,430,431,434,435,438],{},[197,424,425],{},[178,426,429],{"href":427,"rel":428},"https:\u002F\u002Forpc.unnoq.com",[182],"oRPC"," — one typed router served over both a typed RPC transport (",[217,432,433],{},"\u002Frpc\u002F**",") and OpenAPI\u002FREST (",[217,436,437],{},"\u002Fapi\u002Fv1\u002F**",").",[194,440,441,448,449,456,457,348],{},[197,442,443],{},[178,444,447],{"href":445,"rel":446},"https:\u002F\u002Fbetter-auth.com",[182],"Better Auth"," via ",[178,450,453],{"href":451,"rel":452},"https:\u002F\u002Fgithub.com\u002Fonmax\u002Fnuxt-better-auth",[182],[217,454,455],{},"@onmax\u002Fnuxt-better-auth"," — authentication mounted in-process at ",[217,458,459],{},"\u002Fapi\u002Fauth\u002F**",[194,461,462,470,471,474],{},[197,463,464,469],{},[178,465,468],{"href":466,"rel":467},"https:\u002F\u002Form.drizzle.team",[182],"Drizzle"," + Postgres"," — the session store, the only database in the repository, owned by ",[217,472,473],{},"packages\u002Fdatabase"," with reviewable checked-in SQL migrations.",[194,476,477,484,485,348],{},[197,478,479],{},[178,480,483],{"href":481,"rel":482},"https:\u002F\u002Fmaizzle.com",[182],"Maizzle"," — transactional email templates in ",[217,486,487],{},"packages\u002Fmail",[194,489,490,321,497,504],{},[197,491,492],{},[178,493,496],{"href":494,"rel":495},"https:\u002F\u002Fi18n.nuxtjs.org",[182],"@nuxtjs\u002Fi18n",[197,498,499],{},[178,500,503],{"href":501,"rel":502},"https:\u002F\u002Flunaria.dev",[182],"Lunaria"," — English and Italian dictionaries with translation-staleness reporting.",[194,506,507,514,515,518,519,348],{},[197,508,509],{},[178,510,513],{"href":511,"rel":512},"https:\u002F\u002Fsdk.vercel.ai",[182],"Vercel AI SDK"," — the model-provider integrations behind one ",[217,516,517],{},"ModelProvider"," contract in ",[217,520,521],{},"packages\u002Fmodels",[186,523,525],{"id":524},"agent-tooling","Agent tooling",[191,527,528,544],{},[194,529,530,537,538,541,542,348],{},[197,531,532],{},[178,533,536],{"href":534,"rel":535},"https:\u002F\u002Fgithub.com\u002Fskilld-labs\u002Fskilld",[182],"skilld"," — manages the Agent Skills in ",[217,539,540],{},".skills\u002F"," that expose task-specific guidance to coding agents. See ",[178,543,106],{"href":107},[194,545,546,555],{},[197,547,548],{},[178,549,552],{"href":550,"rel":551},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@redstardev\u002Funplugin-version-injector",[182],[217,553,554],{},"@redstardev\u002Funplugin-version-injector"," — injects the version marker the CLI displays in its header.",{"title":557,"searchDepth":558,"depth":558,"links":559},"",2,[560,561,562,563,564],{"id":188,"depth":558,"text":189},{"id":253,"depth":558,"text":254},{"id":308,"depth":558,"text":309},{"id":388,"depth":558,"text":389},{"id":524,"depth":558,"text":525},"Agent Zero is a TypeScript monorepo. Every tool below was chosen deliberately; the toolchain rules in AGENTS.md are binding for contributors and coding agents alike.","md",null,{},true,{"title":76,"description":565},"XlkUOgJ6okHKR3KIwh6Ltq1A_sgCH4DkjpgS7TQAj8k",[573,575],{"title":72,"path":73,"stem":74,"description":574,"children":-1},"The dashboard is the single deployable artifact: one Nuxt app serving the UI, the control plane, and authentication from one origin.",{"title":80,"path":81,"stem":82,"description":557,"children":-1},1787482151233]