[{"data":1,"prerenderedAt":534},["ShallowReactive",2],{"docs:navigation":3,"docs:page:\u002Fdocs\u002Fdeployment\u002Fvercel":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":529},{"id":117,"title":56,"body":118,"description":522,"extension":523,"links":524,"meta":525,"navigation":526,"path":57,"seo":527,"stem":58,"__hash__":528},"docs\u002Fdocs\u002F5.deployment\u002F2.vercel.md",{"type":119,"value":120,"toc":514},"minimark",[121,130,135,138,194,205,209,212,248,263,273,284,287,355,366,370,373,404,407,410,414,421,424,454,458,472,476,487,504,510],[122,123,124,125,129],"p",{},"This guide deploys a working standalone, Nuxt, or Next.js application to Vercel.\nYou need a Vercel account, committed migrations, and the\n",[126,127,128],"a",{"href":72},"data credentials"," required by your app.",[131,132,134],"h2",{"id":133},"_1-authenticate-the-cli","1. Authenticate the CLI",[122,136,137],{},"Install Vercel in the project and sign in:",[139,140,145],"pre",{"className":141,"code":142,"language":143,"meta":144,"style":144},"language-bash shiki shiki-themes github-light github-light github-dark","pnpm add -D vercel\npnpm exec vercel login\npnpm exec vercel whoami\n","bash","",[146,147,148,168,182],"code",{"__ignoreMap":144},[149,150,153,157,161,165],"span",{"class":151,"line":152},"line",1,[149,154,156],{"class":155},"snPdu","pnpm",[149,158,160],{"class":159},"sIIMD"," add",[149,162,164],{"class":163},"sBjJW"," -D",[149,166,167],{"class":159}," vercel\n",[149,169,171,173,176,179],{"class":151,"line":170},2,[149,172,156],{"class":155},[149,174,175],{"class":159}," exec",[149,177,178],{"class":159}," vercel",[149,180,181],{"class":159}," login\n",[149,183,185,187,189,191],{"class":151,"line":184},3,[149,186,156],{"class":155},[149,188,175],{"class":159},[149,190,178],{"class":159},[149,192,193],{"class":159}," whoami\n",[122,195,196,197,200,201,204],{},"Finish the device approval opened by ",[146,198,199],{},"vercel login",". Continue when ",[146,202,203],{},"whoami","\nreturns your account; a dashboard login alone does not authenticate the CLI.",[131,206,208],{"id":207},"_2-select-vercel","2. Select Vercel",[122,210,211],{},"Set the host in your existing config:",[139,213,218],{"className":214,"code":215,"filename":216,"language":217,"meta":144,"style":144},"language-ts shiki shiki-themes github-light github-light github-dark","deploy: {\n  target: 'vercel',\n}\n","cloud.config.ts","ts",[146,219,220,229,243],{"__ignoreMap":144},[149,221,222,225],{"class":151,"line":152},[149,223,224],{"class":155},"deploy",[149,226,228],{"class":227},"sxrX7",": {\n",[149,230,231,234,237,240],{"class":151,"line":170},[149,232,233],{"class":155},"  target",[149,235,236],{"class":227},": ",[149,238,239],{"class":159},"'vercel'",[149,241,242],{"class":227},",\n",[149,244,245],{"class":151,"line":184},[149,246,247],{"class":227},"}\n",[122,249,250,251,254,255,258,259,262],{},"Vercel defaults to a Turso database. Create it first, then set\n",[146,252,253],{},"TURSO_DATABASE_URL"," and ",[146,256,257],{},"TURSO_AUTH_TOKEN"," in the ignored ",[146,260,261],{},".env"," file or process\nenvironment. CloudConfig applies migrations and synchronizes these server\nsettings during deployment. It does not create the Turso service.",[122,264,265,266,269,270,272],{},"For an existing D1-backed app, set ",[146,267,268],{},"db.remote: { provider: 'd1' }"," to retain its\ndatabase. See ",[126,271,71],{"href":72}," for\ncredentials and provider overrides.",[122,274,275,276,279,280,283],{},"CloudConfig reuses ",[146,277,278],{},".vercel\u002Fproject.json"," when the project is already linked.\nKeep ",[146,281,282],{},".vercel"," out of version control.",[122,285,286],{},"To select a particular team or project, add those settings:",[139,288,290],{"className":214,"code":289,"filename":216,"language":217,"meta":144,"style":144},"deploy: {\n  target: 'vercel',\n  name: 'blog-app',\n  vercel: { scope: 'my-team', project: 'blog-app' },\n}\n",[146,291,292,298,308,320,350],{"__ignoreMap":144},[149,293,294,296],{"class":151,"line":152},[149,295,224],{"class":155},[149,297,228],{"class":227},[149,299,300,302,304,306],{"class":151,"line":170},[149,301,233],{"class":155},[149,303,236],{"class":227},[149,305,239],{"class":159},[149,307,242],{"class":227},[149,309,310,313,315,318],{"class":151,"line":184},[149,311,312],{"class":155},"  name",[149,314,236],{"class":227},[149,316,317],{"class":159},"'blog-app'",[149,319,242],{"class":227},[149,321,323,326,329,332,334,337,340,343,345,347],{"class":151,"line":322},4,[149,324,325],{"class":155},"  vercel",[149,327,328],{"class":227},": { ",[149,330,331],{"class":155},"scope",[149,333,236],{"class":227},[149,335,336],{"class":159},"'my-team'",[149,338,339],{"class":227},", ",[149,341,342],{"class":155},"project",[149,344,236],{"class":227},[149,346,317],{"class":159},[149,348,349],{"class":227}," },\n",[149,351,353],{"class":151,"line":352},5,[149,354,247],{"class":227},[122,356,357,358,361,362,365],{},"An explicit ",[146,359,360],{},"deploy.name"," or ",[146,363,364],{},"deploy.vercel.project"," takes precedence over an\nexisting project link.",[131,367,369],{"id":368},"_3-preview-and-deploy","3. Preview and Deploy",[122,371,372],{},"Run the deployment commands:",[139,374,376],{"className":141,"code":375,"language":143,"meta":144,"style":144},"pnpm exec cloudconfig deploy --dry-run\npnpm exec cloudconfig deploy\n",[146,377,378,393],{"__ignoreMap":144},[149,379,380,382,384,387,390],{"class":151,"line":152},[149,381,156],{"class":155},[149,383,175],{"class":159},[149,385,386],{"class":159}," cloudconfig",[149,388,389],{"class":159}," deploy",[149,391,392],{"class":163}," --dry-run\n",[149,394,395,397,399,401],{"class":151,"line":170},[149,396,156],{"class":155},[149,398,175],{"class":159},[149,400,386],{"class":159},[149,402,403],{"class":159}," deploy\n",[122,405,406],{},"The dry run checks local configuration, migration metadata, and required\nsettings. It makes no provider calls or remote schema checks.",[122,408,409],{},"Deployment links the project, pulls its production settings, builds locally,\napplies migrations, synchronizes server settings, and publishes prebuilt\nproduction output. Secret values are supplied through stdin.",[131,411,413],{"id":412},"_4-check-the-production-url","4. Check the Production URL",[122,415,416,417,420],{},"Open the printed production alias and ",[146,418,419],{},"\u002Fapi\u002F_docs",". Test sign-in and a write\nfollowed by a read.",[122,422,423],{},"Generated deployment URLs can require Vercel login even when the production\nalias is public. If the production alias also asks for a login, review the\nproject's deployment-protection settings before testing public API clients.\nVercel account limits and Function timeouts still apply.",[122,425,426,427,430,431,434,435,437,438,441,442,445,446,448,449,453],{},"For native durable agent runs and schedules, declare ",[146,428,429],{},"deploy.agent",", install\n",[146,432,433],{},"workflow",", and follow ",[126,436,86],{"href":87},". The automatic\nWorkflow build integration currently supports Nuxt.\nDeclare ",[146,439,440],{},"deploy.automations"," for portable scheduled and event-driven jobs using\nthe same infrastructure. The CLI synchronizes schedules after publication;\nprotected projects need ",[146,443,444],{},"VERCEL_AUTOMATION_BYPASS_SECRET"," for that request.\nSee ",[126,447,91],{"href":92}," and\n",[126,450,452],{"href":451},"\u002Fdocs\u002Fdeployment\u002Fsupport#database-and-file-storage","file transport limits",".",[131,455,457],{"id":456},"deploy-from-ci","Deploy from CI",[122,459,460,461,464,465,448,468,471],{},"Supply ",[146,462,463],{},"VERCEL_TOKEN"," through your CI secret store. ",[146,466,467],{},"VERCEL_ORG_ID",[146,469,470],{},"VERCEL_PROJECT_ID"," can identify an existing project. These credentials are used\nby deployment; they are not application runtime secrets.",[131,473,475],{"id":474},"how-your-framework-runs","How Your Framework Runs",[122,477,478,479,482,483,486],{},"Next.js uses ",[146,480,481],{},"vercel build","; Nuxt uses the ",[146,484,485],{},"vercel"," Nitro preset. Standalone\nprojects build a Function from the backend config.",[122,488,489,490,493,494,497,498,453],{},"For custom standalone routes, set ",[146,491,492],{},"deploy.entry"," to a module whose default\nexport is an object with ",[146,495,496],{},"fetch(request, env)",". That handler also works on Azure.\nThe adapter follows Vercel's ",[126,499,503],{"href":500,"rel":501},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fcli\u002Fdeploy",[502],"nofollow","prebuilt deployment flow",[122,505,506,507,453],{},"When the app works, configure its ",[126,508,509],{"href":77},"domain and production origin",[511,512,513],"style",{},"html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":144,"searchDepth":170,"depth":170,"links":515},[516,517,518,519,520,521],{"id":133,"depth":170,"text":134},{"id":207,"depth":170,"text":208},{"id":368,"depth":170,"text":369},{"id":412,"depth":170,"text":413},{"id":456,"depth":170,"text":457},{"id":474,"depth":170,"text":475},"Publish your application as production Vercel Functions.","md",null,{},{"icon":59},{"title":56,"description":522},"oxdqO-L5gt6njrOYBh0Ujagvzb9SQsua_WSAs1aIV34",[530,532],{"title":51,"path":52,"stem":53,"description":531,"icon":54},"Understand shared features, native services, verification, and remaining deployment limits.",{"title":61,"path":62,"stem":63,"description":533,"icon":64},"Publish a locally built application to a Linux App Service running Node.js 22.",1792122403883]