[{"data":1,"prerenderedAt":1553},["ShallowReactive",2],{"navigation_docs":3,"-docs-cli-deploy":493,"-docs-cli-deploy-surround":1548},[4,46,135,218,257,292,355,377,420],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":45},"Getting Started","i-lucide-rocket","\u002Fdocs\u002Fgetting-started","docs\u002F01.getting-started",[10,15,20,25,30,35,40],{"title":11,"path":12,"stem":13,"icon":14},"What is Heximon?","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002F01.getting-started\u002F01.introduction","i-lucide-info",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F01.getting-started\u002F02.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick Start","\u002Fdocs\u002Fgetting-started\u002Fquick-start","docs\u002F01.getting-started\u002F03.quick-start","i-lucide-zap",{"title":26,"path":27,"stem":28,"icon":29},"Core Concepts","\u002Fdocs\u002Fgetting-started\u002Fcore-concepts","docs\u002F01.getting-started\u002F04.core-concepts","i-lucide-shapes",{"title":31,"path":32,"stem":33,"icon":34},"Examples","\u002Fdocs\u002Fgetting-started\u002Fexamples","docs\u002F01.getting-started\u002F05.examples","i-lucide-library",{"title":36,"path":37,"stem":38,"icon":39},"Where Next?","\u002Fdocs\u002Fgetting-started\u002Fwhere-next","docs\u002F01.getting-started\u002F06.where-next","i-lucide-signpost",{"title":41,"path":42,"stem":43,"icon":44},"Troubleshooting","\u002Fdocs\u002Fgetting-started\u002Ftroubleshooting","docs\u002F01.getting-started\u002F07.troubleshooting","i-lucide-life-buoy",false,{"title":47,"icon":48,"path":49,"stem":50,"children":51,"page":45},"Essentials","i-lucide-boxes","\u002Fdocs\u002Fessentials","docs\u002F02.essentials",[52,56,61,66,71,76,81,86,91,96,101,105,110,115,120,125,130],{"title":53,"path":54,"stem":55,"icon":48},"Modules & DI","\u002Fdocs\u002Fessentials\u002Fmodules-and-di","docs\u002F02.essentials\u002F01.modules-and-di",{"title":57,"path":58,"stem":59,"icon":60},"Controllers","\u002Fdocs\u002Fessentials\u002Fcontrollers","docs\u002F02.essentials\u002F02.controllers","i-lucide-route",{"title":62,"path":63,"stem":64,"icon":65},"Validation & DTOs","\u002Fdocs\u002Fessentials\u002Fvalidation","docs\u002F02.essentials\u002F03.validation","i-lucide-shield-check",{"title":67,"path":68,"stem":69,"icon":70},"Contracts","\u002Fdocs\u002Fessentials\u002Fcontracts","docs\u002F02.essentials\u002F04.contracts","i-lucide-file-signature",{"title":72,"path":73,"stem":74,"icon":75},"REST Client","\u002Fdocs\u002Fessentials\u002Fclient","docs\u002F02.essentials\u002F05.client","i-lucide-plug",{"title":77,"path":78,"stem":79,"icon":80},"Database","\u002Fdocs\u002Fessentials\u002Fdatabase","docs\u002F02.essentials\u002F06.database","i-lucide-database",{"title":82,"path":83,"stem":84,"icon":85},"Drizzle ORM","\u002Fdocs\u002Fessentials\u002Fdrizzle","docs\u002F02.essentials\u002F07.drizzle","i-lucide-database-zap",{"title":87,"path":88,"stem":89,"icon":90},"Persistence & Transactions","\u002Fdocs\u002Fessentials\u002Fpersistence","docs\u002F02.essentials\u002F08.persistence","i-lucide-database-backup",{"title":92,"path":93,"stem":94,"icon":95},"Migrations","\u002Fdocs\u002Fessentials\u002Fmigrations","docs\u002F02.essentials\u002F09.migrations","i-lucide-git-branch",{"title":97,"path":98,"stem":99,"icon":100},"Authentication","\u002Fdocs\u002Fessentials\u002Fauthentication","docs\u002F02.essentials\u002F10.authentication","i-lucide-key-round",{"title":102,"path":103,"stem":104,"icon":65},"Permissions & scopes","\u002Fdocs\u002Fessentials\u002Fpermissions","docs\u002F02.essentials\u002F11.permissions",{"title":106,"path":107,"stem":108,"icon":109},"Error Handling","\u002Fdocs\u002Fessentials\u002Ferrors","docs\u002F02.essentials\u002F12.errors","i-lucide-triangle-alert",{"title":111,"path":112,"stem":113,"icon":114},"Testing a Heximon App","\u002Fdocs\u002Fessentials\u002Ftesting","docs\u002F02.essentials\u002F13.testing","i-lucide-flask-conical",{"title":116,"path":117,"stem":118,"icon":119},"Test app harness","\u002Fdocs\u002Fessentials\u002Fcreatetestapp","docs\u002F02.essentials\u002F14.createtestapp","i-lucide-test-tube",{"title":121,"path":122,"stem":123,"icon":124},"Logging & Observability","\u002Fdocs\u002Fessentials\u002Flogging","docs\u002F02.essentials\u002F17.logging","i-lucide-scroll-text",{"title":126,"path":127,"stem":128,"icon":129},"Context & Lifecycle","\u002Fdocs\u002Fessentials\u002Fcontext-and-lifecycle","docs\u002F02.essentials\u002F18.context-and-lifecycle","i-lucide-radio",{"title":131,"path":132,"stem":133,"icon":134},"Project Structure","\u002Fdocs\u002Fessentials\u002Fproject-structure","docs\u002F02.essentials\u002F19.project-structure","i-lucide-folder-tree",{"title":136,"icon":137,"path":138,"stem":139,"children":140,"page":45},"Capabilities","i-lucide-sparkles","\u002Fdocs\u002Fcapabilities","docs\u002F03.capabilities",[141,145,150,155,160,164,169,174,179,184,188,193,198,203,208,213],{"title":142,"path":143,"stem":144,"icon":137},"Overview","\u002Fdocs\u002Fcapabilities\u002Foverview","docs\u002F03.capabilities\u002F01.overview",{"title":146,"path":147,"stem":148,"icon":149},"Events","\u002Fdocs\u002Fcapabilities\u002Fevents","docs\u002F03.capabilities\u002F02.events","i-lucide-radio-tower",{"title":151,"path":152,"stem":153,"icon":154},"Queue","\u002Fdocs\u002Fcapabilities\u002Fbackground-jobs","docs\u002F03.capabilities\u002F03.background-jobs","i-lucide-list-ordered",{"title":156,"path":157,"stem":158,"icon":159},"Scheduled Work","\u002Fdocs\u002Fcapabilities\u002Fscheduled-jobs","docs\u002F03.capabilities\u002F04.scheduled-jobs","i-lucide-clock",{"title":161,"path":162,"stem":163,"icon":85},"Caching","\u002Fdocs\u002Fcapabilities\u002Fcaching","docs\u002F03.capabilities\u002F05.caching",{"title":165,"path":166,"stem":167,"icon":168},"Key\u002FValue Storage","\u002Fdocs\u002Fcapabilities\u002Fkey-value","docs\u002F03.capabilities\u002F06.key-value","i-lucide-hard-drive",{"title":170,"path":171,"stem":172,"icon":173},"Blob Storage","\u002Fdocs\u002Fcapabilities\u002Fblob","docs\u002F03.capabilities\u002F07.blob","i-lucide-folder-open",{"title":175,"path":176,"stem":177,"icon":178},"Health & Readiness","\u002Fdocs\u002Fcapabilities\u002Fhealth","docs\u002F03.capabilities\u002F08.health","i-lucide-heart-pulse",{"title":180,"path":181,"stem":182,"icon":183},"Notifications","\u002Fdocs\u002Fcapabilities\u002Fnotifications","docs\u002F03.capabilities\u002F09.notifications","i-lucide-mail",{"title":185,"path":186,"stem":187,"icon":65},"Idempotency","\u002Fdocs\u002Fcapabilities\u002Fidempotency","docs\u002F03.capabilities\u002F10.idempotency",{"title":189,"path":190,"stem":191,"icon":192},"Security Hardening","\u002Fdocs\u002Fcapabilities\u002Fsecurity","docs\u002F03.capabilities\u002F11.security","i-lucide-shield",{"title":194,"path":195,"stem":196,"icon":197},"Observability & Tracing","\u002Fdocs\u002Fcapabilities\u002Fobservability","docs\u002F03.capabilities\u002F12.observability","i-lucide-activity",{"title":199,"path":200,"stem":201,"icon":202},"OpenAPI","\u002Fdocs\u002Fcapabilities\u002Fopenapi","docs\u002F03.capabilities\u002F13.openapi","i-lucide-book-marked",{"title":204,"path":205,"stem":206,"icon":207},"MCP Server","\u002Fdocs\u002Fcapabilities\u002Fmcp","docs\u002F03.capabilities\u002F14.mcp","i-lucide-bot",{"title":209,"path":210,"stem":211,"icon":212},"Schema DTOs","\u002Fdocs\u002Fcapabilities\u002Fschema","docs\u002F03.capabilities\u002F15.schema","i-lucide-file-json",{"title":214,"path":215,"stem":216,"icon":217},"Branded IDs","\u002Fdocs\u002Fcapabilities\u002Fbranded-ids","docs\u002F03.capabilities\u002F16.branded-ids","i-lucide-tag",{"title":219,"icon":220,"path":221,"stem":222,"children":223,"page":45},"Architecture","i-lucide-building","\u002Fdocs\u002Farchitecture","docs\u002F04.architecture",[224,227,232,237,242,247,252],{"title":142,"path":225,"stem":226,"icon":220},"\u002Fdocs\u002Farchitecture\u002Foverview","docs\u002F04.architecture\u002F01.overview",{"title":228,"path":229,"stem":230,"icon":231},"Domain-Driven Design","\u002Fdocs\u002Farchitecture\u002Fddd","docs\u002F04.architecture\u002F02.ddd","i-lucide-hexagon",{"title":233,"path":234,"stem":235,"icon":236},"CQRS","\u002Fdocs\u002Farchitecture\u002Fcqrs","docs\u002F04.architecture\u002F03.cqrs","i-lucide-split",{"title":238,"path":239,"stem":240,"icon":241},"Repository Pattern","\u002Fdocs\u002Farchitecture\u002Frepository-pattern","docs\u002F04.architecture\u002F04.repository-pattern","i-lucide-archive",{"title":243,"path":244,"stem":245,"icon":246},"Integration Events","\u002Fdocs\u002Farchitecture\u002Fintegration-events","docs\u002F04.architecture\u002F05.integration-events","i-lucide-send-horizontal",{"title":248,"path":249,"stem":250,"icon":251},"Saga Orchestration","\u002Fdocs\u002Farchitecture\u002Fsagas","docs\u002F04.architecture\u002F06.sagas","i-lucide-hourglass",{"title":253,"path":254,"stem":255,"icon":256},"Durable Workflows","\u002Fdocs\u002Farchitecture\u002Fworkflows","docs\u002F04.architecture\u002F07.workflows","i-lucide-workflow",{"title":258,"icon":259,"path":260,"stem":261,"children":262,"page":45},"Realtime","i-lucide-cable","\u002Fdocs\u002Frealtime","docs\u002F05.realtime",[263,266,270,274,279,284,288],{"title":142,"path":264,"stem":265,"icon":259},"\u002Fdocs\u002Frealtime\u002Foverview","docs\u002F05.realtime\u002F01.overview",{"title":267,"path":268,"stem":269,"icon":129},"WebSockets","\u002Fdocs\u002Frealtime\u002Fwebsockets","docs\u002F05.realtime\u002F02.websockets",{"title":271,"path":272,"stem":273,"icon":70},"WebSocket Contracts","\u002Fdocs\u002Frealtime\u002Fwebsocket-contracts","docs\u002F05.realtime\u002F03.websocket-contracts",{"title":275,"path":276,"stem":277,"icon":278},"Server-Sent Events","\u002Fdocs\u002Frealtime\u002Fserver-sent-events","docs\u002F05.realtime\u002F04.server-sent-events","i-lucide-rss",{"title":280,"path":281,"stem":282,"icon":283},"Typed Clients","\u002Fdocs\u002Frealtime\u002Ftyped-clients","docs\u002F05.realtime\u002F05.typed-clients","i-lucide-plug-zap",{"title":285,"path":286,"stem":287,"icon":259},"AsyncAPI","\u002Fdocs\u002Frealtime\u002Fasyncapi","docs\u002F05.realtime\u002F06.asyncapi",{"title":289,"path":290,"stem":291,"icon":80},"Durable Objects","\u002Fdocs\u002Frealtime\u002Fdurable-objects","docs\u002F05.realtime\u002F07.durable-objects",{"title":293,"icon":294,"path":295,"stem":296,"children":297,"page":45},"Deploy","i-lucide-cloud-upload","\u002Fdocs\u002Fdeploy","docs\u002F06.deploy",[298,301,306,311,316,321,326,331,336,341,345,350],{"title":142,"path":299,"stem":300,"icon":6},"\u002Fdocs\u002Fdeploy\u002Foverview","docs\u002F06.deploy\u002F01.overview",{"title":302,"path":303,"stem":304,"icon":305},"Node","\u002Fdocs\u002Fdeploy\u002Fnode","docs\u002F06.deploy\u002F02.node","la:node-js",{"title":307,"path":308,"stem":309,"icon":310},"Cloudflare","\u002Fdocs\u002Fdeploy\u002Fcloudflare","docs\u002F06.deploy\u002F03.cloudflare","simple-icons:cloudflare",{"title":312,"path":313,"stem":314,"icon":315},"Vercel","\u002Fdocs\u002Fdeploy\u002Fvercel","docs\u002F06.deploy\u002F04.vercel","ri:vercel-fill",{"title":317,"path":318,"stem":319,"icon":320},"Netlify","\u002Fdocs\u002Fdeploy\u002Fnetlify","docs\u002F06.deploy\u002F05.netlify","i-simple-icons-netlify",{"title":322,"path":323,"stem":324,"icon":325},"AWS Lambda","\u002Fdocs\u002Fdeploy\u002Faws-lambda","docs\u002F06.deploy\u002F06.aws-lambda","hugeicons:aws-lambda",{"title":327,"path":328,"stem":329,"icon":330},"Deno Deploy","\u002Fdocs\u002Fdeploy\u002Fdeno-deploy","docs\u002F06.deploy\u002F07.deno-deploy","simple-icons:denodeploy",{"title":332,"path":333,"stem":334,"icon":335},"Nitro","\u002Fdocs\u002Fdeploy\u002Fnitro","docs\u002F06.deploy\u002F08.nitro","i-unjs-nitro",{"title":337,"path":338,"stem":339,"icon":340},"Nuxt","\u002Fdocs\u002Fdeploy\u002Fnuxt","docs\u002F06.deploy\u002F09.nuxt","i-devicon-nuxt",{"title":342,"path":343,"stem":344,"icon":236},"Mixed-runtime split","\u002Fdocs\u002Fdeploy\u002Fmixed-runtime-split","docs\u002F06.deploy\u002F10.mixed-runtime-split",{"title":346,"path":347,"stem":348,"icon":349},"Hosts","\u002Fdocs\u002Fdeploy\u002Fhosts","docs\u002F06.deploy\u002F11.hosts","i-lucide-map",{"title":351,"path":352,"stem":353,"icon":354},"Cross-service events","\u002Fdocs\u002Fdeploy\u002Fcross-service-events","docs\u002F06.deploy\u002F12.cross-service-events","i-lucide-network",{"title":356,"icon":357,"path":358,"stem":359,"children":360,"page":45},"CLI","i-lucide-terminal","\u002Fdocs\u002Fcli","docs\u002F07.cli",[361,365,369,373],{"title":362,"path":363,"stem":364,"icon":357},"The heximon CLI","\u002Fdocs\u002Fcli\u002Foverview","docs\u002F07.cli\u002F01.overview",{"title":366,"path":367,"stem":368,"icon":137},"Create a New App","\u002Fdocs\u002Fcli\u002Fcreate","docs\u002F07.cli\u002F02.create",{"title":370,"path":371,"stem":372,"icon":95},"Migrations from the CLI","\u002Fdocs\u002Fcli\u002Fmigrations","docs\u002F07.cli\u002F03.migrations",{"title":374,"path":375,"stem":376,"icon":6},"Deploying a Heximon app","\u002Fdocs\u002Fcli\u002Fdeploy","docs\u002F07.cli\u002F04.deploy",{"title":378,"icon":379,"path":380,"stem":381,"children":382,"page":45},"Under the Hood","i-lucide-wrench","\u002Fdocs\u002Funder-the-hood","docs\u002F08.under-the-hood",[383,388,393,397,402,407,411,415],{"title":384,"path":385,"stem":386,"icon":387},"How the Compiler Works","\u002Fdocs\u002Funder-the-hood\u002Fhow-the-compiler-works","docs\u002F08.under-the-hood\u002F01.how-the-compiler-works","i-lucide-cog",{"title":389,"path":390,"stem":391,"icon":392},"Compiler","\u002Fdocs\u002Funder-the-hood\u002Fextending-the-compiler","docs\u002F08.under-the-hood\u002F02.extending-the-compiler","i-lucide-cpu",{"title":394,"path":395,"stem":396,"icon":357},"Compiler Diagnostics","\u002Fdocs\u002Funder-the-hood\u002Fcompiler-diagnostics","docs\u002F08.under-the-hood\u002F03.compiler-diagnostics",{"title":398,"path":399,"stem":400,"icon":401},"Library Mode","\u002Fdocs\u002Funder-the-hood\u002Flibrary-mode","docs\u002F08.under-the-hood\u002F04.library-mode","i-lucide-package",{"title":403,"path":404,"stem":405,"icon":406},"Other bundlers","\u002Fdocs\u002Funder-the-hood\u002Falternate-bundlers","docs\u002F08.under-the-hood\u002F05.alternate-bundlers","i-lucide-blocks",{"title":408,"path":409,"stem":410,"icon":401},"Packages","\u002Fdocs\u002Funder-the-hood\u002Fpackages","docs\u002F08.under-the-hood\u002F06.packages",{"title":412,"path":413,"stem":414,"icon":207},"AI Skills","\u002Fdocs\u002Funder-the-hood\u002Fai-and-agents","docs\u002F08.under-the-hood\u002F07.ai-and-agents",{"title":416,"path":417,"stem":418,"icon":419},"Advanced DI","\u002Fdocs\u002Funder-the-hood\u002Fadvanced-di","docs\u002F08.under-the-hood\u002F08.advanced-di","i-lucide-git-fork",{"title":421,"icon":422,"path":423,"stem":424,"children":425,"page":45},"Recipes","i-lucide-book-open-check","\u002Fdocs\u002Frecipes","docs\u002F09.recipes",[426,431,436,440,444,448,452,456,460,465,469,474,479,484,488],{"title":427,"path":428,"stem":429,"icon":430},"Send an Email","\u002Fdocs\u002Frecipes\u002Fsend-an-email","docs\u002F09.recipes\u002F01.send-an-email","i-lucide-send",{"title":432,"path":433,"stem":434,"icon":435},"Upload a File","\u002Fdocs\u002Frecipes\u002Fupload-a-file","docs\u002F09.recipes\u002F02.upload-a-file","i-lucide-upload",{"title":437,"path":438,"stem":439,"icon":24},"Cache an Expensive Call","\u002Fdocs\u002Frecipes\u002Fcache-an-expensive-call","docs\u002F09.recipes\u002F03.cache-an-expensive-call",{"title":441,"path":442,"stem":443,"icon":154},"Paginate a List","\u002Fdocs\u002Frecipes\u002Fpaginate-a-list","docs\u002F09.recipes\u002F04.paginate-a-list",{"title":445,"path":446,"stem":447,"icon":65},"Protect Admin Routes","\u002Fdocs\u002Frecipes\u002Fprotect-admin-routes","docs\u002F09.recipes\u002F05.protect-admin-routes",{"title":449,"path":450,"stem":451,"icon":178},"Health Probes and a Nightly Job","\u002Fdocs\u002Frecipes\u002Fhealth-probes-and-a-nightly-job","docs\u002F09.recipes\u002F06.health-probes-and-a-nightly-job",{"title":453,"path":454,"stem":455,"icon":80},"Build a CRUD API","\u002Fdocs\u002Frecipes\u002Fcrud-api","docs\u002F09.recipes\u002F07.crud-api",{"title":457,"path":458,"stem":459,"icon":100},"Add Authentication","\u002Fdocs\u002Frecipes\u002Fadd-authentication","docs\u002F09.recipes\u002F08.add-authentication",{"title":461,"path":462,"stem":463,"icon":464},"Background Jobs","\u002Fdocs\u002Frecipes\u002Fbackground-jobs","docs\u002F09.recipes\u002F09.background-jobs","i-lucide-timer",{"title":466,"path":467,"stem":468,"icon":149},"Decouple Features with Events","\u002Fdocs\u002Frecipes\u002Fevent-driven-module","docs\u002F09.recipes\u002F10.event-driven-module",{"title":470,"path":471,"stem":472,"icon":473},"Build a DDD Aggregate","\u002Fdocs\u002Frecipes\u002Fddd-aggregate","docs\u002F09.recipes\u002F11.ddd-aggregate","i-lucide-box",{"title":475,"path":476,"stem":477,"icon":478},"Publish a Feature Package","\u002Fdocs\u002Frecipes\u002Ffeature-package","docs\u002F09.recipes\u002F12.feature-package","i-lucide-package-open",{"title":480,"path":481,"stem":482,"icon":483},"Reliable Integration Events","\u002Fdocs\u002Frecipes\u002Freliable-integration-events","docs\u002F09.recipes\u002F13.reliable-integration-events","i-lucide-inbox",{"title":485,"path":486,"stem":487,"icon":95},"Reactive Choreography","\u002Fdocs\u002Frecipes\u002Freactive-choreography","docs\u002F09.recipes\u002F14.reactive-choreography",{"title":489,"path":490,"stem":491,"icon":492},"Build a Production CRUD API","\u002Fdocs\u002Frecipes\u002Fproduction-crud-api","docs\u002F09.recipes\u002F15.production-crud-api","i-lucide-layers",{"id":494,"title":374,"body":495,"description":1541,"extension":1542,"links":1543,"meta":1544,"navigation":1545,"path":375,"seo":1546,"stem":376,"__hash__":1547},"docs\u002Fdocs\u002F07.cli\u002F04.deploy.md",{"type":496,"value":497,"toc":1519},"minimark",[498,529,555,560,567,709,737,772,787,791,813,820,834,859,881,896,900,911,933,958,982,997,1019,1029,1036,1042,1062,1097,1104,1111,1130,1139,1146,1167,1183,1190,1196,1203,1224,1234,1241,1252,1268,1275,1279,1286,1294,1297,1304,1318,1335,1358,1366,1370,1376,1390,1400,1406,1416,1438,1455,1461,1472,1476,1515],[499,500,501,505,506,509,510,513,514,517,518,517,521,524,525,528],"p",{},[502,503,504],"code",{},"heximon deploy"," builds your app and ships the artifact to whatever platform your ",[502,507,508],{},"heximon.config.ts","\ndeclares — the same ",[502,511,512],{},"vp build"," you'd run by hand, then a handoff to that platform's own CLI. It never\nreimplements the vendor's upload logic; it resolves credentials, runs the build, and shells ",[502,515,516],{},"wrangler deploy",", ",[502,519,520],{},"vercel deploy --prebuilt",[502,522,523],{},"netlify deploy",", or ",[502,526,527],{},"deployctl deploy"," for you.",[530,531,537],"pre",{"className":532,"code":533,"filename":534,"language":535,"meta":536,"style":536},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpx heximon deploy\n","terminal","bash","",[502,538,539],{"__ignoreMap":536},[540,541,544,548,552],"span",{"class":542,"line":543},"line",1,[540,545,547],{"class":546},"sBMFI","pnpx",[540,549,551],{"class":550},"sfazB"," heximon",[540,553,554],{"class":550}," deploy\n",[556,557,559],"h2",{"id":558},"what-it-ships-to","What it ships to",[499,561,562,563,566],{},"The platform comes from your config's ",[502,564,565],{},"platform"," value — the same instance that shapes the build already\ncarries its own ship logic:",[568,569,570,587],"table",{},[571,572,573],"thead",{},[574,575,576,581,584],"tr",{},[577,578,580],"th",{"align":579},"left","Platform",[577,582,583],{"align":579},"Ships with",[577,585,586],{"align":579},"Credentials",[588,589,590,612,635,665,688],"tbody",{},[574,591,592,602,609],{},[593,594,595,598,599,601],"td",{"align":579},[596,597,302],"strong",{}," (default, no ",[502,600,565],{}," declared)",[593,603,604,605,608],{"align":579},"Reports the ",[502,606,607],{},"node dist\u002Fserver.js"," run path — no vendor upload",[593,610,611],{"align":579},"none",[574,613,614,619,624],{},[593,615,616],{"align":579},[596,617,618],{},"Cloudflare Workers",[593,620,621],{"align":579},[502,622,623],{},"wrangler deploy --config dist\u002Fwrangler.json",[593,625,626,627,630,631,634],{"align":579},"none required locally (",[502,628,629],{},"wrangler login","); ",[502,632,633],{},"CLOUDFLARE_API_TOKEN"," for CI",[574,636,637,641,650],{},[593,638,639],{"align":579},[596,640,312],{},[593,642,643,645,646,649],{"align":579},[502,644,520],{}," (",[502,647,648],{},"--prod"," for the production environment)",[593,651,626,652,630,655,658,659,658,662,634],{"align":579},[502,653,654],{},"vercel login",[502,656,657],{},"VERCEL_TOKEN"," + ",[502,660,661],{},"VERCEL_ORG_ID",[502,663,664],{},"VERCEL_PROJECT_ID",[574,666,667,671,677],{},[593,668,669],{"align":579},[596,670,317],{},[593,672,673,645,675,649],{"align":579},[502,674,523],{},[502,676,648],{},[593,678,626,679,630,682,658,685,634],{"align":579},[502,680,681],{},"netlify login",[502,683,684],{},"NETLIFY_AUTH_TOKEN",[502,686,687],{},"NETLIFY_SITE_ID",[574,689,690,694,701],{},[593,691,692],{"align":579},[596,693,327],{},[593,695,696,645,699,649],{"align":579},[502,697,698],{},"deployctl deploy \u003Centrypoint>",[502,700,648],{},[593,702,626,703,630,706,634],{"align":579},[502,704,705],{},"deployctl login",[502,707,708],{},"DENO_DEPLOY_TOKEN",[499,710,711,712,715,716,718,719,722,723,726,727,730,731,733,734,736],{},"A ",[502,713,714],{},"production"," environment ships with the vendor's ",[502,717,648],{}," flag; anything else (",[502,720,721],{},"staging",",\n",[502,724,725],{},"preview:\u003Cid>",") ships a preview. Override the resolved platform with ",[502,728,729],{},"--platform cloudflare"," when your\nconfig doesn't declare one — useful for a project that sets ",[502,732,565],{}," in its Vite config instead of the\n",[502,735,508],{}," config file this command reads.",[530,738,740],{"className":532,"code":739,"filename":534,"language":535,"meta":536,"style":536},"pnpx heximon deploy --env staging\npnpx heximon deploy --platform cloudflare\n",[502,741,742,757],{"__ignoreMap":536},[540,743,744,746,748,751,754],{"class":542,"line":543},[540,745,547],{"class":546},[540,747,551],{"class":550},[540,749,750],{"class":550}," deploy",[540,752,753],{"class":550}," --env",[540,755,756],{"class":550}," staging\n",[540,758,760,762,764,766,769],{"class":542,"line":759},2,[540,761,547],{"class":546},[540,763,551],{"class":550},[540,765,750],{"class":550},[540,767,768],{"class":550}," --platform",[540,770,771],{"class":550}," cloudflare\n",[773,774,776,779,780,783,784,786],"callout",{"type":775},"info",[596,777,778],{},"AWS Lambda has no ship command here."," Lambda has no prebuilt one-shot CLI deploy — it's provision-first\n(function + API Gateway\u002FFunction URL + IAM), and a code update needs ",[502,781,782],{},"aws lambda update-function-code","\nagainst an already-existing function. ",[502,785,504],{}," fails loud on a Lambda-configured project rather\nthan shipping an unverified command.",[556,788,790],{"id":789},"before-anything-ships-preflight","Before anything ships: preflight",[499,792,793,794,797,798,801,802,805,806,805,809,812],{},"On a real run (not ",[502,795,796],{},"--dry-run","), the command first checks that the platform's own CLI is installed ",[596,799,800],{},"and","\nauthenticated — ",[502,803,804],{},"wrangler whoami"," \u002F ",[502,807,808],{},"vercel whoami",[502,810,811],{},"netlify api getCurrentUser"," — before touching the\nbuild or any side-effecting step. A missing binary halts with install guidance; a logged-out CLI halts with\nthe login command. Nothing runs half-finished because the vendor CLI turned out not to be logged in.",[556,814,816,817],{"id":815},"bootstrap-a-fresh-project-create","Bootstrap a fresh project — ",[502,818,819],{},"--create",[499,821,822,823,826,827,829,830,833],{},"On a brand-new Vercel or Netlify account, the project or site doesn't exist yet — ",[502,824,825],{},"deploy --prebuilt"," and\n",[502,828,523],{}," both need something to link to. ",[502,831,832],{},"--create \u003Cname>"," creates it and links your directory to\nit, before the build:",[530,835,837],{"className":532,"code":836,"filename":534,"language":535,"meta":536,"style":536},"pnpx heximon deploy --create my-app-production --team my-team\n",[502,838,839],{"__ignoreMap":536},[540,840,841,843,845,847,850,853,856],{"class":542,"line":543},[540,842,547],{"class":546},[540,844,551],{"class":550},[540,846,750],{"class":550},[540,848,849],{"class":550}," --create",[540,851,852],{"class":550}," my-app-production",[540,854,855],{"class":550}," --team",[540,857,858],{"class":550}," my-team\n",[499,860,861,862,865,866,869,870,873,874,877,878,880],{},"It's idempotent — an existing target with that exact name is linked, never re-created — and it classifies\nby ",[596,863,864],{},"exact"," name match rather than trusting the vendor CLI's own exit code (Vercel's ",[502,867,868],{},"link --project","\nauto-creates a missing project and exits ",[502,871,872],{},"0","; Netlify's ",[502,875,876],{},"sites:create --name"," auto-renames on a collision\nand also exits ",[502,879,872],{},").",[499,882,883,886,887,889,890,892,893,895],{},[502,884,885],{},"--team"," scopes the bootstrap to a multi-team account and only makes sense together with ",[502,888,819],{},".\nCloudflare needs no bootstrap — ",[502,891,516],{}," creates the Worker by name on first ship — so\n",[502,894,819],{}," there is a reported no-op.",[556,897,899],{"id":898},"apply-pending-migrations-with-migrate","Apply pending migrations with --migrate",[499,901,902,903,906,907,910],{},"A schema change on a filesystem-less edge target can't migrate itself at boot, so ",[502,904,905],{},"--migrate"," applies every\nauto-detected database's pending migrations through its local ",[502,908,909],{},"drizzle-kit",", sequenced around the ship:",[530,912,914],{"className":532,"code":913,"filename":534,"language":535,"meta":536,"style":536},"pnpx heximon deploy --migrate --env-file .env.production\n",[502,915,916],{"__ignoreMap":536},[540,917,918,920,922,924,927,930],{"class":542,"line":543},[540,919,547],{"class":546},[540,921,551],{"class":550},[540,923,750],{"class":550},[540,925,926],{"class":550}," --migrate",[540,928,929],{"class":550}," --env-file",[540,931,932],{"class":550}," .env.production\n",[499,934,935,936,939,940,946,947,949,950,953,954,957],{},"Detection reuses the same ",[502,937,938],{},"DatabaseConfigDetector"," as ",[941,942,943],"a",{"href":371},[502,944,945],{},"heximon migrations"," — every\nconfig it classifies as plain ",[502,948,909],{},"-applicable becomes a migration target; a Cloudflare D1 config\n(",[502,951,952],{},"wrangler-d1",") or a Durable Object SQLite config (",[502,955,956],{},"skip",") becomes an informational note instead, since\nneither applies through drizzle-kit.",[499,959,960,963,964,966,967,970,971,974,975,978,979,981],{},[502,961,962],{},"--env-file"," supplies the connection env the spawned ",[502,965,909],{}," child needs — the deploy ",[596,968,969],{},"never","\nloads your dev ",[502,972,973],{},".env"," cascade for this (a stray dev ",[502,976,977],{},"DATABASE_URL"," would silently migrate the wrong\ndatabase during a production deploy), so the child inherits only this process's env overlaid by\n",[502,980,962],{},".",[499,983,984,985,988,989,992,993,996],{},"A pending batch that looks destructive (a ",[502,986,987],{},"DROP",", a narrowing, a new ",[502,990,991],{},"NOT NULL",") needs an explicit\n",[502,994,995],{},"--allow-destructive"," acknowledgment — without it the deploy halts rather than apply a drop alongside code\nthat stops using the column, which would break a safe rollback:",[530,998,1000],{"className":532,"code":999,"filename":534,"language":535,"meta":536,"style":536},"pnpx heximon deploy --migrate --allow-destructive --env-file .env.production\n",[502,1001,1002],{"__ignoreMap":536},[540,1003,1004,1006,1008,1010,1012,1015,1017],{"class":542,"line":543},[540,1005,547],{"class":546},[540,1007,551],{"class":550},[540,1009,750],{"class":550},[540,1011,926],{"class":550},[540,1013,1014],{"class":550}," --allow-destructive",[540,1016,929],{"class":550},[540,1018,932],{"class":550},[499,1020,1021,1022,1025,1026,1028],{},"A bare ",[502,1023,1024],{},"--migrations \u003Cdir>"," (no ",[502,1027,905],{},") is the read-only sibling: it gates the deploy on pending\nmigrations existing in that directory without applying anything.",[556,1030,1032,1033],{"id":1031},"create-the-resources-the-vendor-cli-wont-provision","Create the resources the vendor CLI won't — ",[502,1034,1035],{},"--provision",[499,1037,1038,1039,1041],{},"Some infrastructure the vendor's deploy command doesn't auto-create — Cloudflare Queues, for one.\n",[502,1040,1035],{}," creates it after the build (so a strategy can read the emitted deploy config) and before the\nship (so the code that binds it finds it already there):",[530,1043,1045],{"className":532,"code":1044,"filename":534,"language":535,"meta":536,"style":536},"pnpx heximon deploy --provision --env-file .env.production\n",[502,1046,1047],{"__ignoreMap":536},[540,1048,1049,1051,1053,1055,1058,1060],{"class":542,"line":543},[540,1050,547],{"class":546},[540,1052,551],{"class":550},[540,1054,750],{"class":550},[540,1056,1057],{"class":550}," --provision",[540,1059,929],{"class":550},[540,1061,932],{"class":550},[499,1063,1064,1066,1067,1070,1071,1073,1074,1077,1078,517,1081,517,1084,1087,1088,1090,1091,1093,1094,1096],{},[502,1065,962],{}," here pushes your app's ",[596,1068,1069],{},"runtime secrets"," — ",[502,1072,977],{},", API keys, ",[502,1075,1076],{},"CRON_SECRET"," — into\nthe target platform's native secret store (",[502,1079,1080],{},"wrangler secret put",[502,1082,1083],{},"vercel env add",[502,1085,1086],{},"netlify env:import","),\nnever as a command-line argument. ",[502,1089,962],{}," needs ",[502,1092,1035],{}," or ",[502,1095,905],{}," to consume it; passing it\nalone is rejected, since otherwise the values would silently go nowhere.",[556,1098,1100,1101],{"id":1099},"deploy-with-a-named-wrangler-profile-profile","Deploy with a named wrangler profile — ",[502,1102,1103],{},"--profile",[499,1105,1106,1107,1110],{},"Cloudflare-only: ships (and every provisioning\u002Fsecret call in the same run) as a named ",[502,1108,1109],{},"wrangler auth","\nprofile rather than the ambient login.",[530,1112,1114],{"className":532,"code":1113,"filename":534,"language":535,"meta":536,"style":536},"pnpx heximon deploy --profile my-client-account\n",[502,1115,1116],{"__ignoreMap":536},[540,1117,1118,1120,1122,1124,1127],{"class":542,"line":543},[540,1119,547],{"class":546},[540,1121,551],{"class":550},[540,1123,750],{"class":550},[540,1125,1126],{"class":550}," --profile",[540,1128,1129],{"class":550}," my-client-account\n",[499,1131,1132,1133,1135,1136,1138],{},"Any other resolved platform rejects ",[502,1134,1103],{}," up front. A ",[502,1137,633],{}," in the environment still\ntakes precedence over the profile, matching wrangler's own precedence.",[556,1140,1142,1143],{"id":1141},"confirm-the-app-actually-came-up-verify","Confirm the app actually came up — ",[502,1144,1145],{},"--verify",[499,1147,1148,1149,1151,1152,1155,1156,1159,1160,1162,1163,1166],{},"A vendor CLI exiting ",[502,1150,872],{}," means the artifact ",[596,1153,1154],{},"uploaded",", not that the app ",[596,1157,1158],{},"booted",". ",[502,1161,1145],{}," GETs the\ndeployed URL after a real ship and asserts a ",[502,1164,1165],{},"2xx",", retrying briefly to absorb cold-start latency:",[530,1168,1170],{"className":532,"code":1169,"filename":534,"language":535,"meta":536,"style":536},"pnpx heximon deploy --verify\n",[502,1171,1172],{"__ignoreMap":536},[540,1173,1174,1176,1178,1180],{"class":542,"line":543},[540,1175,547],{"class":546},[540,1177,551],{"class":550},[540,1179,750],{"class":550},[540,1181,1182],{"class":550}," --verify\n",[499,1184,1185,1186,1189],{},"There's no assumed ",[502,1187,1188],{},"\u002Fhealth"," route — the framework mounts none by default — so this checks root-URL\nliveness only. A boot-crashed deploy (5xx, or nothing answering) becomes a loud, non-zero exit instead of a\nsilent success.",[556,1191,1193,1194],{"id":1192},"preview-without-shipping-dry-run","Preview without shipping — ",[502,1195,796],{},[499,1197,1198,1199,1202],{},"Runs the build and every resolution step, and reports exactly what ",[596,1200,1201],{},"would"," ship — no vendor upload, no\nsecret push, no resource creation:",[530,1204,1206],{"className":532,"code":1205,"filename":534,"language":535,"meta":536,"style":536},"pnpx heximon deploy --dry-run --provision --migrate\n",[502,1207,1208],{"__ignoreMap":536},[540,1209,1210,1212,1214,1216,1219,1221],{"class":542,"line":543},[540,1211,547],{"class":546},[540,1213,551],{"class":550},[540,1215,750],{"class":550},[540,1217,1218],{"class":550}," --dry-run",[540,1220,1057],{"class":550},[540,1222,1223],{"class":550}," --migrate\n",[499,1225,1226,1227,805,1229,805,1231,1233],{},"Combine it with ",[502,1228,1035],{},[502,1230,905],{},[502,1232,819],{}," to preview the whole plan for a change you haven't\nrun yet.",[556,1235,1237,1238],{"id":1236},"tear-it-down-destroy","Tear it down — ",[502,1239,1240],{},"--destroy",[499,1242,1243,1244,1247,1248,1251],{},"The inverse of a ship — currently wired only for Cloudflare (",[502,1245,1246],{},"wrangler delete",", reading the committed\n",[502,1249,1250],{},"wrangler.{jsonc,json,toml}"," for the Worker's name; no build needed). A platform with nothing to remove\n(Node) reports unsupported.",[530,1253,1255],{"className":532,"code":1254,"filename":534,"language":535,"meta":536,"style":536},"pnpx heximon deploy --destroy\n",[502,1256,1257],{"__ignoreMap":536},[540,1258,1259,1261,1263,1265],{"class":542,"line":543},[540,1260,547],{"class":546},[540,1262,551],{"class":550},[540,1264,750],{"class":550},[540,1266,1267],{"class":550}," --destroy\n",[499,1269,1270,1271,1274],{},"Interactively this asks for confirmation first; in a non-interactive shell it refuses to run without\n",[502,1272,1273],{},"--yes",", since a destructive teardown should never fire from an unattended script by accident.",[556,1276,1278],{"id":1277},"what-it-detects-along-the-way","What it detects along the way",[499,1280,1281,1282,1285],{},"Before shipping, the command scans your app's imports for classes that declare themselves\n",[502,1283,1284],{},"DeployableService"," — an Upstash Redis client, a Turso\u002Flibsql connection, a Resend transport, and so on —\nand reports what each needs:",[530,1287,1292],{"className":1288,"code":1290,"filename":504,"language":1291,"meta":536},[1289],"language-text","Detected 2 external service(s) from your imports:\n· upstash (redis-kv) — needs UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKEN (not set here)\n· resend (email) — needs RESEND_API_KEY\nEnsure each is configured in your platform's secret store before deploying.\n","text",[502,1293,1290],{"__ignoreMap":536},[499,1295,1296],{},"This is purely informational — no central registry to maintain, and no annotation for you to write. A\nvendor class declares its own requirements once; the CLI extends automatically as your imports change.",[556,1298,1300,1301],{"id":1299},"the-foundational-id-verb-heximon-provision","The foundational-id verb — ",[502,1302,1303],{},"heximon provision",[499,1305,1306,1307,1310,1311,1314,1315,1317],{},"Some resources return an id the ",[596,1308,1309],{},"compiler needs at build time"," — a Cloudflare Hyperdrive binding with an\nempty ",[502,1312,1313],{},"id"," fails the build outright, but provisioning is what creates that id. That chicken-and-egg can't\nride the post-build ",[502,1316,1035],{}," flag above, so it has its own pre-build command:",[530,1319,1321],{"className":532,"code":1320,"filename":534,"language":535,"meta":536,"style":536},"pnpx heximon provision --save-ids\n",[502,1322,1323],{"__ignoreMap":536},[540,1324,1325,1327,1329,1332],{"class":542,"line":543},[540,1326,547],{"class":546},[540,1328,551],{"class":550},[540,1330,1331],{"class":550}," provision",[540,1333,1334],{"class":550}," --save-ids\n",[499,1336,1337,1338,1159,1341,1344,1345,1348,1349,1351,1352,1354,1355,1357],{},"It reads the resources your config declares (not the built artifact — there's nothing built yet), creates\nthe missing ones via the vendor's REST API, and reports each ",[502,1339,1340],{},"binding → id",[502,1342,1343],{},"--save-ids"," records them in a\nper-environment ledger (",[502,1346,1347],{},".heximon\u002Fdeploy-env.\u003Cenv>.json",", non-secret ids only) so ",[502,1350,504],{}," injects\nthem into the next build automatically — the one-time flow is ",[502,1353,1303],{}," once, then ",[502,1356,504],{}," from then on.",[499,1359,1360,1362,1363,1365],{},[502,1361,1103],{}," isn't accepted here: provisioning talks to the Cloudflare REST API with ",[502,1364,633],{},",\nwhich a wrangler auth profile doesn't carry.",[556,1367,1369],{"id":1368},"from-zero-to-deployed-on-cloudflare","From zero to deployed on Cloudflare",[499,1371,1372,1373,1375],{},"Putting the pieces above together, end to end, for a fresh Cloudflare project with a Hyperdrive\nbinding in its config (an id ",[502,1374,1035],{}," alone can't create — the build needs it up front):",[530,1377,1378],{"className":532,"code":1320,"filename":534,"language":535,"meta":536,"style":536},[502,1379,1380],{"__ignoreMap":536},[540,1381,1382,1384,1386,1388],{"class":542,"line":543},[540,1383,547],{"class":546},[540,1385,551],{"class":550},[540,1387,1331],{"class":550},[540,1389,1334],{"class":550},[499,1391,1392,1393,1395,1396,1399],{},"This reads ",[502,1394,508],{}," (no build yet — there's nothing built), creates the missing\nHyperdrive binding via the Cloudflare REST API, and writes its id to\n",[502,1397,1398],{},".heximon\u002Fdeploy-env.production.json"," — a per-environment, non-secret ledger. Expect output shaped\nlike:",[530,1401,1404],{"className":1402,"code":1403,"filename":1303,"language":1291,"meta":536},[1289],"┌  heximon provision · production\n│\n◇  Platform: cloudflare · target class: edge\n│\n◇  Provisioning foundational resources…\n│\n◇  Provisioned hyperdrive-binding → id 3f1a9c2e-....\n│\n◇  Recorded HEXIMON_HYPERDRIVE_ID_HYPERDRIVE_BINDING in .heximon\u002Fdeploy-env.production.json — `heximon deploy` injects it into the build.\n│\n└  Provisioning complete — ids recorded in the deploy ledger; deploy when ready.\n",[502,1405,1403],{"__ignoreMap":536},[499,1407,1408,1409,1411,1412,1415],{},"Run it once per environment. From here on, ",[502,1410,504],{}," reads the ledger automatically — the id\nnever needs a manual paste into ",[502,1413,1414],{},"wrangler.json"," or an env var.",[530,1417,1419],{"className":532,"code":1418,"filename":534,"language":535,"meta":536,"style":536},"pnpx heximon deploy --env-file .env.production --migrate --verify\n",[502,1420,1421],{"__ignoreMap":536},[540,1422,1423,1425,1427,1429,1431,1434,1436],{"class":542,"line":543},[540,1424,547],{"class":546},[540,1426,551],{"class":550},[540,1428,750],{"class":550},[540,1430,929],{"class":550},[540,1432,1433],{"class":550}," .env.production",[540,1435,926],{"class":550},[540,1437,1182],{"class":550},[499,1439,1440,1442,1443,1445,1446,1448,1449,1451,1452,1454],{},[502,1441,962],{}," pushes your app's runtime secrets to ",[502,1444,1080],{},"; ",[502,1447,905],{}," applies pending\nDrizzle migrations against every auto-detected database before the ship; ",[502,1450,1145],{}," confirms the\nworker actually answers after ",[502,1453,516],{}," exits. A representative run:",[530,1456,1459],{"className":1457,"code":1458,"filename":504,"language":1291,"meta":536},[1289],"┌  heximon deploy · production\n│\n◇  Platform: cloudflare · target class: edge\n│\n◇  Resolved 1 credential(s).\n│\n◇  Loaded 4 secret(s) from .env.production.\n│\n◇  Injecting 1 deploy-ledger value(s) into the build: HEXIMON_HYPERDRIVE_ID_HYPERDRIVE_BINDING.\n│\n◇  Applying migrations for 1 database(s): app.\n│\n◇  Deploy steps complete.\n│\n◇  Database migrations applied [pre-ship] — app: 0001_init, 0002_add_orders.\n│\n◇  Uploaded Worker \"my-app\" (current_version_id: 3f1a9c2e-...).\n│\n◇  Liveness OK — https:\u002F\u002Fmy-app.workers.dev returned 2xx.\n│\n└  Deployed to cloudflare.\n",[502,1460,1458],{"__ignoreMap":536},[499,1462,1463,1464,1467,1468,1471],{},"The two commands are the whole lifecycle for a new Cloudflare project: ",[502,1465,1466],{},"provision"," runs once to mint\nthe ids the build depends on, and ",[502,1469,1470],{},"deploy"," runs every time after — build, secrets, migrations, ship,\nand a liveness check, in one command.",[556,1473,1475],{"id":1474},"see-also","See also",[1477,1478,1479,1485,1506],"ul",{},[1480,1481,1482,1484],"li",{},[941,1483,362],{"href":363}," — the full command surface and the shared flags every command honors.",[1480,1486,1487,1489,1490,805,1493,805,1496,805,1499,1502,1503,1505],{},[941,1488,370],{"href":371}," — the ",[502,1491,1492],{},"generate",[502,1494,1495],{},"migrate",[502,1497,1498],{},"status",[502,1500,1501],{},"push"," bridge\n",[502,1504,905],{}," reuses.",[1480,1507,1508,1489,1511,1514],{},[941,1509,1510],{"href":347},"Deploy targets",[502,1512,1513],{},"PlatformHostStrategy"," each platform package supplies, which this\ncommand's target resolution reads.",[1516,1517,1518],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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":536,"searchDepth":759,"depth":759,"links":1520},[1521,1522,1523,1525,1526,1528,1530,1532,1534,1536,1537,1539,1540],{"id":558,"depth":759,"text":559},{"id":789,"depth":759,"text":790},{"id":815,"depth":759,"text":1524},"Bootstrap a fresh project — --create",{"id":898,"depth":759,"text":899},{"id":1031,"depth":759,"text":1527},"Create the resources the vendor CLI won't — --provision",{"id":1099,"depth":759,"text":1529},"Deploy with a named wrangler profile — --profile",{"id":1141,"depth":759,"text":1531},"Confirm the app actually came up — --verify",{"id":1192,"depth":759,"text":1533},"Preview without shipping — --dry-run",{"id":1236,"depth":759,"text":1535},"Tear it down — --destroy",{"id":1277,"depth":759,"text":1278},{"id":1299,"depth":759,"text":1538},"The foundational-id verb — heximon provision",{"id":1368,"depth":759,"text":1369},{"id":1474,"depth":759,"text":1475},"heximon deploy runs vp build then ships via wrangler deploy, vercel deploy --prebuilt, netlify deploy, or deployctl deploy — with --provision, --create, --migrate, --profile, --verify, and --destroy.","md",null,{},{"icon":6},{"title":374,"description":1541},"1KFGkZhb1dm8P5ZE5XPRetyKtGb1dRn8gYz-93gh8iw",[1549,1551],{"title":370,"path":371,"stem":372,"description":1550,"icon":95,"children":-1},"heximon migrations generate\u002Fmigrate\u002Fstatus\u002Fpush — DatabaseConfigDetector auto-detects your DrizzleXConfig files, DotenvCascade loads .env, and DrizzleKitRunner drives .bin-resolved drizzle-kit with no hand-written drizzle.config.ts.",{"title":384,"path":385,"stem":386,"description":1552,"icon":387,"children":-1},"Why Heximon compiles a static DI graph ahead of time instead of resolving it at boot, what the compiler reads from your source, what it emits into .heximon\u002F, and the verdicts.gen.d.ts feedback loop that surfaces DI mistakes in your editor.",1783300761903]