void 0.22.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/README.md +5 -1
  2. package/dist/{account-cmd-CjyxcGkM.mjs → account-cmd-C84Ee8cO.mjs} +4 -4
  3. package/dist/{scan-ClYmX3sa.mjs → application-analysis-BVsVqc11.mjs} +135 -18
  4. package/dist/application-routing-B7QEjqSR.mjs +27 -0
  5. package/dist/{auth-CZuiVsFh.mjs → auth-CCjt0hcq.mjs} +1 -1
  6. package/dist/{auth-DLNN0D3Z.mjs → auth-CSkdO2Bb.mjs} +4 -47
  7. package/dist/{auth-link-BLO4ptzo.mjs → auth-link-CioEg6uY.mjs} +4 -4
  8. package/dist/{auth-router-ZUg9MF_U.mjs → auth-router-BsR981d4.mjs} +4 -4
  9. package/dist/{better-auth-shared-rsBGBvWJ.mjs → better-auth-shared-hy6RPh9W.mjs} +13 -2
  10. package/dist/{build-cmd-BxR5FROK.mjs → build-cmd-LzvNJORH.mjs} +17 -5
  11. package/dist/{cache-D0sWhgKI.mjs → cache-C4MvnrMH.mjs} +2 -2
  12. package/dist/{cancel-deploy-D4NUqFbi.mjs → cancel-deploy-abUxpP2n.mjs} +2 -2
  13. package/dist/{cf-build-output-BJ6yGEIS.mjs → cf-build-output-BPqOT964.mjs} +2 -1
  14. package/dist/cf-build-output-_0HNWysu.mjs +2 -0
  15. package/dist/cli/cli.mjs +80 -455
  16. package/dist/cli/{cf-compat.mjs → cloudflare-operation-process.mjs} +442 -421
  17. package/dist/cli/env-schema-probe.d.mts +2 -1
  18. package/dist/cli/env-schema-probe.mjs +3 -3
  19. package/dist/client-Cu7jWiF1.mjs +2 -0
  20. package/dist/{client-BTZ3XkrB.mjs → client-RV8NVeB8.mjs} +140 -21
  21. package/dist/{cloudflare-auth-DQkqoMYa.mjs → cloudflare-auth-Qdc7tw8F.mjs} +41 -38
  22. package/dist/{cloudflare-cmd-BKlfGHAy.mjs → cloudflare-cmd-BcrVyTmJ.mjs} +5 -5
  23. package/dist/cloudflare-config-Bktvwtpf.mjs +182 -0
  24. package/dist/{cloudflare-connect-Ctmrw579.mjs → cloudflare-connect-B8uPZ4nx.mjs} +3 -3
  25. package/dist/{cloudflare-operations-BT6OWFBk.mjs → cloudflare-operations-AiWashgg.mjs} +1 -1
  26. package/dist/{cloudflare-operations-B9tzgjmf.mjs → cloudflare-operations-fxHb-byx.mjs} +116 -172
  27. package/dist/{preset-UHj9ARyP.mjs → cloudflare-process-B-wekeR6.mjs} +93 -6
  28. package/dist/{config-VavjpDnp.d.mts → config-BMHb8RCj.d.mts} +1 -0
  29. package/dist/config-C_XRIPx2.mjs +89 -0
  30. package/dist/config-entry.d.mts +1 -1
  31. package/dist/{connect-Dg-WkW-C.mjs → connect-Bd4kJd9U.mjs} +5 -5
  32. package/dist/{create-project-DdoqwFLF.mjs → create-project-Boczwj5r.mjs} +1 -1
  33. package/dist/{create-project-l9J7pbtm.mjs → create-project-bMf6ffLZ.mjs} +2 -2
  34. package/dist/{db-gp2sCXyN.mjs → db-8uG64XLl.mjs} +21 -21
  35. package/dist/{delete-TTedbH6B.mjs → delete-NvbiyeJf.mjs} +2 -2
  36. package/dist/{deploy-CH-o2CaZ.mjs → deploy-DzAIwqNU.mjs} +908 -582
  37. package/dist/{deploy-B19L2Bra.mjs → deploy-bjXdFCtn.mjs} +1 -1
  38. package/dist/{domain-JRF59P_r.mjs → domain-y5Tvydvo.mjs} +3 -3
  39. package/dist/{email-Bo6G9LOZ.mjs → email-B3umsW75.mjs} +13 -28
  40. package/dist/{env-BYOrWQnv.mjs → env-BS6qYHDb.mjs} +4 -4
  41. package/dist/{env-public-BxU_0yTL.d.mts → env-public-BX_r8HR6.d.mts} +1 -1
  42. package/dist/{env-validation-BB4GkLxn.mjs → env-validation-BPn7vk-V.mjs} +18 -71
  43. package/dist/{env-validation-BXge7uyK.mjs → env-validation-DbTg7-ar.mjs} +1 -1
  44. package/dist/{fetch-CXDChK7B.mjs → fetch-BIZJh7vR.mjs} +2 -2
  45. package/dist/{fetch-stream-AOByI7Ki.mjs → fetch-stream-IvCYKyQL.mjs} +24 -4
  46. package/dist/{gen-sCtlCOdA.mjs → gen-B580--vC.mjs} +2 -2
  47. package/dist/gen-BVaUUumi.mjs +2 -0
  48. package/dist/{github-cmd-0-7PexDq.mjs → github-cmd-v45BdfKX.mjs} +2 -2
  49. package/dist/{handler-HEcZsaij.d.mts → handler-CZ4nAylQ.d.mts} +1 -1
  50. package/dist/help-DofyZuY7.mjs +2 -0
  51. package/dist/{help-GKtwl07I.mjs → help-daGKjXGk.mjs} +229 -747
  52. package/dist/index.d.mts +1 -1
  53. package/dist/index.mjs +288 -1502
  54. package/dist/info-B97bTX9N.mjs +113 -0
  55. package/dist/{init-FZx3Elvz.mjs → init-Bvy7zrBo.mjs} +46 -15
  56. package/dist/limits-Bq5LG8Id.d.mts +27 -0
  57. package/dist/limits-Cjuk2VPm.mjs +68 -0
  58. package/dist/{link-BrQfb_CU.mjs → link-CDqqCjFl.mjs} +3 -3
  59. package/dist/{list-D44jmIAM.mjs → list-CZj0dzKY.mjs} +3 -3
  60. package/dist/{live-CKJlvlNp.d.mts → live-Chw1eIMv.d.mts} +1 -1
  61. package/dist/{local-d1-Bg9OzEEO.mjs → local-d1-2CMnpuW_.mjs} +2 -2
  62. package/dist/login-DYt_An22.mjs +2 -0
  63. package/dist/{login-CAsAsQ-_.mjs → login-UZKFM_u7.mjs} +3 -3
  64. package/dist/{logs-BjKvFnVM.mjs → logs-CUZ6t9t3.mjs} +3 -3
  65. package/dist/migrate-8_2u55MD.mjs +2 -0
  66. package/dist/{migrate-BPITvDJN.mjs → migrate-DHul7PRV.mjs} +2 -1
  67. package/dist/{node-Dt7z256D.mjs → node-BkyRWRx8.mjs} +1 -1
  68. package/dist/operator-args-CLgKGlwU.mjs +690 -0
  69. package/dist/{operator-cmd-BK5CCiT9.mjs → operator-cmd-DBA6dl0m.mjs} +68 -22
  70. package/dist/pages/client.d.mts +34 -2
  71. package/dist/pages/client.mjs +59 -3
  72. package/dist/pages/index.d.mts +1 -1
  73. package/dist/pages/index.mjs +1 -1
  74. package/dist/pages/islands-plugin.mjs +1 -1
  75. package/dist/pages/protocol.d.mts +2 -2
  76. package/dist/pages/protocol.mjs +2 -308
  77. package/dist/{parse-filename-DioPHiR9.mjs → parse-filename-CUbj-1MP.mjs} +35 -1
  78. package/dist/plan-D1Q5rf-r.mjs +2 -0
  79. package/dist/plan-NPpwZ_kc.mjs +58 -0
  80. package/dist/platform-args-BJdRtlLq.mjs +506 -0
  81. package/dist/platform-args-D3RXyR6h.mjs +2 -0
  82. package/dist/{platform-auth-config-BlN8xTdD.mjs → platform-auth-config-B56E9YP1.mjs} +3 -3
  83. package/dist/{platform-auth-protection-7d5aV2Jg.mjs → platform-auth-protection-BDWO_aER.mjs} +2 -2
  84. package/dist/{platform-auth-recovery-Dxij8ZbR.mjs → platform-auth-recovery-1gg4CSRe.mjs} +3 -3
  85. package/dist/{platform-cmd-E0FuL212.mjs → platform-cmd-Bt-1w6pY.mjs} +1 -1
  86. package/dist/{platform-cmd-B3hwKrFK.mjs → platform-cmd-DMcQStSc.mjs} +24 -3
  87. package/dist/{platform-domain-D6Xcy9ZX.mjs → platform-domain-BNkcz0OB.mjs} +2 -2
  88. package/dist/{platform-lifecycle-k0E0xoxx.mjs → platform-lifecycle-9OyBALhH.mjs} +327 -215
  89. package/dist/{platform-lifecycle-DMh_qrry.mjs → platform-lifecycle-BE6C_jxh.mjs} +1 -1
  90. package/dist/{platform-management-Brz_BDiT.mjs → platform-management-CjwLVQwN.mjs} +6 -3
  91. package/dist/{platform-management-DOtss0BN.mjs → platform-management-CnyTdcWX.mjs} +1 -1
  92. package/dist/platform-plans-config-BNGKGr4P.mjs +359 -0
  93. package/dist/{platform-recovery-BvtcXON5.mjs → platform-recovery-D6KSpuFm.mjs} +2 -2
  94. package/dist/{plugin-inference-BMfKRSqE.mjs → plugin-inference-CXWnn79A.mjs} +174 -64
  95. package/dist/{prepare-C-6YZyyg.mjs → prepare-B5Mkic5u.mjs} +1 -1
  96. package/dist/{prepare-CRhJbVrG.mjs → prepare-DOsL0CC9.mjs} +4 -20
  97. package/dist/prepare-cgvDMtSb.mjs +2 -0
  98. package/dist/{project-cmd-BZLCqOqw.mjs → project-cmd-CNzrqvBv.mjs} +16 -16
  99. package/dist/{project-team-BvgM0WoX.mjs → project-team-DQOWPfQT.mjs} +2 -2
  100. package/dist/{project-token-l5DqK6Az.mjs → project-token-CTDYU0Cc.mjs} +2 -2
  101. package/dist/{project-zero-trust-v6Mvpp8y.mjs → project-zero-trust-BNAkW-_0.mjs} +2 -2
  102. package/dist/{protocol-BBa6cstI.d.mts → protocol-CjF_iI9X.d.mts} +2 -2
  103. package/dist/protocol-U7bfjHmA.mjs +331 -0
  104. package/dist/{provision-Fr9pRqce.mjs → provision-C4ORE7G7.mjs} +1 -1
  105. package/dist/{provision-C4IGqkBf.mjs → provision-CJFgTZY8.mjs} +89 -198
  106. package/dist/{requests-DN-BbNiM.mjs → requests-MhxYnau8.mjs} +2 -2
  107. package/dist/resource-name-C7LVpcRm.mjs +11 -0
  108. package/dist/{rollback-D7rzSaZM.mjs → rollback-CJ6iSDoU.mjs} +3 -3
  109. package/dist/route-url-CG7U-cRN.mjs +15 -0
  110. package/dist/{runner-B8wXwWlo.mjs → runner-CXA9Fh8h.mjs} +1 -1
  111. package/dist/{runner-p-dMs2UN.mjs → runner-Ol0TNjk6.mjs} +2 -2
  112. package/dist/runtime/ai.d.mts +12 -8
  113. package/dist/runtime/ai.mjs +84 -17
  114. package/dist/runtime/better-auth-mysql.mjs +1 -1
  115. package/dist/runtime/better-auth-pg.mjs +1 -1
  116. package/dist/runtime/better-auth.mjs +1 -1
  117. package/dist/runtime/client-react.mjs +2 -2
  118. package/dist/runtime/client-solid.mjs +2 -2
  119. package/dist/runtime/client-svelte.mjs +2 -2
  120. package/dist/runtime/client-vue.mjs +2 -2
  121. package/dist/runtime/client.mjs +2 -2
  122. package/dist/runtime/durable.d.mts +3 -1
  123. package/dist/runtime/durable.mjs +4 -1
  124. package/dist/runtime/email/testing.mjs +1 -1
  125. package/dist/runtime/env-public.d.mts +1 -1
  126. package/dist/runtime/fetch-stream.mjs +1 -1
  127. package/dist/runtime/fetch.mjs +1 -1
  128. package/dist/runtime/handler.d.mts +1 -1
  129. package/dist/runtime/kv.mjs +0 -1
  130. package/dist/runtime/limits.d.mts +2 -0
  131. package/dist/runtime/limits.mjs +2 -0
  132. package/dist/runtime/live-client.d.mts +1 -1
  133. package/dist/runtime/live-server.mjs +25 -16
  134. package/dist/runtime/live.d.mts +1 -1
  135. package/dist/runtime/migration-handler.mjs +62 -42
  136. package/dist/runtime/route-url.d.mts +4 -0
  137. package/dist/runtime/route-url.mjs +2 -0
  138. package/dist/runtime/routing.d.mts +180 -0
  139. package/dist/runtime/routing.mjs +1082 -0
  140. package/dist/runtime/sandbox-container.d.mts +1 -1
  141. package/dist/runtime/sandbox-container.mjs +1 -1
  142. package/dist/runtime/sandbox.d.mts +3 -3
  143. package/dist/runtime/sandbox.mjs +75 -45
  144. package/dist/runtime/sse.mjs +1 -1
  145. package/dist/runtime/validator.d.mts +1 -1
  146. package/dist/runtime/ws-server.d.mts +4 -2
  147. package/dist/runtime/ws-server.mjs +27 -2
  148. package/dist/runtime/ws.d.mts +2 -2
  149. package/dist/runtime/ws.mjs +8 -6
  150. package/dist/{sandbox-qpNBT8a3.d.mts → sandbox-XZAqzFlG.d.mts} +11 -8
  151. package/dist/{sandbox-container-DdNEBfCc.d.mts → sandbox-container-Bo0eiFKz.d.mts} +2 -1
  152. package/dist/{sandbox-container-4fdqLnyb.mjs → sandbox-container-C6ItmVuN.mjs} +4 -2
  153. package/dist/{scan-4tfN-PSn.mjs → scan-C7okrLyM.mjs} +4 -35
  154. package/dist/{secret-BOtOl_cb.mjs → secret-Dli5fP0B.mjs} +4 -4
  155. package/dist/{sse-BaC1jXko.mjs → sse-CQNaDFFV.mjs} +6 -3
  156. package/dist/validate-Dq_L3s0S.mjs +2 -0
  157. package/dist/{validate-CIUwFpjB.mjs → validate-ctOrgiS3.mjs} +2 -1
  158. package/dist/{wrangler-DQF1vKyf.mjs → wrangler-7K-bW_DL.mjs} +8 -239
  159. package/dist/{ws-BoY7vQML.d.mts → ws-CL1w7GXU.d.mts} +13 -2
  160. package/package.json +15 -8
  161. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +34 -157
  162. package/skills/void/SKILL.md +50 -135
  163. package/skills/void/docs/guide/ai.md +94 -84
  164. package/skills/void/docs/guide/app-types.md +3 -32
  165. package/skills/void/docs/guide/auth.md +12 -116
  166. package/skills/void/docs/guide/database/d1.md +9 -54
  167. package/skills/void/docs/guide/database/mysql.md +1 -1
  168. package/skills/void/docs/guide/database/postgresql.md +5 -26
  169. package/skills/void/docs/guide/database.md +23 -75
  170. package/skills/void/docs/guide/deployment.md +27 -113
  171. package/skills/void/docs/guide/durable-state.md +43 -18
  172. package/skills/void/docs/guide/edge/headers.md +3 -47
  173. package/skills/void/docs/guide/edge/prerendering.md +5 -20
  174. package/skills/void/docs/guide/edge/redirects.md +11 -64
  175. package/skills/void/docs/guide/edge/revalidation.md +5 -18
  176. package/skills/void/docs/guide/edge/rewrites.md +56 -284
  177. package/skills/void/docs/guide/edge/static-assets.md +22 -72
  178. package/skills/void/docs/guide/email/domains.md +112 -0
  179. package/skills/void/docs/guide/email/receiving.md +139 -0
  180. package/skills/void/docs/guide/email/sending.md +231 -0
  181. package/skills/void/docs/guide/email.md +13 -619
  182. package/skills/void/docs/guide/env-migration.md +11 -11
  183. package/skills/void/docs/guide/env-vars.md +9 -29
  184. package/skills/void/docs/guide/index.md +0 -15
  185. package/skills/void/docs/guide/jobs.md +3 -18
  186. package/skills/void/docs/guide/kv.md +5 -11
  187. package/skills/void/docs/guide/live.md +5 -56
  188. package/skills/void/docs/guide/pages-routing/actions-and-forms.md +78 -125
  189. package/skills/void/docs/guide/pages-routing/head.md +10 -10
  190. package/skills/void/docs/guide/pages-routing/islands.md +6 -36
  191. package/skills/void/docs/guide/pages-routing/layouts.md +6 -128
  192. package/skills/void/docs/guide/pages-routing/loaders.md +3 -19
  193. package/skills/void/docs/guide/pages-routing/markdown.md +13 -171
  194. package/skills/void/docs/guide/pages-routing/overview.md +7 -17
  195. package/skills/void/docs/guide/pages-routing/view-transitions.md +1 -1
  196. package/skills/void/docs/guide/platform/administration/access.md +1 -4
  197. package/skills/void/docs/guide/platform/administration/email.md +35 -8
  198. package/skills/void/docs/guide/platform/administration/operations.md +26 -4
  199. package/skills/void/docs/guide/platform/administration/plans.md +126 -0
  200. package/skills/void/docs/guide/platform/administration/projects.md +5 -2
  201. package/skills/void/docs/guide/platform/administration/zero-trust.md +23 -152
  202. package/skills/void/docs/guide/platform/development/runtime.md +3 -13
  203. package/skills/void/docs/guide/platform/development/schema-ci.md +0 -58
  204. package/skills/void/docs/guide/platform/installation/credentials.md +6 -4
  205. package/skills/void/docs/guide/platform/installation/domains.md +30 -2
  206. package/skills/void/docs/guide/platform/installation/first-deployment.md +2 -0
  207. package/skills/void/docs/guide/platform/installation/maintenance.md +3 -1
  208. package/skills/void/docs/guide/platform/installation/prerequisites.md +20 -15
  209. package/skills/void/docs/guide/platform/installation/setup.md +9 -5
  210. package/skills/void/docs/guide/platform-administration.md +1 -0
  211. package/skills/void/docs/guide/queues.md +7 -9
  212. package/skills/void/docs/guide/quickstart.md +38 -37
  213. package/skills/void/docs/guide/remote-dev.md +4 -9
  214. package/skills/void/docs/guide/sandboxes.md +29 -21
  215. package/skills/void/docs/guide/server-routing.md +9 -72
  216. package/skills/void/docs/guide/sse.md +4 -18
  217. package/skills/void/docs/guide/ssg.md +3 -15
  218. package/skills/void/docs/guide/ssr.md +14 -62
  219. package/skills/void/docs/guide/storage.md +9 -4
  220. package/skills/void/docs/guide/type-safety.md +3 -14
  221. package/skills/void/docs/guide/typed-fetch.md +3 -7
  222. package/skills/void/docs/guide/websockets.md +68 -40
  223. package/skills/void/docs/integrations/agents.md +3 -3
  224. package/skills/void/docs/integrations/cloudflare.md +85 -316
  225. package/skills/void/docs/integrations/frameworks/analog.md +5 -64
  226. package/skills/void/docs/integrations/frameworks/astro.md +4 -73
  227. package/skills/void/docs/integrations/frameworks/nuxt.md +5 -62
  228. package/skills/void/docs/integrations/frameworks/overview.md +11 -54
  229. package/skills/void/docs/integrations/frameworks/react-router.md +5 -60
  230. package/skills/void/docs/integrations/frameworks/sveltekit.md +6 -65
  231. package/skills/void/docs/integrations/frameworks/tanstack-start.md +4 -62
  232. package/skills/void/docs/integrations/nodejs-bun-deno.md +5 -69
  233. package/skills/void/docs/reference/api/auth.md +156 -0
  234. package/skills/void/docs/reference/api/client.md +87 -0
  235. package/skills/void/docs/reference/api/database.md +95 -0
  236. package/skills/void/docs/reference/api/durable.md +46 -0
  237. package/skills/void/docs/reference/api/env.md +50 -0
  238. package/skills/void/docs/reference/api/handlers.md +254 -0
  239. package/skills/void/docs/reference/api/pages.md +241 -0
  240. package/skills/void/docs/reference/api/plugin.md +39 -0
  241. package/skills/void/docs/reference/api/resources.md +109 -0
  242. package/skills/void/docs/reference/api/rewrites.md +76 -0
  243. package/skills/void/docs/reference/api/types.md +92 -0
  244. package/skills/void/docs/reference/api.md +56 -1218
  245. package/skills/void/docs/reference/cli/auth.md +88 -0
  246. package/skills/void/docs/reference/cli/database.md +128 -0
  247. package/skills/void/docs/reference/cli/deploy.md +85 -0
  248. package/skills/void/docs/reference/cli/domains.md +41 -0
  249. package/skills/void/docs/reference/cli/email.md +129 -0
  250. package/skills/void/docs/reference/cli/generate.md +116 -0
  251. package/skills/void/docs/reference/cli/github.md +189 -0
  252. package/skills/void/docs/reference/cli/platform-config.md +92 -0
  253. package/skills/void/docs/reference/cli/platform-email.md +81 -0
  254. package/skills/void/docs/reference/cli/platform-installation.md +127 -0
  255. package/skills/void/docs/reference/cli/platform-operations.md +90 -0
  256. package/skills/void/docs/reference/cli/platform-users.md +89 -0
  257. package/skills/void/docs/reference/cli/platform-zero-trust.md +45 -0
  258. package/skills/void/docs/reference/cli/platform.md +70 -0
  259. package/skills/void/docs/reference/cli/project.md +214 -0
  260. package/skills/void/docs/reference/cli/secrets.md +76 -0
  261. package/skills/void/docs/reference/cli/setup.md +70 -0
  262. package/skills/void/docs/reference/cli.md +32 -1682
  263. package/skills/void/docs/reference/config.md +12 -18
  264. package/skills/void/docs/reference/resource-inference.md +3 -58
  265. package/skills/void/docs/reference/structure.md +14 -41
  266. package/dist/canonical-json-DuDiiUsQ.mjs +0 -13
  267. package/dist/client-Czz8o5jP.mjs +0 -2
  268. package/dist/gen-CNJ62MM7.mjs +0 -2
  269. package/dist/help-CmZzxUba.mjs +0 -2
  270. package/dist/login-CGcRKEoi.mjs +0 -2
  271. package/dist/migrate-CYfbKkXh.mjs +0 -2
  272. package/dist/plan-BEZ8VJW0.mjs +0 -256
  273. package/dist/plan-DpuOr14e.mjs +0 -2
  274. package/dist/prepare-Bm3iq-u4.mjs +0 -2
  275. package/dist/validate-EKmJWxmy.mjs +0 -2
  276. /package/dist/cli/{cf-compat.d.mts → cloudflare-operation-process.d.mts} +0 -0
@@ -0,0 +1,89 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ # Platform Users and Projects {#operator-users}
6
+
7
+ Use your administrator session for these commands. See [Platform Management](./platform.md#operator-commands) for platform selection, previews, and confirmation.
8
+
9
+ Find a user by login, email, or ID, then inspect their projects and usage:
10
+
11
+ ```sh
12
+ void platform user list [--search <text>] [--page <n>] [--limit <n>]
13
+ void platform user show <id>
14
+ ```
15
+
16
+ Use the same ID to change a plan, suspend or restore the account, or delete it:
17
+
18
+ ```sh
19
+ void platform user plan <id> <free|solo|pro|sponsored|custom>
20
+ void platform user suspend <id> [--reason <text>]
21
+ void platform user restore <id>
22
+ void platform user delete <id>
23
+ ```
24
+
25
+ Suspending a user blocks their applications. Deleting a user also deletes their project resources. A plan change updates resource limits while preserving any administrator suspension.
26
+
27
+ The last active administrator cannot be deleted or suspended. Both previews and
28
+ actual mutations enforce this rule, including in the browser admin UI. Allowed
29
+ administrator removals revoke administrator access before resource cleanup; if
30
+ cleanup fails, access stays revoked and the partial result reports it.
31
+
32
+ ## Projects {#operator-projects}
33
+
34
+ List projects across the platform, filter them by owner, or inspect one project's resources:
35
+
36
+ ```sh
37
+ void platform project list [--user <user-id>] [--search <text>] [--page <n>] [--limit <n>]
38
+ void platform project show <id>
39
+ void platform project normalize <id> [--plan | --yes]
40
+ void platform project delete <id>
41
+ void platform project owner <project-id> <user-id>
42
+ ```
43
+
44
+ Search matches a project's slug, ID, or owner's login. `show` includes resources, domains, the latest 10 deployments, and the latest 20 builds. `delete` removes the project and its resources.
45
+
46
+ If deployment reports that a project requires normalization, an operator can preview `normalize <id> --plan`, then apply it with `--yes`. It verifies the serving deployment and any recorded queue names before updating project records. It leaves traffic and Cloudflare resources in place and refuses changes while deployment or recovery is active. If a verified queue name differs from the expected delivery routing name, normalization refuses the change; reconcile that queue routing before retrying. If the serving deployment cannot be verified, investigate the reported route before retrying. Finish interrupted deployment recovery on the previous compatible platform runtime before upgrading a project whose active deployment is missing.
47
+
48
+ `owner` transfers a project to another registered user. Preview it with `--plan`; apply it interactively or with `--yes`. The preview reports active-work blockers and the account plan that will apply. The former owner becomes a project administrator, existing project-scoped CI deploy credentials are revoked, and usage already incurred remains with the former owner.
49
+
50
+ ## Signup Access {#operator-signup}
51
+
52
+ Inspect signup restrictions, open signup to everyone, or require an allowlist match:
53
+
54
+ ```sh
55
+ void platform signup show
56
+ void platform signup open
57
+ void platform signup restrict
58
+ ```
59
+
60
+ Add and remove GitHub or email entries by their type and pattern:
61
+
62
+ ```sh
63
+ void platform signup allow <github|email> <pattern> [--note <text>]
64
+ void platform signup disallow <github|email> <pattern>
65
+ void platform signup remove <github|email> <pattern>
66
+ ```
67
+
68
+ `remove` remains available as an alias for existing scripts. GitHub entries match a login. Email entries match an address or a domain pattern such as `*@example.com`, across sign-in providers. Quote wildcard patterns in your shell.
69
+
70
+ For an OIDC identity that has no verified email, grant access using its configured connection ID and stable provider subject:
71
+
72
+ ```sh
73
+ void platform signup allow identity <connection-id> <subject> [--note <text>]
74
+ void platform signup disallow identity <connection-id> <subject>
75
+ ```
76
+
77
+ Connection IDs are shown by `void platform config auth list`. Identity subjects match exactly and case-sensitively; wildcards, email inference, and account linking are not applied. The login method's domain or group restrictions must still pass, and a newly admitted account has the ordinary user role. Under invited/allowlisted signup, an empty allowlist blocks new accounts. Under company-approved signup, explicit grants admit people in addition to the company rules.
78
+
79
+ ## Invitations {#operator-invitations}
80
+
81
+ Invite people by email and track whether they have joined:
82
+
83
+ ```sh
84
+ void platform invitation list [--page <n>] [--limit <n>]
85
+ void platform invitation send <email[,email...]>
86
+ void platform invitation revoke <id>
87
+ ```
88
+
89
+ Send accepts up to 100 comma-separated addresses. Invitations grant signup access even if email delivery is unavailable or fails; delivery is reported separately. Share the platform's `/invite` page or `void connect '<platform URL>'` command yourself when no email is sent. Revoking a pending invitation removes its exact email grant. A broader domain entry can still allow that person to sign up.
@@ -0,0 +1,45 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ # Project Zero Trust {#operator-zero-trust}
6
+
7
+ Use your administrator session for these commands. See [Platform Management](./platform.md#operator-commands) for platform selection, previews, and confirmation.
8
+
9
+ Configure the installation-wide Cloudflare Access policy and project overrides:
10
+
11
+ ```sh
12
+ void platform zero-trust status [--check]
13
+ printf '%s' "$ACCESS_API_TOKEN" | void platform zero-trust configure \
14
+ --identity-providers <id[,id...]> \
15
+ --policies <id[,id...]> \
16
+ [--existing-projects <protected|public>] \
17
+ [--protect-new-projects] \
18
+ --token-stdin \
19
+ --yes
20
+ void platform zero-trust reconcile
21
+ void platform zero-trust disable
22
+
23
+ void platform zero-trust project-status <project-id>
24
+ void platform zero-trust project-protect <project-id>
25
+ void platform zero-trust project-public <project-id>
26
+ void platform zero-trust project-reconcile <project-id>
27
+ ```
28
+
29
+ Mutations support `--plan`, `--yes`, and `--timeout`; use `--plan` instead of
30
+ `--yes` to inspect this change without applying it. The Access management token
31
+ is accepted only on standard input. Zero Trust uses the Cloudflare account that
32
+ hosts the platform. Omit `--protect-new-projects` to make new projects public
33
+ by default. `--existing-projects` is required when you enable Zero Trust and
34
+ rejected once it is enabled; later configuration changes keep each project's
35
+ protection. `status` reports saved state; `--check` also compares it with
36
+ Cloudflare Access. If status remains `configuring` or `disabling`, run
37
+ `void platform zero-trust reconcile` to resume the saved operation. Protected
38
+ projects support up to 100 custom domains.
39
+
40
+ The token needs **Access: Apps and Policies Write** plus **Access:
41
+ Organizations, Identity Providers, and Groups Read**, scoped to the platform's
42
+ Cloudflare account. Select at least one Allow policy that matches people by
43
+ identity; Void rejects Bypass and Service Auth policies and rules that allow
44
+ Everyone or any service token. See [Project Zero Trust](../../guide/platform/administration/zero-trust.md)
45
+ for requirements and recovery.
@@ -0,0 +1,70 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ # Platform Management {#platform-management}
6
+
7
+ Void-managed projects deploy to an explicitly selected platform. Join one with [`void connect`](./auth.md#connect). Connections are stored per API origin, and credentials are scoped to that origin.
8
+
9
+ ## Connection commands {#connection-commands}
10
+
11
+ ```sh
12
+ void platform list
13
+ void platform use [id]
14
+ void platform status [id]
15
+ ```
16
+
17
+ `use` and `status` auto-select the only configured platform; with multiple platforms they show a picker interactively and require an id or URL in non-interactive use. A project with a recorded platform URL keeps using that platform when the global default changes.
18
+
19
+ ## Operator commands {#operator-commands}
20
+
21
+ Use `void platform` to administer the users and apps on your selected platform. Start with the [Platform Administration guide](../../guide/platform-administration.md) for signing in, giving people access, and investigating deployments.
22
+
23
+ Every command below accepts `--connection <registered-id-or-url>` to select a platform and `--json` for structured output. Without `--connection`, Void uses `VOID_API_URL` if set, then the active platform connection. Application project files do not change this selection.
24
+
25
+ ### Making Changes {#making-changes}
26
+
27
+ Commands that change users, projects, signup access, invitations, or Workers show a preview before asking for confirmation:
28
+
29
+ ```sh
30
+ void platform user plan <user-id> pro --plan
31
+ void platform user plan <user-id> pro --yes
32
+ ```
33
+
34
+ `--plan` validates the change and prints its effect without applying it. `--yes` applies the change without prompting, which is required in scripts. Use one or the other; they cannot be combined. These flags also apply to deployment cancellation and maintenance commands, but not to authentication commands.
35
+
36
+ Each preview and apply request allows five minutes. Set `--timeout <seconds>` to an integer from 1 to 3600 to change that limit. Read requests and individual log polls allow 30 seconds.
37
+
38
+ Void does not automatically retry changes. If a request loses its connection or times out, inspect the affected objects and `void platform system events` before repeating it. Partial results describe the work that completed and exit with a nonzero status.
39
+
40
+ ### Authentication {#operator-authentication}
41
+
42
+ Sign in, inspect your session, or sign out:
43
+
44
+ ```sh
45
+ void platform auth login [--provider <connection-id>] [--token-stdin]
46
+ void platform auth status
47
+ void platform auth logout
48
+ void platform auth token [--token-stdin]
49
+ ```
50
+
51
+ Browser login offers the platform's enabled methods; `--provider <connection-id>` selects one. Login saves a one-hour administrator session in your system keychain. Logout revokes that session and removes its local credential.
52
+
53
+ `auth token` prints your current operator token. With `--token-stdin`, it exchanges a full administrator API login session from standard input for a new operator token. `auth login --token-stdin` saves the exchanged token to the keychain instead of printing it.
54
+
55
+ For automation, supply `VOID_OPERATOR_TOKEN` with an explicit `VOID_API_URL` or `--connection`. Operator tokens are stored separately from application deployment credentials. The API checks your current administrator access on every request. See [Using Scripts](../../guide/platform/administration/operations.md#using-scripts) for an example.
56
+
57
+ ## Pagination and JSON {#pagination-and-json}
58
+
59
+ User, project, deployment, invitation, and event lists default to page `1` with 20 items. `--limit` accepts 1 to 100 for these lists. Their JSON responses include the page, limit, and total count.
60
+
61
+ With `--json`, results go to standard output and command errors go to standard error as JSON. Errors and partial failures exit with a nonzero status. An unhealthy `system health` result stays on standard output and also exits nonzero. Log following writes one JSON object per response, including each page and empty responses.
62
+
63
+ ## Platform Command Groups
64
+
65
+ - [Installation and maintenance](./platform-installation.md)
66
+ - [Plans and authentication configuration](./platform-config.md)
67
+ - [Users, projects, and signup access](./platform-users.md)
68
+ - [Project Zero Trust](./platform-zero-trust.md)
69
+ - [Deployments, builds, and system operations](./platform-operations.md)
70
+ - [Email administration](./platform-email.md)
@@ -0,0 +1,214 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ # Projects {#project-commands}
6
+
7
+ ## `void project status [name]` {#void-project-status-name}
8
+
9
+ Show deployments for the configured target.
10
+
11
+ - Void targets show recent hosted deployments; `[name]` looks up a project by slug and otherwise the linked project is used.
12
+ - Cloudflare targets list Worker Versions, identify the active version, and show the recorded migration count. A project name is not accepted because the Worker name comes from `cloudflare.name` in `void.config.ts`.
13
+
14
+ ## `void project link [name]` {#void-project-link-name}
15
+
16
+ Link current directory to an existing hosted Void project by slug, or select interactively if omitted. State is stored in `.void/project.json`. Direct Cloudflare apps use `cloudflare.name` in `void.config.ts` and do not need linking.
17
+
18
+ ## `void project list` {#void-project-list}
19
+
20
+ List all accessible hosted projects (slug, role, type, URL). Shared projects are included and the role column distinguishes them from projects you own. For a saved Cloudflare target, this displays the current Worker's versions instead because there is no Void project registry.
21
+
22
+ ## `void project team` {#void-project-team}
23
+
24
+ Manage access to a project hosted on a Void platform:
25
+
26
+ ```sh
27
+ void project team list [--project <slug>]
28
+ void project team invite <email> --role <reader|collaborator|admin> [--project <slug>]
29
+ void project team invitations [--project <slug>]
30
+ void project team role <user-id> <reader|collaborator|admin> [--project <slug>]
31
+ void project team remove <user-id> [--project <slug>]
32
+ void project team revoke <invitation-id> [--project <slug>]
33
+ void project team leave [--project <slug>]
34
+ void project team pending
35
+ void project team accept <invitation-id>
36
+ void project team decline <invitation-id>
37
+ ```
38
+
39
+ Project-scoped commands use `--project`, then `VOID_PROJECT`, then the linked project. Invitations can target only an email address already registered to a user on that platform; they do not create accounts or grant signup access. Only the invited account can accept or decline its invitation.
40
+
41
+ Readers can view the project but cannot deploy. Collaborators can deploy and manage deploy prerequisites. Project administrators can additionally manage domains, email destinations, GitHub configuration, and the project team. The owner alone can delete the project. See [Project Collaboration](../../guide/project-collaboration.md) for the full role boundaries.
42
+
43
+ Project-scoped team management commands are not available for projects deployed
44
+ directly to Cloudflare. The account-scoped `pending`, `accept`, and `decline`
45
+ commands use the active connection selected by `void connect <url>`, regardless
46
+ of the current project's link or deploy target. `VOID_API_URL` takes precedence;
47
+ an unscoped `VOID_TOKEN` selects Void Cloud. These commands display their
48
+ platform, and accepting an invitation leaves directory links intact. To link
49
+ the invited application, run `void project link` in an unlinked checkout of
50
+ that application.
51
+
52
+ ## `void project zero-trust` {#void-project-zero-trust}
53
+
54
+ Inspect or override protection for a project on a Void platform:
55
+
56
+ ```sh
57
+ void project zero-trust status [--project <slug>]
58
+ void project zero-trust protect [--project <slug>]
59
+ void project zero-trust public [--project <slug>]
60
+ void project zero-trust reconcile [--project <slug>]
61
+ ```
62
+
63
+ Project selection follows `--project`, then `VOID_PROJECT`, then the linked
64
+ project.
65
+
66
+ Readers can inspect the state. The owner or a project administrator can protect
67
+ the project, make it public, or repair drift. `public` does not change the
68
+ platform default for future projects. Deploys and rollbacks wait until a
69
+ protection change is finished; if one is refused, the owner or a project
70
+ administrator can run `void project zero-trust reconcile` before you retry.
71
+ These commands do not apply to direct Cloudflare deployments.
72
+
73
+ ## `void project token <create|list|renew|revoke>` {#void-project-token-create-list-renew-revoke}
74
+
75
+ Manage revocable `aud: deploy` credentials for one Void platform project. The
76
+ credential can only call the endpoints used by `void deploy`; it cannot access
77
+ operator, account, secret-writing, project-deletion, or other projects' routes.
78
+
79
+ ```sh
80
+ void project token create --name github-actions --expires-in 30
81
+ void project token list
82
+ void project token renew <credential-id> --expires-in 30
83
+ void project token revoke <credential-id>
84
+ ```
85
+
86
+ Pass `--project <name>` outside a linked project. Expiry is bounded to 1–90
87
+ days. Create and renew display the bearer value once; replace the stored secret
88
+ immediately after renewal because the previous credential is revoked in the
89
+ same operation. Project deletion and owner suspension also stop its use. Login
90
+ method disablement does not revoke these independent deploy credentials.
91
+
92
+ Store the printed `VOID_TOKEN` and `VOID_API_URL` in the CI secret manager. The
93
+ Access pair passes the perimeter; the scoped Void credential authorizes only
94
+ this project's deploy workflow. When prerendering or remote proxy bindings are
95
+ used on an Access-protected platform, store `VOID_ACCESS_CREDENTIALS` as an
96
+ origin-keyed JSON secret containing both exact HTTPS origins, even if both use
97
+ the same service-token pair:
98
+
99
+ ```json
100
+ {
101
+ "https://void-company-api.example.workers.dev": {
102
+ "CF_ACCESS_CLIENT_ID": "<service-token client ID>",
103
+ "CF_ACCESS_CLIENT_SECRET": "<service-token client secret>"
104
+ },
105
+ "https://void-company-proxy.example.workers.dev": {
106
+ "CF_ACCESS_CLIENT_ID": "<service-token client ID>",
107
+ "CF_ACCESS_CLIENT_SECRET": "<service-token client secret>"
108
+ }
109
+ }
110
+ ```
111
+
112
+ `VOID_ACCESS_ORIGIN` scopes a pair to one origin, so selecting only the API
113
+ origin is insufficient for a workflow that calls the proxy. Use distinct pairs
114
+ in the two entries when the Access policies require them.
115
+
116
+ ## `void project logs` {#void-project-logs}
117
+
118
+ ```
119
+ void project logs [--level <level>] [--filter <text>] [--range <duration>] [--deployment <id>]
120
+ ```
121
+
122
+ Show runtime logs from the deployed target. Hosted Void targets query retained log history. Cloudflare targets open a live tail for the Worker named in `void.config.ts`; they do not provide historical log storage.
123
+
124
+ | Flag | Purpose | Default |
125
+ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
126
+ | `--range <duration>` | How far back to look. Format: `<number><unit>` (m/h/d). Max 7d. | `1h` |
127
+ | `--level <level>` | Filter by log level. One of `error`, `warn`, `info`, `log`, `debug`, `all`. `error` also includes uncaught exceptions, non-`ok` outcomes, and any 5xx response — even when the worker neither threw nor logged. | `all` |
128
+ | `--filter <text>` | Case-insensitive **substring** match against log message text and exception name/message — not a level filter. Shows the full request entry on any hit. | none |
129
+ | `--deployment <id>` | Filter logs to a specific deployment ID. | none |
130
+
131
+ Output shows one line per request (`HH:MM:SS METHOD URL STATUS`) with indented console log and exception lines beneath. Errors and exceptions are colored red, warnings yellow.
132
+
133
+ Examples:
134
+
135
+ ```
136
+ void project logs --level error --range 12h
137
+ void project logs --level error --filter websocket
138
+ ```
139
+
140
+ Logs include top-level `console.*` calls and uncaught errors captured by Cloudflare Tail. If you catch an error and save it only to your database, it won't appear here. Also log it with `console.error()` or `logger.error()` from `void/log`.
141
+
142
+ For errors that never reach your Worker, such as edge routing errors or static site requests, use `void project requests --status 5xx`.
143
+
144
+ On a direct Cloudflare target, `--filter` becomes Cloudflare's live search, `--deployment` selects a Worker Version, and `--level error` selects error invocations. Other individual console levels cannot be filtered, and `--range` does not select history. `void project requests` is hosted-only.
145
+
146
+ ## `void project requests` {#void-project-requests}
147
+
148
+ ```
149
+ void project requests [--status <filter>] [--range <duration>]
150
+ ```
151
+
152
+ Show request traffic for the linked project, including static assets and edge errors that do not appear in Worker logs.
153
+
154
+ | Flag | Purpose | Default |
155
+ | -------------------- | --------------------------------------------------------------------------------------------- | ------- |
156
+ | `--status <filter>` | Filter by status: a class (`2xx`, `3xx`, `4xx`, `5xx`) or an exact 3-digit code (e.g. `500`). | none |
157
+ | `--range <duration>` | How far back to look. Format: `<number><unit>` (m/h/d). Max 7d. | `1h` |
158
+
159
+ Output shows one line per request (`HH:MM:SS METHOD STATUS TYPE DURATION`). 5xx are colored red, 4xx yellow. Note: request paths are not recorded, so this view shows status and type rather than URLs — use `void project logs` for per-URL, per-log detail on requests that do reach your worker.
160
+
161
+ Examples:
162
+
163
+ ```
164
+ void project requests --status 5xx
165
+ void project requests --range 24h
166
+ ```
167
+
168
+ ## `void project rollback [deployId]` {#void-project-rollback-deployid}
169
+
170
+ ```
171
+ void project rollback [deployId]
172
+ ```
173
+
174
+ Roll back to a previous deployment or Worker Version.
175
+
176
+ - If `[deployId]` is omitted, shows an interactive select menu of retained deployments
177
+ - If the target deployment has fewer applied migrations than the current one, a warning is shown listing the migration diff before confirmation
178
+
179
+ On a Void platform, you can select a retained deployment. On Cloudflare, use a complete Worker Version ID or an unambiguous prefix. Void activates that version at 100%. When both versions have complete trigger snapshots, it also restores the selected version's schedules, queues, workflows, routes, and custom domains. Otherwise, rollback keeps the current triggers and restores the code, including versions originally deployed outside Void.
180
+
181
+ Rollback doesn't reverse database migrations. If older code may run against a newer schema, or migration metadata is missing, Void explains the risk and asks for confirmation.
182
+
183
+ ## `void project cancel [deployId]` {#void-project-cancel-deployid}
184
+
185
+ ```
186
+ void project cancel [deployId]
187
+ ```
188
+
189
+ Cancel an active deployment.
190
+
191
+ - If `[deployId]` is omitted, shows an interactive select menu of active deployments for the linked project
192
+ - If `[deployId]` is provided, cancels that deployment directly
193
+
194
+ This command is hosted-only. Direct Cloudflare deploys are local operations and do not expose a remote build to cancel.
195
+
196
+ ## `void project delete [name]` {#void-project-delete-name}
197
+
198
+ Permanently delete a hosted Void project and all its resources (databases, KV namespaces, R2 buckets, deployments). Requires typing the project slug to confirm.
199
+
200
+ If `[name]` is omitted, uses the linked project.
201
+
202
+ For direct Cloudflare targets this command refuses to run. Inferred resources can be shared, so Void never performs automatic teardown; verify ownership and remove resources explicitly with Cloudflare tooling.
203
+
204
+ ## `void project purge-cache` {#void-project-purge-cache}
205
+
206
+ ```
207
+ void project purge-cache [--project <name>]
208
+ ```
209
+
210
+ Purge all cached pages for the linked project. The edge cache will clear within seconds.
211
+
212
+ If `--project` is provided, purges that project's cache instead of the linked project.
213
+
214
+ This command is currently hosted-only. Direct Cloudflare cache purge fails closed with guidance.
@@ -0,0 +1,76 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ # Secrets and Environment {#secrets}
6
+
7
+ ## `void secret list` {#void-secret-list}
8
+
9
+ ```
10
+ void secret list [--project <name>]
11
+ ```
12
+
13
+ List production secret names for the saved target. Secret values are never printed. Direct Cloudflare targets query the Worker named in `void.config.ts`; `--project` is hosted-only.
14
+
15
+ ## `void secret put` {#void-secret-put}
16
+
17
+ On hosted projects, secret writes and deletes return a retryable conflict while a deployment or rollback is in progress. Wait for that operation to finish and retry; the rejected operation leaves the stored secret unchanged.
18
+
19
+ ```
20
+ void secret put <name> [--project <name>]
21
+ void secret put <name=value> [--project <name>]
22
+ ```
23
+
24
+ Value input modes:
25
+
26
+ - inline: `void secret put API_KEY=abcd`
27
+ - prompt (TTY): `void secret put API_KEY` (masked input)
28
+ - stdin: `echo -n "abcd" | void secret put API_KEY`
29
+
30
+ On a direct Cloudflare target, the value is sent to Cloudflare over stdin and stored as an encrypted Worker secret.
31
+
32
+ ## `void secret sync` {#void-secret-sync}
33
+
34
+ ```
35
+ void secret sync <file> [--project <name>]
36
+ ```
37
+
38
+ Upload production server values from a dotenv file stored outside your project. Include only keys declared in `env.ts`; leave out local development credentials and public `VITE_*` values.
39
+
40
+ ```sh
41
+ void secret sync /secure/path/production.env
42
+ ```
43
+
44
+ Existing remote secrets absent from the file are kept. Every entry must be a server key declared in `env.ts`, and its value must pass validation.
45
+
46
+ ## `void secret delete` {#void-secret-delete}
47
+
48
+ ```
49
+ void secret delete <name> [--project <name>]
50
+ ```
51
+
52
+ Secret commands use the platform saved in `.void/project.json`. Hosted project resolution follows the same order as deploy (`--project`, env var, linked project). Direct Cloudflare targets reject `--project` and use the pinned root Cloudflare config.
53
+
54
+ ## Env Schema {#env-schema}
55
+
56
+ ### `void env check` {#void-env-check}
57
+
58
+ ```
59
+ void env check [--remote]
60
+ ```
61
+
62
+ Without `--remote`, validate `.env` plus the shell for local development. With `--remote`, validate build-shell client values and the remote server-secret names. Exits non-zero if a required key is missing or a readable value is invalid.
63
+
64
+ ### `void env types` {#void-env-types}
65
+
66
+ ```
67
+ void env types
68
+ ```
69
+
70
+ Regenerate `.void/env.d.ts` from `env.ts`. Normally happens automatically on dev server start and HMR; use this command after a fresh clone or to refresh stale types in non-dev contexts.
71
+
72
+ ::: tip Deploy validation
73
+ `void deploy` runs the same schema validation automatically (with remote secrets) and refuses to upload if any required key is missing — no need to call `env check` separately when deploying.
74
+ :::
75
+
76
+ See [Environment Variables](../../guide/env-vars.md) for the full guide.
@@ -0,0 +1,70 @@
1
+ ---
2
+ outline: deep
3
+ ---
4
+
5
+ # Project Setup {#setup}
6
+
7
+ ## `void info` {#void-info}
8
+
9
+ ```sh
10
+ void info
11
+ void info --json
12
+ ```
13
+
14
+ Shows each Durable State and WebSocket definition's source file, inferred or explicit name, Worker class, and binding. WebSocket entries also include their route in JSON output. It runs locally without authentication, network requests, or file generation.
15
+
16
+ Before moving a deployed definition, copy the suggested `name` into `defineDurableState()`, `defineRoom()`, or `defineWebSocket()`. Keep that name after moving the file to preserve the resource. See [Durable State](../../guide/durable-state.md#rename-a-file-while-keeping-its-state) and [WebSockets](../../guide/websockets.md#move-a-route-while-keeping-its-state) for migration flows, including WebSocket parameter renames.
17
+
18
+ Resources recorded in `void.lock.json` without a matching definition appear separately. Adopt a suggested name only after identifying the resource you moved. If Void cannot suggest a name, restore its original source and inspect it before moving it again.
19
+
20
+ `--json` returns `resources` and `recordedResources`. Current entries contain `file`, `definition`, `name`, `nameSource` (`inferred` or `explicit`), `className`, `bindingName`, and an optional `route`. Recorded entries contain `className` and `bindingName`, with `name` and `definition` when a matching name is available.
21
+
22
+ ## `void migrate` {#void-migrate}
23
+
24
+ `void migrate` converts legacy `void.json` and root `wrangler.jsonc` or `wrangler.json` files into `void.config.ts`. It also accepts one root `wrangler*.json(c)` file referenced by a supported framework adapter. Void saves backups in `.void/config-migration/`, records resource IDs in `void.lock.json`, and updates supported adapters to use its generated Cloudflare config.
25
+
26
+ `.void-wrangler.jsonc` is generated for Cloudflare tooling and belongs in `.gitignore`; migration adds the entry. Review and commit `void.config.ts`, `void.lock.json`, and `.gitignore`. `void init` and `void deploy` migrate legacy files automatically. If the project has conflicting or multiple Cloudflare configs, resolve them first. The project's installed `void` package must match the CLI version before Cloudflare deployment.
27
+
28
+ ## `void init` {#void-init}
29
+
30
+ ```sh
31
+ void init [--tsconfig] [--github] [--agents] [--git | --no-git]
32
+ ```
33
+
34
+ Set up a new or existing Void project. In an empty directory, choose Vite+ or Vite, a framework, and a D1, PostgreSQL, MySQL, or Static Pages starter.
35
+
36
+ In an existing app, Void adds missing dependencies and scripts and updates the Vite config. If it cannot edit your config, it prints the snippet to add.
37
+
38
+ The wizard also sets up TypeScript, agent instructions, environment declarations, and a deployment target. Choose Cloudflare, a Void platform, or skip deployment setup. If you skip sign-in, run `void connect` when you're ready. See [Quick Start](../../guide/quickstart.md).
39
+
40
+ Outside an existing repository or workspace package, Void offers to initialize Git. Use `--git` to initialize without a prompt or `--no-git` to skip it. CI requires `--git` to initialize. Workspace packages do not accept these flags.
41
+
42
+ Run selected setup steps with:
43
+
44
+ | Flag | Purpose |
45
+ | ------------ | -------------------------------------------------------------- |
46
+ | `--tsconfig` | Update TypeScript configuration, preserving existing settings. |
47
+ | `--agents` | Set up agent instructions and skills for detected agents. |
48
+ | `--github` | Create the GitHub Actions deployment workflow. |
49
+
50
+ These flags can be combined and skip the other wizard steps. Add `--git` if you also want Git initialization.
51
+
52
+ For Cloudflare workflows, add a `CLOUDFLARE_API_TOKEN` repository secret. PostgreSQL and MySQL apps also need `DATABASE_URL`.
53
+
54
+ Void platforms with GitHub Actions support use short-lived OIDC credentials. Authorize the repository with `void github connect <project> --repo <owner/repo> --executor github_actions`. Core self-hosted platforms do not support that integration. See [Deployment](../../guide/deployment.md#github).
55
+
56
+ ## `void prepare` {#void-prepare}
57
+
58
+ ```
59
+ void prepare
60
+ ```
61
+
62
+ Generates Void’s types and TypeScript configuration without starting the dev server or building the app. Run it after a fresh clone or before typechecking in CI.
63
+
64
+ ## Agent {#agent}
65
+
66
+ ### `void init --agents` {#void-init-agents}
67
+
68
+ Adds Void instructions to `AGENTS.md` and links skills for detected coding agents. Existing instructions outside the Void block are preserved.
69
+
70
+ If no supported agent is detected, `AGENTS.md` links to the bundled docs. See [Coding Agents](../../integrations/agents.md).