[{"data":1,"prerenderedAt":346},["ShallowReactive",2],{"docs:navigation":3,"docs:page:\u002Fdocs\u002Fdeployment":115},[4],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Introduction","\u002Fdocs","docs\u002F1.index",[9,11,16,21,38,95,110],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-house",{"title":12,"path":13,"stem":14,"icon":15},"Quickstart","\u002Fdocs\u002Fquickstart","docs\u002F2.quickstart","i-lucide-rocket",{"title":17,"path":18,"stem":19,"icon":20},"Essentials","\u002Fdocs\u002Fconfiguration","docs\u002F3.configuration","i-lucide-book-open",{"title":22,"path":23,"stem":24,"children":25,"icon":27},"Authentication","\u002Fdocs\u002Fauthentication","docs\u002F4.authentication\u002Findex",[26,28,33],{"title":22,"path":23,"stem":24,"icon":27},"i-lucide-shield-check",{"title":29,"path":30,"stem":31,"icon":32},"Protect User Data","\u002Fdocs\u002Fauthentication\u002Fuser-data","docs\u002F4.authentication\u002F1.user-data","i-lucide-user-lock",{"title":34,"path":35,"stem":36,"icon":37},"Two-Factor Verification","\u002Fdocs\u002Fauthentication\u002Ftwo-factor","docs\u002F4.authentication\u002F2.two-factor","i-lucide-key-round",{"title":39,"path":40,"stem":41,"children":42,"icon":44},"Deployment","\u002Fdocs\u002Fdeployment","docs\u002F5.deployment\u002Findex",[43,45,50,55,60,65,70,75,80,85,90],{"title":39,"path":40,"stem":41,"icon":44},"i-lucide-cloud-upload",{"title":46,"path":47,"stem":48,"icon":49},"Deploy to Cloudflare","\u002Fdocs\u002Fdeployment\u002Fcloudflare","docs\u002F5.deployment\u002F1.cloudflare","i-simple-icons-cloudflare",{"title":51,"path":52,"stem":53,"icon":54},"Platform Support","\u002Fdocs\u002Fdeployment\u002Fsupport","docs\u002F5.deployment\u002F10.support","i-lucide-list-checks",{"title":56,"path":57,"stem":58,"icon":59},"Deploy to Vercel","\u002Fdocs\u002Fdeployment\u002Fvercel","docs\u002F5.deployment\u002F2.vercel","i-simple-icons-vercel",{"title":61,"path":62,"stem":63,"icon":64},"Deploy to Azure","\u002Fdocs\u002Fdeployment\u002Fazure","docs\u002F5.deployment\u002F3.azure","i-simple-icons-microsoftazure",{"title":66,"path":67,"stem":68,"icon":69},"Switch Hosts","\u002Fdocs\u002Fdeployment\u002Fswitch-hosts","docs\u002F5.deployment\u002F4.switch-hosts","i-lucide-arrow-right-left",{"title":71,"path":72,"stem":73,"icon":74},"Database and File Storage","\u002Fdocs\u002Fdeployment\u002Fdata-services","docs\u002F5.deployment\u002F5.data-services","i-lucide-database",{"title":76,"path":77,"stem":78,"icon":79},"Domains and Secrets","\u002Fdocs\u002Fdeployment\u002Fsettings","docs\u002F5.deployment\u002F6.settings","i-lucide-settings",{"title":81,"path":82,"stem":83,"icon":84},"Troubleshoot Deployment","\u002Fdocs\u002Fdeployment\u002Ftroubleshooting","docs\u002F5.deployment\u002F7.troubleshooting","i-lucide-wrench",{"title":86,"path":87,"stem":88,"icon":89},"Deploy Agents","\u002Fdocs\u002Fdeployment\u002Fagents","docs\u002F5.deployment\u002F8.agents","i-lucide-bot",{"title":91,"path":92,"stem":93,"icon":94},"Deploy Automations","\u002Fdocs\u002Fdeployment\u002Fautomations","docs\u002F5.deployment\u002F9.automations","i-lucide-workflow",{"title":96,"path":97,"stem":98,"children":99,"icon":101},"Connect Accounts","\u002Fdocs\u002Fconnect","docs\u002F6.connect\u002Findex",[100,102,106],{"title":96,"path":97,"stem":98,"icon":101},"i-lucide-plug",{"title":103,"path":104,"stem":105,"icon":37},"Connection Credentials","\u002Fdocs\u002Fconnect\u002Fcredentials","docs\u002F6.connect\u002F1.credentials",{"title":107,"path":108,"stem":109,"icon":84},"Connect MCP Servers","\u002Fdocs\u002Fconnect\u002Fmcp","docs\u002F6.connect\u002F2.mcp",{"title":111,"path":112,"stem":113,"icon":114},"Project Reference","\u002Fdocs\u002Freference","docs\u002F7.reference","i-lucide-terminal",{"page":116,"surround":341},{"id":117,"title":39,"body":118,"description":334,"extension":335,"links":336,"meta":337,"navigation":338,"path":40,"seo":339,"stem":41,"__hash__":340},"docs\u002Fdocs\u002F5.deployment\u002Findex.md",{"type":119,"value":120,"toc":329},"minimark",[121,130,178,199,221,226,229,245,262,266,272,306,309,313,319,325],[122,123,124,125,129],"p",{},"You can deploy the same CloudConfig application to different hosts. Choose the\nhost in ",[126,127,128],"code",{},"cloud.config.ts",", then run the same command:",[131,132,137],"pre",{"className":133,"code":134,"filename":128,"language":135,"meta":136,"style":136},"language-ts shiki shiki-themes github-light github-light github-dark","deploy: {\n  target: 'vercel', \u002F\u002F 'cloudflare' | 'vercel' | 'azure'\n}\n","ts","",[126,138,139,152,172],{"__ignoreMap":136},[140,141,144,148],"span",{"class":142,"line":143},"line",1,[140,145,147],{"class":146},"snPdu","deploy",[140,149,151],{"class":150},"sxrX7",": {\n",[140,153,155,158,161,165,168],{"class":142,"line":154},2,[140,156,157],{"class":146},"  target",[140,159,160],{"class":150},": ",[140,162,164],{"class":163},"sIIMD","'vercel'",[140,166,167],{"class":150},", ",[140,169,171],{"class":170},"sCsY4","\u002F\u002F 'cloudflare' | 'vercel' | 'azure'\n",[140,173,175],{"class":142,"line":174},3,[140,176,177],{"class":150},"}\n",[131,179,183],{"className":180,"code":181,"language":182,"meta":136,"style":136},"language-bash shiki shiki-themes github-light github-light github-dark","pnpm exec cloudconfig deploy\n","bash",[126,184,185],{"__ignoreMap":136},[140,186,187,190,193,196],{"class":142,"line":143},[140,188,189],{"class":146},"pnpm",[140,191,192],{"class":163}," exec",[140,194,195],{"class":163}," cloudconfig",[140,197,198],{"class":163}," deploy\n",[122,200,201,202,167,205,208,209,212,213,216,217,220],{},"Cloudflare is the default. The initializer's ",[126,203,204],{},"--target nuxt",[126,206,207],{},"next",", or\n",[126,210,211],{},"standalone"," chooses the framework; ",[126,214,215],{},"deploy.target"," chooses where it runs.\nThe database defaults to Turso on Vercel and D1 on Cloudflare and Azure. Set\n",[126,218,219],{},"db.remote.provider"," explicitly to keep that choice across app hosts.",[222,223,225],"h2",{"id":224},"choose-your-host","Choose Your Host",[122,227,228],{},"Follow one guide for your first deployment:",[230,231,232,237,241],"card-group",{},[233,234,236],"card",{"icon":49,"title":235,"to":47},"Cloudflare","Run a Worker with native D1 and R2 bindings.",[233,238,240],{"icon":59,"title":239,"to":57},"Vercel","Publish production Functions for your framework.",[233,242,244],{"icon":64,"title":243,"to":62},"Azure","Run Node.js on a Linux App Service.",[122,246,247,248,251,252,254,255,257,258,261],{},"All three support standalone, Nuxt, and Next.js applications. Nuxt agent hosts\nuse native durable execution on each cloud: Cloudflare Agents, Vercel Workflow,\nor Azure Durable Functions. See ",[249,250,86],"a",{"href":87}," for the\nruntime dependencies, execution storage, and authenticated gateway contract.\nPortable scheduled and event-driven jobs use the same native infrastructure;\nsee ",[249,253,91],{"href":92},". Review\n",[249,256,51],{"href":52}," for framework coverage, storage\nlimits, and what the repository checks establish.\nCloudflare Workflow classes declared in ",[126,259,260],{},"deploy.workflows"," require Cloudflare.",[222,263,265],{"id":264},"before-your-first-deployment","Before Your First Deployment",[122,267,268,269,271],{},"Start with a working local app from the ",[249,270,12],{"href":13},". Before\nfollowing the guide for your host:",[273,274,275,283,299],"ol",{},[276,277,278,279,282],"li",{},"Generate, review, and commit SQL migrations and ",[126,280,281],{},"migrations\u002Fmeta"," snapshots.",[276,284,285,286,289,290,293,294,298],{},"Run ",[126,287,288],{},"cloudconfig auth status"," and provide the required values in the ignored\n",[126,291,292],{},".env"," file. Dashboard starters with two-factor verification also need\n",[249,295,297],{"href":296},"\u002Fdocs\u002Fauthentication\u002Ftwo-factor#deliver-email-codes","email delivery",".",[276,300,301,302,305],{},"Prepare ",[249,303,304],{"href":72},"data-service credentials",". Vercel's\nTurso default needs an existing database URL and auth token. D1 or R2 used\nfrom Vercel or Azure need Cloudflare credentials.",[122,307,308],{},"Deployment builds the application, prepares its configured data services,\napplies migrations, and publishes the result. It checks local configuration\nbefore changing the remote database.",[222,310,312],{"id":311},"moving-an-existing-app","Moving an Existing App?",[122,314,315,316,318],{},"Pin ",[126,317,219],{}," before changing hosts to keep the same database.\nDeployment leaves existing data, the previous deployment, and DNS in place.",[122,320,321,322,324],{},"Follow ",[249,323,66],{"href":67}," to validate the new app\nbefore moving traffic. Moving the database or files is a separate migration.",[326,327,328],"style",{},"html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}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":136,"searchDepth":154,"depth":154,"links":330},[331,332,333],{"id":224,"depth":154,"text":225},{"id":264,"depth":154,"text":265},{"id":311,"depth":154,"text":312},"Put your app online with Cloudflare, Vercel, or Azure.","md",null,{},{"icon":44},{"title":39,"description":334},"sQkl3qQAQVQkbEATmNBe63l95FAHyoB9zJSl7jPNy_U",[342,344],{"title":34,"path":35,"stem":36,"description":343,"icon":37},"Require an email code or a passkey after primary sign-in.",{"title":46,"path":47,"stem":48,"description":345,"icon":49},"Build and publish a Worker with your database, migrations, and secrets.",1792122403454]