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.
- package/README.md +5 -1
- package/dist/{account-cmd-CjyxcGkM.mjs → account-cmd-C84Ee8cO.mjs} +4 -4
- package/dist/{scan-ClYmX3sa.mjs → application-analysis-BVsVqc11.mjs} +135 -18
- package/dist/application-routing-B7QEjqSR.mjs +27 -0
- package/dist/{auth-CZuiVsFh.mjs → auth-CCjt0hcq.mjs} +1 -1
- package/dist/{auth-DLNN0D3Z.mjs → auth-CSkdO2Bb.mjs} +4 -47
- package/dist/{auth-link-BLO4ptzo.mjs → auth-link-CioEg6uY.mjs} +4 -4
- package/dist/{auth-router-ZUg9MF_U.mjs → auth-router-BsR981d4.mjs} +4 -4
- package/dist/{better-auth-shared-rsBGBvWJ.mjs → better-auth-shared-hy6RPh9W.mjs} +13 -2
- package/dist/{build-cmd-BxR5FROK.mjs → build-cmd-LzvNJORH.mjs} +17 -5
- package/dist/{cache-D0sWhgKI.mjs → cache-C4MvnrMH.mjs} +2 -2
- package/dist/{cancel-deploy-D4NUqFbi.mjs → cancel-deploy-abUxpP2n.mjs} +2 -2
- package/dist/{cf-build-output-BJ6yGEIS.mjs → cf-build-output-BPqOT964.mjs} +2 -1
- package/dist/cf-build-output-_0HNWysu.mjs +2 -0
- package/dist/cli/cli.mjs +80 -455
- package/dist/cli/{cf-compat.mjs → cloudflare-operation-process.mjs} +442 -421
- package/dist/cli/env-schema-probe.d.mts +2 -1
- package/dist/cli/env-schema-probe.mjs +3 -3
- package/dist/client-Cu7jWiF1.mjs +2 -0
- package/dist/{client-BTZ3XkrB.mjs → client-RV8NVeB8.mjs} +140 -21
- package/dist/{cloudflare-auth-DQkqoMYa.mjs → cloudflare-auth-Qdc7tw8F.mjs} +41 -38
- package/dist/{cloudflare-cmd-BKlfGHAy.mjs → cloudflare-cmd-BcrVyTmJ.mjs} +5 -5
- package/dist/cloudflare-config-Bktvwtpf.mjs +182 -0
- package/dist/{cloudflare-connect-Ctmrw579.mjs → cloudflare-connect-B8uPZ4nx.mjs} +3 -3
- package/dist/{cloudflare-operations-BT6OWFBk.mjs → cloudflare-operations-AiWashgg.mjs} +1 -1
- package/dist/{cloudflare-operations-B9tzgjmf.mjs → cloudflare-operations-fxHb-byx.mjs} +116 -172
- package/dist/{preset-UHj9ARyP.mjs → cloudflare-process-B-wekeR6.mjs} +93 -6
- package/dist/{config-VavjpDnp.d.mts → config-BMHb8RCj.d.mts} +1 -0
- package/dist/config-C_XRIPx2.mjs +89 -0
- package/dist/config-entry.d.mts +1 -1
- package/dist/{connect-Dg-WkW-C.mjs → connect-Bd4kJd9U.mjs} +5 -5
- package/dist/{create-project-DdoqwFLF.mjs → create-project-Boczwj5r.mjs} +1 -1
- package/dist/{create-project-l9J7pbtm.mjs → create-project-bMf6ffLZ.mjs} +2 -2
- package/dist/{db-gp2sCXyN.mjs → db-8uG64XLl.mjs} +21 -21
- package/dist/{delete-TTedbH6B.mjs → delete-NvbiyeJf.mjs} +2 -2
- package/dist/{deploy-CH-o2CaZ.mjs → deploy-DzAIwqNU.mjs} +908 -582
- package/dist/{deploy-B19L2Bra.mjs → deploy-bjXdFCtn.mjs} +1 -1
- package/dist/{domain-JRF59P_r.mjs → domain-y5Tvydvo.mjs} +3 -3
- package/dist/{email-Bo6G9LOZ.mjs → email-B3umsW75.mjs} +13 -28
- package/dist/{env-BYOrWQnv.mjs → env-BS6qYHDb.mjs} +4 -4
- package/dist/{env-public-BxU_0yTL.d.mts → env-public-BX_r8HR6.d.mts} +1 -1
- package/dist/{env-validation-BB4GkLxn.mjs → env-validation-BPn7vk-V.mjs} +18 -71
- package/dist/{env-validation-BXge7uyK.mjs → env-validation-DbTg7-ar.mjs} +1 -1
- package/dist/{fetch-CXDChK7B.mjs → fetch-BIZJh7vR.mjs} +2 -2
- package/dist/{fetch-stream-AOByI7Ki.mjs → fetch-stream-IvCYKyQL.mjs} +24 -4
- package/dist/{gen-sCtlCOdA.mjs → gen-B580--vC.mjs} +2 -2
- package/dist/gen-BVaUUumi.mjs +2 -0
- package/dist/{github-cmd-0-7PexDq.mjs → github-cmd-v45BdfKX.mjs} +2 -2
- package/dist/{handler-HEcZsaij.d.mts → handler-CZ4nAylQ.d.mts} +1 -1
- package/dist/help-DofyZuY7.mjs +2 -0
- package/dist/{help-GKtwl07I.mjs → help-daGKjXGk.mjs} +229 -747
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +288 -1502
- package/dist/info-B97bTX9N.mjs +113 -0
- package/dist/{init-FZx3Elvz.mjs → init-Bvy7zrBo.mjs} +46 -15
- package/dist/limits-Bq5LG8Id.d.mts +27 -0
- package/dist/limits-Cjuk2VPm.mjs +68 -0
- package/dist/{link-BrQfb_CU.mjs → link-CDqqCjFl.mjs} +3 -3
- package/dist/{list-D44jmIAM.mjs → list-CZj0dzKY.mjs} +3 -3
- package/dist/{live-CKJlvlNp.d.mts → live-Chw1eIMv.d.mts} +1 -1
- package/dist/{local-d1-Bg9OzEEO.mjs → local-d1-2CMnpuW_.mjs} +2 -2
- package/dist/login-DYt_An22.mjs +2 -0
- package/dist/{login-CAsAsQ-_.mjs → login-UZKFM_u7.mjs} +3 -3
- package/dist/{logs-BjKvFnVM.mjs → logs-CUZ6t9t3.mjs} +3 -3
- package/dist/migrate-8_2u55MD.mjs +2 -0
- package/dist/{migrate-BPITvDJN.mjs → migrate-DHul7PRV.mjs} +2 -1
- package/dist/{node-Dt7z256D.mjs → node-BkyRWRx8.mjs} +1 -1
- package/dist/operator-args-CLgKGlwU.mjs +690 -0
- package/dist/{operator-cmd-BK5CCiT9.mjs → operator-cmd-DBA6dl0m.mjs} +68 -22
- package/dist/pages/client.d.mts +34 -2
- package/dist/pages/client.mjs +59 -3
- package/dist/pages/index.d.mts +1 -1
- package/dist/pages/index.mjs +1 -1
- package/dist/pages/islands-plugin.mjs +1 -1
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +2 -308
- package/dist/{parse-filename-DioPHiR9.mjs → parse-filename-CUbj-1MP.mjs} +35 -1
- package/dist/plan-D1Q5rf-r.mjs +2 -0
- package/dist/plan-NPpwZ_kc.mjs +58 -0
- package/dist/platform-args-BJdRtlLq.mjs +506 -0
- package/dist/platform-args-D3RXyR6h.mjs +2 -0
- package/dist/{platform-auth-config-BlN8xTdD.mjs → platform-auth-config-B56E9YP1.mjs} +3 -3
- package/dist/{platform-auth-protection-7d5aV2Jg.mjs → platform-auth-protection-BDWO_aER.mjs} +2 -2
- package/dist/{platform-auth-recovery-Dxij8ZbR.mjs → platform-auth-recovery-1gg4CSRe.mjs} +3 -3
- package/dist/{platform-cmd-E0FuL212.mjs → platform-cmd-Bt-1w6pY.mjs} +1 -1
- package/dist/{platform-cmd-B3hwKrFK.mjs → platform-cmd-DMcQStSc.mjs} +24 -3
- package/dist/{platform-domain-D6Xcy9ZX.mjs → platform-domain-BNkcz0OB.mjs} +2 -2
- package/dist/{platform-lifecycle-k0E0xoxx.mjs → platform-lifecycle-9OyBALhH.mjs} +327 -215
- package/dist/{platform-lifecycle-DMh_qrry.mjs → platform-lifecycle-BE6C_jxh.mjs} +1 -1
- package/dist/{platform-management-Brz_BDiT.mjs → platform-management-CjwLVQwN.mjs} +6 -3
- package/dist/{platform-management-DOtss0BN.mjs → platform-management-CnyTdcWX.mjs} +1 -1
- package/dist/platform-plans-config-BNGKGr4P.mjs +359 -0
- package/dist/{platform-recovery-BvtcXON5.mjs → platform-recovery-D6KSpuFm.mjs} +2 -2
- package/dist/{plugin-inference-BMfKRSqE.mjs → plugin-inference-CXWnn79A.mjs} +174 -64
- package/dist/{prepare-C-6YZyyg.mjs → prepare-B5Mkic5u.mjs} +1 -1
- package/dist/{prepare-CRhJbVrG.mjs → prepare-DOsL0CC9.mjs} +4 -20
- package/dist/prepare-cgvDMtSb.mjs +2 -0
- package/dist/{project-cmd-BZLCqOqw.mjs → project-cmd-CNzrqvBv.mjs} +16 -16
- package/dist/{project-team-BvgM0WoX.mjs → project-team-DQOWPfQT.mjs} +2 -2
- package/dist/{project-token-l5DqK6Az.mjs → project-token-CTDYU0Cc.mjs} +2 -2
- package/dist/{project-zero-trust-v6Mvpp8y.mjs → project-zero-trust-BNAkW-_0.mjs} +2 -2
- package/dist/{protocol-BBa6cstI.d.mts → protocol-CjF_iI9X.d.mts} +2 -2
- package/dist/protocol-U7bfjHmA.mjs +331 -0
- package/dist/{provision-Fr9pRqce.mjs → provision-C4ORE7G7.mjs} +1 -1
- package/dist/{provision-C4IGqkBf.mjs → provision-CJFgTZY8.mjs} +89 -198
- package/dist/{requests-DN-BbNiM.mjs → requests-MhxYnau8.mjs} +2 -2
- package/dist/resource-name-C7LVpcRm.mjs +11 -0
- package/dist/{rollback-D7rzSaZM.mjs → rollback-CJ6iSDoU.mjs} +3 -3
- package/dist/route-url-CG7U-cRN.mjs +15 -0
- package/dist/{runner-B8wXwWlo.mjs → runner-CXA9Fh8h.mjs} +1 -1
- package/dist/{runner-p-dMs2UN.mjs → runner-Ol0TNjk6.mjs} +2 -2
- package/dist/runtime/ai.d.mts +12 -8
- package/dist/runtime/ai.mjs +84 -17
- package/dist/runtime/better-auth-mysql.mjs +1 -1
- package/dist/runtime/better-auth-pg.mjs +1 -1
- package/dist/runtime/better-auth.mjs +1 -1
- package/dist/runtime/client-react.mjs +2 -2
- package/dist/runtime/client-solid.mjs +2 -2
- package/dist/runtime/client-svelte.mjs +2 -2
- package/dist/runtime/client-vue.mjs +2 -2
- package/dist/runtime/client.mjs +2 -2
- package/dist/runtime/durable.d.mts +3 -1
- package/dist/runtime/durable.mjs +4 -1
- package/dist/runtime/email/testing.mjs +1 -1
- package/dist/runtime/env-public.d.mts +1 -1
- package/dist/runtime/fetch-stream.mjs +1 -1
- package/dist/runtime/fetch.mjs +1 -1
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/kv.mjs +0 -1
- package/dist/runtime/limits.d.mts +2 -0
- package/dist/runtime/limits.mjs +2 -0
- package/dist/runtime/live-client.d.mts +1 -1
- package/dist/runtime/live-server.mjs +25 -16
- package/dist/runtime/live.d.mts +1 -1
- package/dist/runtime/migration-handler.mjs +62 -42
- package/dist/runtime/route-url.d.mts +4 -0
- package/dist/runtime/route-url.mjs +2 -0
- package/dist/runtime/routing.d.mts +180 -0
- package/dist/runtime/routing.mjs +1082 -0
- package/dist/runtime/sandbox-container.d.mts +1 -1
- package/dist/runtime/sandbox-container.mjs +1 -1
- package/dist/runtime/sandbox.d.mts +3 -3
- package/dist/runtime/sandbox.mjs +75 -45
- package/dist/runtime/sse.mjs +1 -1
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +4 -2
- package/dist/runtime/ws-server.mjs +27 -2
- package/dist/runtime/ws.d.mts +2 -2
- package/dist/runtime/ws.mjs +8 -6
- package/dist/{sandbox-qpNBT8a3.d.mts → sandbox-XZAqzFlG.d.mts} +11 -8
- package/dist/{sandbox-container-DdNEBfCc.d.mts → sandbox-container-Bo0eiFKz.d.mts} +2 -1
- package/dist/{sandbox-container-4fdqLnyb.mjs → sandbox-container-C6ItmVuN.mjs} +4 -2
- package/dist/{scan-4tfN-PSn.mjs → scan-C7okrLyM.mjs} +4 -35
- package/dist/{secret-BOtOl_cb.mjs → secret-Dli5fP0B.mjs} +4 -4
- package/dist/{sse-BaC1jXko.mjs → sse-CQNaDFFV.mjs} +6 -3
- package/dist/validate-Dq_L3s0S.mjs +2 -0
- package/dist/{validate-CIUwFpjB.mjs → validate-ctOrgiS3.mjs} +2 -1
- package/dist/{wrangler-DQF1vKyf.mjs → wrangler-7K-bW_DL.mjs} +8 -239
- package/dist/{ws-BoY7vQML.d.mts → ws-CL1w7GXU.d.mts} +13 -2
- package/package.json +15 -8
- package/skills/migrate-vite-cloudflare-to-void/SKILL.md +34 -157
- package/skills/void/SKILL.md +50 -135
- package/skills/void/docs/guide/ai.md +94 -84
- package/skills/void/docs/guide/app-types.md +3 -32
- package/skills/void/docs/guide/auth.md +12 -116
- package/skills/void/docs/guide/database/d1.md +9 -54
- package/skills/void/docs/guide/database/mysql.md +1 -1
- package/skills/void/docs/guide/database/postgresql.md +5 -26
- package/skills/void/docs/guide/database.md +23 -75
- package/skills/void/docs/guide/deployment.md +27 -113
- package/skills/void/docs/guide/durable-state.md +43 -18
- package/skills/void/docs/guide/edge/headers.md +3 -47
- package/skills/void/docs/guide/edge/prerendering.md +5 -20
- package/skills/void/docs/guide/edge/redirects.md +11 -64
- package/skills/void/docs/guide/edge/revalidation.md +5 -18
- package/skills/void/docs/guide/edge/rewrites.md +56 -284
- package/skills/void/docs/guide/edge/static-assets.md +22 -72
- package/skills/void/docs/guide/email/domains.md +112 -0
- package/skills/void/docs/guide/email/receiving.md +139 -0
- package/skills/void/docs/guide/email/sending.md +231 -0
- package/skills/void/docs/guide/email.md +13 -619
- package/skills/void/docs/guide/env-migration.md +11 -11
- package/skills/void/docs/guide/env-vars.md +9 -29
- package/skills/void/docs/guide/index.md +0 -15
- package/skills/void/docs/guide/jobs.md +3 -18
- package/skills/void/docs/guide/kv.md +5 -11
- package/skills/void/docs/guide/live.md +5 -56
- package/skills/void/docs/guide/pages-routing/actions-and-forms.md +78 -125
- package/skills/void/docs/guide/pages-routing/head.md +10 -10
- package/skills/void/docs/guide/pages-routing/islands.md +6 -36
- package/skills/void/docs/guide/pages-routing/layouts.md +6 -128
- package/skills/void/docs/guide/pages-routing/loaders.md +3 -19
- package/skills/void/docs/guide/pages-routing/markdown.md +13 -171
- package/skills/void/docs/guide/pages-routing/overview.md +7 -17
- package/skills/void/docs/guide/pages-routing/view-transitions.md +1 -1
- package/skills/void/docs/guide/platform/administration/access.md +1 -4
- package/skills/void/docs/guide/platform/administration/email.md +35 -8
- package/skills/void/docs/guide/platform/administration/operations.md +26 -4
- package/skills/void/docs/guide/platform/administration/plans.md +126 -0
- package/skills/void/docs/guide/platform/administration/projects.md +5 -2
- package/skills/void/docs/guide/platform/administration/zero-trust.md +23 -152
- package/skills/void/docs/guide/platform/development/runtime.md +3 -13
- package/skills/void/docs/guide/platform/development/schema-ci.md +0 -58
- package/skills/void/docs/guide/platform/installation/credentials.md +6 -4
- package/skills/void/docs/guide/platform/installation/domains.md +30 -2
- package/skills/void/docs/guide/platform/installation/first-deployment.md +2 -0
- package/skills/void/docs/guide/platform/installation/maintenance.md +3 -1
- package/skills/void/docs/guide/platform/installation/prerequisites.md +20 -15
- package/skills/void/docs/guide/platform/installation/setup.md +9 -5
- package/skills/void/docs/guide/platform-administration.md +1 -0
- package/skills/void/docs/guide/queues.md +7 -9
- package/skills/void/docs/guide/quickstart.md +38 -37
- package/skills/void/docs/guide/remote-dev.md +4 -9
- package/skills/void/docs/guide/sandboxes.md +29 -21
- package/skills/void/docs/guide/server-routing.md +9 -72
- package/skills/void/docs/guide/sse.md +4 -18
- package/skills/void/docs/guide/ssg.md +3 -15
- package/skills/void/docs/guide/ssr.md +14 -62
- package/skills/void/docs/guide/storage.md +9 -4
- package/skills/void/docs/guide/type-safety.md +3 -14
- package/skills/void/docs/guide/typed-fetch.md +3 -7
- package/skills/void/docs/guide/websockets.md +68 -40
- package/skills/void/docs/integrations/agents.md +3 -3
- package/skills/void/docs/integrations/cloudflare.md +85 -316
- package/skills/void/docs/integrations/frameworks/analog.md +5 -64
- package/skills/void/docs/integrations/frameworks/astro.md +4 -73
- package/skills/void/docs/integrations/frameworks/nuxt.md +5 -62
- package/skills/void/docs/integrations/frameworks/overview.md +11 -54
- package/skills/void/docs/integrations/frameworks/react-router.md +5 -60
- package/skills/void/docs/integrations/frameworks/sveltekit.md +6 -65
- package/skills/void/docs/integrations/frameworks/tanstack-start.md +4 -62
- package/skills/void/docs/integrations/nodejs-bun-deno.md +5 -69
- package/skills/void/docs/reference/api/auth.md +156 -0
- package/skills/void/docs/reference/api/client.md +87 -0
- package/skills/void/docs/reference/api/database.md +95 -0
- package/skills/void/docs/reference/api/durable.md +46 -0
- package/skills/void/docs/reference/api/env.md +50 -0
- package/skills/void/docs/reference/api/handlers.md +254 -0
- package/skills/void/docs/reference/api/pages.md +241 -0
- package/skills/void/docs/reference/api/plugin.md +39 -0
- package/skills/void/docs/reference/api/resources.md +109 -0
- package/skills/void/docs/reference/api/rewrites.md +76 -0
- package/skills/void/docs/reference/api/types.md +92 -0
- package/skills/void/docs/reference/api.md +56 -1218
- package/skills/void/docs/reference/cli/auth.md +88 -0
- package/skills/void/docs/reference/cli/database.md +128 -0
- package/skills/void/docs/reference/cli/deploy.md +85 -0
- package/skills/void/docs/reference/cli/domains.md +41 -0
- package/skills/void/docs/reference/cli/email.md +129 -0
- package/skills/void/docs/reference/cli/generate.md +116 -0
- package/skills/void/docs/reference/cli/github.md +189 -0
- package/skills/void/docs/reference/cli/platform-config.md +92 -0
- package/skills/void/docs/reference/cli/platform-email.md +81 -0
- package/skills/void/docs/reference/cli/platform-installation.md +127 -0
- package/skills/void/docs/reference/cli/platform-operations.md +90 -0
- package/skills/void/docs/reference/cli/platform-users.md +89 -0
- package/skills/void/docs/reference/cli/platform-zero-trust.md +45 -0
- package/skills/void/docs/reference/cli/platform.md +70 -0
- package/skills/void/docs/reference/cli/project.md +214 -0
- package/skills/void/docs/reference/cli/secrets.md +76 -0
- package/skills/void/docs/reference/cli/setup.md +70 -0
- package/skills/void/docs/reference/cli.md +32 -1682
- package/skills/void/docs/reference/config.md +12 -18
- package/skills/void/docs/reference/resource-inference.md +3 -58
- package/skills/void/docs/reference/structure.md +14 -41
- package/dist/canonical-json-DuDiiUsQ.mjs +0 -13
- package/dist/client-Czz8o5jP.mjs +0 -2
- package/dist/gen-CNJ62MM7.mjs +0 -2
- package/dist/help-CmZzxUba.mjs +0 -2
- package/dist/login-CGcRKEoi.mjs +0 -2
- package/dist/migrate-CYfbKkXh.mjs +0 -2
- package/dist/plan-BEZ8VJW0.mjs +0 -256
- package/dist/plan-DpuOr14e.mjs +0 -2
- package/dist/prepare-Bm3iq-u4.mjs +0 -2
- package/dist/validate-EKmJWxmy.mjs +0 -2
- /package/dist/cli/{cf-compat.d.mts → cloudflare-operation-process.d.mts} +0 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
---
|
|
2
|
+
outline: deep
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# GitHub and Builds {#github}
|
|
6
|
+
|
|
7
|
+
Deploy-on-GitHub works from **any** Void login — Google, GitHub, or other SSO. The first time you connect GitHub, Void links your GitHub identity to your current account (a one-time step, independent of how you logged in); it never creates a second account.
|
|
8
|
+
|
|
9
|
+
## `void github link` {#void-github-link}
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
void github link
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Link your signed-in Void account to GitHub through your browser. `void github install` does this automatically when needed.
|
|
16
|
+
|
|
17
|
+
::: warning Existing GitHub sign-in
|
|
18
|
+
A GitHub identity can belong to only one Void account. If it is already linked elsewhere, sign in to that Void account or authorize a different GitHub identity.
|
|
19
|
+
:::
|
|
20
|
+
|
|
21
|
+
## `void github install` {#void-github-install}
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
void github install
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Open the GitHub App install page in your browser. If your account has no linked GitHub identity yet, `void github install` first runs the GitHub link automatically (browser authorize), then continues. After installing, run `void github connect` to link a repository to your project.
|
|
28
|
+
|
|
29
|
+
## `void github installations` {#void-github-installations}
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
void github installations
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
List all GitHub App installations linked to your account. Each entry includes the `[id: <installation_id>]` needed for `--installation` in non-interactive use.
|
|
36
|
+
|
|
37
|
+
## `void github join` {#void-github-join}
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
void github join
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Join an existing organization installation through your browser. `void github connect` can do this automatically in an interactive terminal. Run `join` locally before non-interactive setup when needed.
|
|
44
|
+
|
|
45
|
+
Requires a signed-in Void account and organization-installation sharing enabled by your platform. Use `void github installations` to find the installation ID.
|
|
46
|
+
|
|
47
|
+
## `void github connect` {#void-github-connect}
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
void github connect [project] [options]
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Connect a GitHub repository to a Void project for automatic deploys. On every push to the configured branch, Void builds and deploys your project automatically.
|
|
54
|
+
|
|
55
|
+
The CLI opens your browser when it needs GitHub authorization. If no installation is available, run `void github install`.
|
|
56
|
+
|
|
57
|
+
**Options**
|
|
58
|
+
|
|
59
|
+
| Flag | Description |
|
|
60
|
+
| --------------------- | --------------------------------------------------------------------------------- |
|
|
61
|
+
| `--project <name>` | Project name (alias for the positional argument) |
|
|
62
|
+
| `--installation <id>` | GitHub App installation ID (required when you have multiple installations) |
|
|
63
|
+
| `--repo <owner/repo>` | Repository full name — required unless the installation grants exactly one repo |
|
|
64
|
+
| `--branch <name>` | Branch to deploy from — **required in non-interactive mode** |
|
|
65
|
+
| `--executor <type>` | Build executor: `container` (default) or `github_actions` |
|
|
66
|
+
| `--workflow <path>` | Authorized deploy workflow file — defaults to `.github/workflows/void-deploy.yml` |
|
|
67
|
+
|
|
68
|
+
Choose `container` for platform builds or `github_actions` for a deployment workflow. The CLI prompts for the executor and, for GitHub Actions, the workflow file. Pass the corresponding flags to skip those prompts.
|
|
69
|
+
|
|
70
|
+
The workflow must be a `.yml` or `.yaml` file under `.github/workflows/`. Only that workflow can obtain the project's OIDC deployment token. Prefer a dedicated deployment workflow.
|
|
71
|
+
|
|
72
|
+
For CI, supply the project and branch, plus the installation and repository when they cannot be selected automatically. Organization connections require repository authorization in a local browser first.
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
void github connect my-app \
|
|
76
|
+
--installation 42 \
|
|
77
|
+
--repo owner/my-app \
|
|
78
|
+
--branch main
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Project resolution** follows the same order as deploy: positional / `--project`, `VOID_PROJECT`, linked project (`.void/project.json`).
|
|
82
|
+
|
|
83
|
+
You can connect only repositories your GitHub account can access.
|
|
84
|
+
|
|
85
|
+
A project has one GitHub connection. Running `void github connect` on a project that is already connected fails. To connect a different repository, run `void github disconnect` first.
|
|
86
|
+
|
|
87
|
+
## `void github update` {#void-github-update}
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
void github update [project] [options]
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Change the branch, executor, or workflow for an existing connection. To change the repository, disconnect and reconnect.
|
|
94
|
+
|
|
95
|
+
**Options**
|
|
96
|
+
|
|
97
|
+
| Flag | Description |
|
|
98
|
+
| ------------------- | ---------------------------------------------------------------- |
|
|
99
|
+
| `--project <name>` | Project name (alias for the positional argument) |
|
|
100
|
+
| `--branch <name>` | New branch to deploy from |
|
|
101
|
+
| `--executor <type>` | New build executor: `container` or `github_actions` |
|
|
102
|
+
| `--workflow <path>` | New authorized deploy workflow file (under `.github/workflows/`) |
|
|
103
|
+
|
|
104
|
+
The CLI prompts for new settings using the current values as defaults. In CI, pass at least one of `--branch`, `--executor`, or `--workflow`.
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
void github update my-app --executor github_actions
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**Project resolution** follows the same order as deploy: positional / `--project`, `VOID_PROJECT`, linked project (`.void/project.json`).
|
|
111
|
+
|
|
112
|
+
## `void github status` {#void-github-status}
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
void github status [project]
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Show the connected repository, branch, executor, and workflow. Container builds do not use the workflow file.
|
|
119
|
+
|
|
120
|
+
**Options**
|
|
121
|
+
|
|
122
|
+
| Flag | Description |
|
|
123
|
+
| ------------------ | ------------------------------------------------ |
|
|
124
|
+
| `--project <name>` | Project name (alias for the positional argument) |
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
void github status my-app
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Project resolution** follows the same order as deploy: positional / `--project`, `VOID_PROJECT`, linked project (`.void/project.json`).
|
|
131
|
+
|
|
132
|
+
## `void github disconnect` {#void-github-disconnect}
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
void github disconnect [project]
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Disconnect a project from its GitHub repository, stopping automatic deploys. Any in-flight builds for the project are cancelled (their deploy tokens are revoked) before the connection is removed. If the project has no connection, it reports that and exits successfully. To point a project at a different repository, disconnect first, then run `void github connect`.
|
|
139
|
+
|
|
140
|
+
You are asked to confirm before anything is removed. Pass `--yes` to skip the prompt; `--yes` is **required** in a non-interactive shell (CI), where there is no prompt to answer.
|
|
141
|
+
|
|
142
|
+
**Options**
|
|
143
|
+
|
|
144
|
+
| Flag | Description |
|
|
145
|
+
| ------------------ | ----------------------------------------------------------------- |
|
|
146
|
+
| `--project <name>` | Project name (alias for the positional argument) |
|
|
147
|
+
| `--yes` | Skip the confirmation prompt (required in non-interactive shells) |
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
void github disconnect my-app --yes
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Project resolution** follows the same order as deploy: positional / `--project`, `VOID_PROJECT`, linked project (`.void/project.json`).
|
|
154
|
+
|
|
155
|
+
## Build {#build}
|
|
156
|
+
|
|
157
|
+
Inspect Deploy-on-GitHub builds.
|
|
158
|
+
|
|
159
|
+
### `void build logs` {#void-build-logs}
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
void build logs [build] [--follow] [--output <file>] [--project <slug>]
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Stream, tail, or download the build logs for a **container** build. With no
|
|
166
|
+
`[build]` argument, targets the project's most recent build.
|
|
167
|
+
|
|
168
|
+
| Flag | Purpose | Default |
|
|
169
|
+
| ------------------------ | ------------------------------------------------------------------------- | ------- |
|
|
170
|
+
| `--follow`, `-f` | Live-tail: poll until the build finishes and its final logs are captured. | off |
|
|
171
|
+
| `--output <file>`, `-o` | Write logs to a file instead of stdout (appends while following). | stdout |
|
|
172
|
+
| `--project <slug>`, `-p` | Target project. | linked |
|
|
173
|
+
|
|
174
|
+
**Project resolution** follows the same order as deploy: positional / `--project`,
|
|
175
|
+
`VOID_PROJECT`, linked project (`.void/project.json`).
|
|
176
|
+
|
|
177
|
+
Builds run on **GitHub Actions** keep their logs on GitHub — the command prints
|
|
178
|
+
the Actions run URL instead of streaming. Only the last 10,000 log lines of a
|
|
179
|
+
container build are retained.
|
|
180
|
+
|
|
181
|
+
Following waits for the platform to confirm the final log tail. If the platform cannot confirm it, upgrade the platform runtime or read the retained logs without `--follow`. An unfinished final tail reports an error after two minutes; retry to recover it.
|
|
182
|
+
|
|
183
|
+
Examples:
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
void build logs # print the latest build's logs
|
|
187
|
+
void build logs -f # follow the latest build until it finishes
|
|
188
|
+
void build logs bld_123 -o build.log # download a specific build's logs
|
|
189
|
+
```
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
outline: deep
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Platform Configuration {#plan-configuration}
|
|
6
|
+
|
|
7
|
+
Use your administrator session for these commands. See [Platform Management](./platform.md#operator-commands) for platform selection, previews, and confirmation.
|
|
8
|
+
|
|
9
|
+
`void platform config plans` opens an interactive plan menu using your administrator session. Plans have stable IDs and editable display names. Copy an existing plan to add one, edit limits without redeploying, archive it to stop new assignments, or remove it with an explicit replacement for its accounts.
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
void platform config plans show [plan-id]
|
|
13
|
+
void platform config plans add <plan-id> --copy <existing-id> --name "Team"
|
|
14
|
+
void platform config plans set <plan-id> [--name "Team"] [--file plan.json]
|
|
15
|
+
void platform config plans reset <builtin-plan-id>
|
|
16
|
+
void platform config plans archive <plan-id>
|
|
17
|
+
void platform config plans restore <plan-id>
|
|
18
|
+
void platform config plans remove <plan-id> [--replacement <plan-id>]
|
|
19
|
+
void platform config plans default <plan-id>
|
|
20
|
+
void platform config plans sync
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Use `--plan` to preview changes and affected accounts; scripted mutations require `--yes`. Every command supports `--connection <registered-id-or-url>` and `--json`. `show` reports the effective limits, default, assignments, and pending account updates. `reset` restores a built-in plan's original limits and build instance size. Archived plans keep their existing accounts but cannot receive new assignments; change the default before archiving it. `remove` requires a replacement for a plan that has accounts or is the default. Changing the default affects only new accounts.
|
|
24
|
+
|
|
25
|
+
For `add` and `set`, `--file` reads a JSON object with optional `name`, `limits`, `buildInstanceType`, and boolean `allowShortSlugs`. `limits` is a partial object of nonnegative whole numbers; `0` means unlimited by the plan. Build timeouts remain capped at the platform maximum of 60 minutes; `0` uses that maximum. Omitted settings keep their current values or the copied plan's values. `buildInstanceType` is `standard-3` or `standard-4`. `allowShortSlugs` permits future assignments of project slugs of five characters or fewer; existing URLs remain available. Storage quotas are not editable. See [Plans and Limits](../../guide/platform/administration/plans.md) for supported limits and examples.
|
|
26
|
+
|
|
27
|
+
An apply checks the preview's revision and rejects concurrent changes. Lower quotas can restrict accounts already above them; usage history and billing periods are preserved. The CLI continues account updates until complete. If an update fails or stops making progress, the configuration remains saved and the command exits unsuccessfully. Run `sync --yes` to continue before editing plans again. Inspect `show` and operator events after an uncertain request outcome.
|
|
28
|
+
|
|
29
|
+
## Authentication configuration {#authentication-configuration}
|
|
30
|
+
|
|
31
|
+
`void platform config auth` opens interactive configuration. These commands use
|
|
32
|
+
your administrator session from `void platform auth login`:
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
void platform config auth list
|
|
36
|
+
void platform config auth show company
|
|
37
|
+
void platform config auth add google
|
|
38
|
+
void platform config auth add oidc --id company
|
|
39
|
+
void platform config auth add cloudflare-access --id access
|
|
40
|
+
void platform config auth configure company
|
|
41
|
+
void platform config auth test company
|
|
42
|
+
void platform config auth link company
|
|
43
|
+
void platform config auth enable company
|
|
44
|
+
void platform config auth disable github
|
|
45
|
+
void platform config auth admission
|
|
46
|
+
void platform config auth protection show
|
|
47
|
+
void platform config auth protection enable --installation <id>
|
|
48
|
+
void platform config auth protection disable --installation <id>
|
|
49
|
+
void platform config auth recover company --installation <id> --file recovery.json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
When configuring an existing installation for the first time, run
|
|
53
|
+
`void platform config auth initialize`, then sign in again. Its current login
|
|
54
|
+
methods and signup policy are preserved.
|
|
55
|
+
|
|
56
|
+
Adding or editing a method saves a pending configuration. Enabling it verifies the
|
|
57
|
+
login in your browser before applying it. Linking the verified identity to your
|
|
58
|
+
account is a separate, explicit action. Before disabling a method, verify a linked
|
|
59
|
+
alternative; the last method cannot be disabled. Disabling revokes human sessions
|
|
60
|
+
created through that method, including operator sessions. Scoped deployment tokens
|
|
61
|
+
remain valid; a human login token used as `VOID_TOKEN` is still revoked.
|
|
62
|
+
|
|
63
|
+
Commands accept `--connection <registered-id-or-url>` and `--json`. Changes accept
|
|
64
|
+
`--plan` or `--yes`. For scripted configuration, use `--file <path>` for the
|
|
65
|
+
nonsecret fields and `--client-secret-env <name>` for the environment variable
|
|
66
|
+
containing the secret. Omit the secret when editing to retain its saved value.
|
|
67
|
+
For `enable` or `link` in scripts, supply `--test-id <id>` from a completed test.
|
|
68
|
+
`test --json` returns a browser URL, test ID, and expiry without waiting for completion.
|
|
69
|
+
|
|
70
|
+
`admission` chooses invited/allowlisted, company-approved, or public signup.
|
|
71
|
+
Company-approved signup creates ordinary accounts automatically when a user
|
|
72
|
+
passes a configured company rule. Select an enabled, company-restricted OIDC or
|
|
73
|
+
Google Workspace method, or an enabled Cloudflare Access gate. In scripts,
|
|
74
|
+
`admission --file <path> --yes` reads a policy such as
|
|
75
|
+
`{"mode":"company","connections":["company"],"access":false}`.
|
|
76
|
+
|
|
77
|
+
`protection enable` creates or connects Cloudflare Access applications independently
|
|
78
|
+
of login methods. Its `--file` accepts the `cloudflareAccess` object described in
|
|
79
|
+
[installation setup](../../guide/platform/installation/setup.md#choose-login-methods).
|
|
80
|
+
Protection changes require installation ownership, the saved recovery credentials,
|
|
81
|
+
and a human administrator session. They revoke current human sessions. Before
|
|
82
|
+
removing protection, change any signup rule that depends on that gate. Cloudflare
|
|
83
|
+
applications are retained for deliberate cleanup.
|
|
84
|
+
|
|
85
|
+
`recover <connection-id>` restores an existing administrator when normal login is
|
|
86
|
+
unavailable. Its file contains `administratorUserId`, optional nonsecret provider
|
|
87
|
+
`configuration`, and an `expectedIdentity` object with exact `issuer` and `subject`
|
|
88
|
+
when using `--yes`. Recovery requires Cloudflare management/database authority,
|
|
89
|
+
original recovery keys, and a successful browser provider test. Use
|
|
90
|
+
`--client-secret-env <name>` for new or rotated credentials.
|
|
91
|
+
|
|
92
|
+
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.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
outline: deep
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Platform Email {#operator-email}
|
|
6
|
+
|
|
7
|
+
Use your administrator session for these commands. See [Platform Management](./platform.md#operator-commands) for platform selection, previews, and confirmation.
|
|
8
|
+
|
|
9
|
+
Decide who mail from the shared sender may reach, who registers email domains, and a project's outbound caps:
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
void platform email policy
|
|
13
|
+
void platform email policy-set <verified|domains|any> [--domains <domain[,domain...]>]
|
|
14
|
+
void platform email settings
|
|
15
|
+
void platform email settings-set --domains <self-serve|admin>
|
|
16
|
+
void platform email limit <project-id|slug> [--monthly <n>] [--burst <n>]
|
|
17
|
+
void platform email logs <project-id|slug> [--page <n>] [--limit <n>] [--json]
|
|
18
|
+
void platform email attempts [--project <id|slug>] [--page <n>] [--limit <n>]
|
|
19
|
+
void platform email attempt-resolve <attempt-id> --ended --reason <text>
|
|
20
|
+
void platform email operation-resolve <operation-id> --ended --outcome <applied|not-applied> --reason <text>
|
|
21
|
+
void platform email shared-recipients [--project <id|slug>] [--page <n>] [--limit <n>]
|
|
22
|
+
void platform email shared-recipient-resolve <recipient-id> --ended --outcome <applied|not-applied> --reason <text>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`policy` decides which recipients a project's `<slug>+tag@<mail domain>` sender reaches: `verified` (the default) means only that project's verified destinations; `domains` adds every address on the listed domains; `any` lifts the check. Neither widens delivery to addresses on the platform's own mail domain: those stay verified-destination-only, so no project reaches another project's inbox without its consent. Cloudflare still refuses a destination it has not verified until the platform mail domain is onboarded for Email Sending, so under `domains` or `any` such refusals arrive as per-recipient `UNVERIFIED_DESTINATION` results. Custom-domain sends are not affected.
|
|
26
|
+
|
|
27
|
+
`settings-set --domains admin` tells `void email domain add` to print the administrator's command instead of starting token setup. `limit` overrides the project's monthly and rolling 60-second caps (defaults 200 and 10); a project page in the admin UI shows and clears them.
|
|
28
|
+
|
|
29
|
+
`logs` inspects retained receipt and recipient outcomes, including operation IDs, provider references, error codes, and policy versions. Pages contain at most 100 records, newest first; use `--json` for all fields. After project deletion, use its project ID to inspect metadata until the 30-day retention period expires. Message content and credentials are never included.
|
|
30
|
+
|
|
31
|
+
`attempts` lists interrupted provider calls and their earliest resolution time. Once
|
|
32
|
+
the original Worker execution has ended and the attempt is at least 24 hours old,
|
|
33
|
+
`attempt-resolve` records `outcome_unknown`, retains its quota charge, and releases
|
|
34
|
+
the project/domain cleanup fence. `--ended` is your attestation that the call is no
|
|
35
|
+
longer active; `--reason` is stored in the operator audit log. Keep recipient
|
|
36
|
+
addresses and message content out of the reason. The send is never retried. Use
|
|
37
|
+
`--plan` to preview and `--yes` to apply without a prompt.
|
|
38
|
+
|
|
39
|
+
`operation-resolve` recovers a Cloudflare routing, Worker, secret, catch-all, or
|
|
40
|
+
Sending mutation whose outcome remains unknown. After the original execution
|
|
41
|
+
has ended and the operation is at least 24 hours old, inspect the exact resource
|
|
42
|
+
named by the preview and attest whether its write was `applied` or `not-applied`.
|
|
43
|
+
Applied writes continue at the next step; not-applied writes retry the same
|
|
44
|
+
persisted intent. The running platform version must match that intent, so restore
|
|
45
|
+
the matching version before recovering an operation created by older code. The
|
|
46
|
+
preview pins the step, attempt, connection and route generations, resource
|
|
47
|
+
identity, and digest used by the apply request. Time alone never retries a write.
|
|
48
|
+
|
|
49
|
+
`shared-recipients` discovers shared inbound addresses, provider rule names and
|
|
50
|
+
IDs, and interrupted creation intents, including projects awaiting deletion.
|
|
51
|
+
If creation has an unknown outcome, use `shared-recipient-resolve` after the
|
|
52
|
+
original execution has ended and its creation intent is at least 24 hours old.
|
|
53
|
+
Inspect the exact account, zone, recipient and rule named by `--plan`, and use
|
|
54
|
+
Cloudflare's provider audit to establish whether creation was `applied` or
|
|
55
|
+
`not-applied`. A missing rule alone is insufficient evidence for `not-applied`.
|
|
56
|
+
Supply that finding in `--reason`; it is recorded in platform events.
|
|
57
|
+
|
|
58
|
+
Applied recovery requires the exact owned rule to be present and records its
|
|
59
|
+
ID. Not-applied recovery releases the creation intent only after repeated
|
|
60
|
+
provider inspection and your attestation. Both outcomes leave delivery unready
|
|
61
|
+
until normal reconciliation verifies it. Recovery itself creates or deletes no
|
|
62
|
+
provider rule and never reopens a deleting project; retry deletion afterward
|
|
63
|
+
when recovering cleanup. Use `--yes` to apply the preview without a prompt.
|
|
64
|
+
If the intent or provider ownership changes, inspect a new plan.
|
|
65
|
+
|
|
66
|
+
Register and maintain email domains for projects whose owners hold no Cloudflare credential:
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
void platform email domains [--project <id|slug>]
|
|
70
|
+
void platform email domain-add <domain> --project <id|slug> [--token-stdin]
|
|
71
|
+
void platform email domain-status <domain>
|
|
72
|
+
void platform email domain-sync <domain>
|
|
73
|
+
void platform email domain-rotate-secret <domain>
|
|
74
|
+
void platform email domain-remove <domain> [--token-stdin]
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
`domain-add` uses the platform's Cloudflare credential for zones in its account. For another account, pipe a scoped Cloudflare API token on standard input with `--token-stdin --yes`. Managed custom inbound email requires the Cloudflare zone apex (`example.com`). If its MX records already belong to another mail provider, use the project's shared email address or choose another unused zone. Native Cloudflare deployments also support literal recipient addresses on subdomains; see [Your own Cloudflare account](../../guide/email/domains.md#your-own-cloudflare-account).
|
|
78
|
+
|
|
79
|
+
`domain-status` shows inbound, outbound, and credential-management readiness with the latest operation. A blocked operation resumes through `domain-sync`; a blocked rotation resumes through `domain-rotate-secret`, preserving already confirmed steps and its staged credential. An uncertain operation remains stopped until read-back proves the result or an administrator uses `operation-resolve`. Domains an administrator adds show `managed_by: admin`; their owners can list and inspect them but use these commands for `sync`, `domain-rotate-secret`, and `remove`.
|
|
80
|
+
|
|
81
|
+
If project deletion leaves cleanup blocked by an expired or revoked Cloudflare token, use `domain-remove <domain> --token-stdin --yes` with a replacement scoped to the same account and zone. This resumes the retained cleanup only when no other project uses the connection. For a live project, renew its token through `domain-add` instead.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
outline: deep
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Platform Installation {#void-platform-install}
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
void platform install [options] [--yes]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
| Option | Purpose |
|
|
12
|
+
| --------------------------------- | ------------------------------------------------------------------------------------ |
|
|
13
|
+
| `--name <slug>` | Installation name used in `void-<name>-<role>` resource names; choose an unused name |
|
|
14
|
+
| `--display-name <name>` | Human-readable platform name |
|
|
15
|
+
| `--account <id>` | Cloudflare account id |
|
|
16
|
+
| `--auth-config <path>` | Login methods, signup policy, and environment references for provider secrets |
|
|
17
|
+
| `--login-methods <methods>` | Comma-separated `github`, `google`, `oidc`, or `cloudflare-access` login methods |
|
|
18
|
+
| `--access-protection` | Protect the platform UI and APIs with Cloudflare Access |
|
|
19
|
+
| `--no-access-protection` | Skip Cloudflare Access protection |
|
|
20
|
+
| `--hyperdrive <create\|id>` | Create Hyperdrive or use the specified existing configuration |
|
|
21
|
+
| `--application-domain <domain>` | Base domain for deployed apps |
|
|
22
|
+
| `--workers-dev` | Explicit testing mode; add an application domain later |
|
|
23
|
+
| `--zone <domain>` | Cloudflare zone containing the application domain |
|
|
24
|
+
| `--dedicated-zone` | Add zone-wide catch-all routes; valid only when the app domain is the whole zone |
|
|
25
|
+
| `--no-dedicated-zone` | Skip zone-wide application catch-all routes |
|
|
26
|
+
| `--control-plane-domain <domain>` | Optional API custom hostname; defaults to `workers.dev` |
|
|
27
|
+
| `--no-control-plane-domain` | Use the default `workers.dev` API hostname |
|
|
28
|
+
| `--dashboard-url <origin>` | HTTPS origin of an optional dashboard deployed separately |
|
|
29
|
+
| `--plan` | Resolve and print a read-only plan |
|
|
30
|
+
| `--resume` | Continue the matching checkpointed installation |
|
|
31
|
+
| `--runtime <path>` | Deploy a locally built, integrity-checked runtime directory |
|
|
32
|
+
| `--yes` | Acknowledge Cloudflare changes in non-interactive use |
|
|
33
|
+
|
|
34
|
+
For a first installation, follow [Install a Void Platform](../../guide/self-hosted-platform.md). The interactive installer recommends using a domain and offers **Use workers.dev for testing** as a visible alternative. Void creates the platform infrastructure and tables. External PostgreSQL and a configured login method are required in either mode; GitHub OAuth is the default login choice, not a requirement. `--workers-dev` skips zone/DNS/certificate operations and cannot be combined with `--application-domain`, `--zone`, or `--dedicated-zone`.
|
|
35
|
+
|
|
36
|
+
Read-only plans, workers.dev installations with the default API hostname, and supported lifecycle operations can use Cloudflare browser login and the system keychain. Installation that writes DNS or creates a zone needs an explicit management token through `CLOUDFLARE_API_TOKEN` or `CF_API_TOKEN`.
|
|
37
|
+
|
|
38
|
+
The installed platform needs a separate runtime token to provision resources for apps. The interactive installer prompts for it and the other setup values. For non-interactive installs, inject the variables listed in [Install from CI](../../guide/platform/installation/ci.md).
|
|
39
|
+
|
|
40
|
+
To enable email during install or upgrade, set both `VOID_EMAIL_SENDER_DOMAIN` and `VOID_EMAIL_SHARED_ZONE_ID`. Void records the pair for later upgrades; supplying only one is an error.
|
|
41
|
+
|
|
42
|
+
Use `--dashboard-url https://dash.example.com` when deploying the optional user
|
|
43
|
+
dashboard separately. The URL must be an HTTPS origin without credentials, a
|
|
44
|
+
path, query, or fragment. Void permits that origin's login callbacks and saves
|
|
45
|
+
it for later maintenance; it does not deploy a dashboard Worker. Omission keeps
|
|
46
|
+
an existing installation's saved dashboard origin.
|
|
47
|
+
|
|
48
|
+
`--plan` previews resource names, login methods, callback URLs, and credential requirements. Run the install or resume command printed at the end to continue. For login configuration, use either `--auth-config` or `--login-methods` with the Access protection flags.
|
|
49
|
+
|
|
50
|
+
New resources use `void-<name>-<role>` names; choose an unused installation name. The installer opens setup pages for missing credentials and reuses values already supplied.
|
|
51
|
+
|
|
52
|
+
Installation progress and partial credentials are saved encrypted locally. Rerun the installer to continue unfinished setup, or pass `--resume --name <id>`. Use lifecycle commands for completed installations.
|
|
53
|
+
|
|
54
|
+
Use an empty PostgreSQL database dedicated to the installation. You can correct a failed initial connection, but after the database is claimed or Hyperdrive is provisioned, commands reject a different URL.
|
|
55
|
+
|
|
56
|
+
Choose whether Void creates Hyperdrive or uses an existing configuration. An existing Hyperdrive must point to the platform database with SQL result caching disabled. Supply a database owner URL for migrations. See [Use an existing Hyperdrive](../../guide/platform/installation/prerequisites.md#use-an-existing-hyperdrive) for setup and [Install from CI](../../guide/platform/installation/ci.md) for unattended inputs.
|
|
57
|
+
|
|
58
|
+
Recovery secrets are encrypted using your system keychain. Without one, supply a base64-encoded 32-byte `VOID_PLATFORM_RECOVERY_KEY`. Keep the original credentials in protected CI secrets for recovery.
|
|
59
|
+
|
|
60
|
+
If a newly created zone is waiting for registrar delegation, resume after it becomes active:
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
void platform install --resume --name <installation-id>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
See [Self-host a Void platform](../../guide/self-hosted-platform.md) for prerequisites, token scope, exact footprint, domain behavior, and an end-to-end walkthrough.
|
|
67
|
+
|
|
68
|
+
## `void platform domain set` {#void-platform-domain-set}
|
|
69
|
+
|
|
70
|
+
```sh
|
|
71
|
+
void platform domain set <domain> [--installation <id>] [--zone <domain>] [--dedicated-zone] [--plan] [--yes]
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Add an application domain to a workers.dev test platform. Domain-based installations remain the recommended default. The command detects the zone when possible, creates missing DNS and routes after confirmation, and checks HTTPS and project Zero Trust protection before making the domain canonical. If DNS, certificates, or protection are pending, rerun the same command to resume. `--plan` is read-only; non-interactive mutations require `--yes`.
|
|
75
|
+
|
|
76
|
+
Existing workers.dev URLs remain available, and the platform API origin, OAuth callback, projects, and deployments stay unchanged. The command verifies the running runtime token's Cache Purge permission for the new zone. A disabled platform stays disabled. Use the database URL from the original installation when administering from another machine. Replacing an already configured application domain is not supported. See [Adding a Domain](../../guide/platform/installation/domains.md#adding-a-domain).
|
|
77
|
+
|
|
78
|
+
## Lifecycle commands {#lifecycle-commands}
|
|
79
|
+
|
|
80
|
+
Use these commands to recover, update, pause, or remove an installation:
|
|
81
|
+
|
|
82
|
+
```sh
|
|
83
|
+
void platform discover [--account <id>] [--installation <id-or-name>]
|
|
84
|
+
void platform upgrade [id] [--runtime <path>] [--dashboard-url <origin>] [--plan] [--yes]
|
|
85
|
+
void platform rollback [id] --runtime <earlier-path> [--from-runtime <current-path>] [--plan] [--yes]
|
|
86
|
+
void platform repair [id] [--runtime <path>] [--dashboard-url <origin>] [--plan] [--yes]
|
|
87
|
+
void platform disable [id] [--plan] [--yes]
|
|
88
|
+
void platform enable [id] [--runtime <path>] [--plan] [--yes]
|
|
89
|
+
void platform uninstall [id] [--plan] [--purge-data] [--keep-zone] [--yes]
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
`discover --installation` limits recovery and endpoint verification to one installation in a shared Cloudflare account.
|
|
93
|
+
|
|
94
|
+
Omit `id` when only one installation is configured, or choose from the interactive picker. Non-interactive commands need an ID when several installations exist. Commands that make changes also require `--yes`; `--plan` only previews changes.
|
|
95
|
+
|
|
96
|
+
To add or explicitly change a separately deployed dashboard after installation,
|
|
97
|
+
use `repair --dashboard-url <origin>` or `upgrade --dashboard-url <origin>`.
|
|
98
|
+
Preview with `--plan` first. Existing Access protection must cover the configured
|
|
99
|
+
dashboard origin before maintenance can proceed. See [Optional Dashboard](../../guide/platform/installation/domains.md#optional-dashboard).
|
|
100
|
+
|
|
101
|
+
After discovery on another machine, set `VOID_PLATFORM_DATABASE_URL`. An upgrade that preserves every deployed Worker also preserves its secrets. For an email-enabled installation without its encrypted recovery file, restore `VOID_PLATFORM_EMAIL_SIGNING_SECRET`; recreating only the email gateway needs that key and does not need the Cloudflare runtime token or JWT signing key. Recreating the API or proxy also requires the email key when email is enabled, in addition to their normal secrets. Recreating the API requires its original runtime-token, GitHub, R2, JWT, and project-encryption values; recreating the proxy requires the runtime token and JWT signing key.
|
|
102
|
+
|
|
103
|
+
| Command | Behavior |
|
|
104
|
+
| ----------- | --------------------------------------------------------------------------------------------- |
|
|
105
|
+
| `discover` | Verifies remote ownership and restores local installation records without downloading secrets |
|
|
106
|
+
| `repair` | Recreates missing resources owned by the installer |
|
|
107
|
+
| `upgrade` | Deploys the selected runtime and supported pending migrations |
|
|
108
|
+
| `rollback` | Restores a declared-compatible earlier runtime without reversing PostgreSQL migrations |
|
|
109
|
+
| `disable` | Blocks platform traffic through routing storage without removing data |
|
|
110
|
+
| `enable` | Restores traffic after checking the platform |
|
|
111
|
+
| `uninstall` | Blocks traffic and removes eligible resources, retaining data by default |
|
|
112
|
+
|
|
113
|
+
Repair and upgrade preserve disabled state. New, resumed, and previously disabled installations block user traffic until all target Workers pass verification; the installer's health probes can still run. Routes and custom domains remain attached.
|
|
114
|
+
|
|
115
|
+
`--runtime` selects a custom platform build. Relative paths resolve from your current directory. Void verifies the build before making changes; see [Platform Development](../../guide/platform/development/runtime.md#deploying-your-runtime) for creating one.
|
|
116
|
+
|
|
117
|
+
Without `--runtime`, the CLI uses its packaged platform version.
|
|
118
|
+
|
|
119
|
+
Platform migrations only move forward. Void checks compatibility before updating the database and tells you if an intermediate release is needed.
|
|
120
|
+
|
|
121
|
+
An upgrade completes after the new Workers pass health checks. If rollout fails, Void attempts to restore the previous Workers. Retrying does not repeat completed migrations.
|
|
122
|
+
|
|
123
|
+
`platform rollback` restores a compatible earlier runtime without reversing database migrations. Pass its files with `--runtime`; if the installed version is custom, also supply that version with `--from-runtime`. Void refuses incompatible targets.
|
|
124
|
+
|
|
125
|
+
Uninstall verifies remote ownership before removing anything. Data resources are retained unless you pass `--purge-data`. Workers, the Queues they use, R2, AI Gateway, DNS records, routes, custom domains, adopted resources, external PostgreSQL, and zones are always retained for manual review.
|
|
126
|
+
|
|
127
|
+
See [Disable and Uninstall](../../guide/platform/installation/uninstall.md#remove-retained-resources) for the full removal policy and the cleanup order.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
outline: deep
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Platform Operations {#operator-deployments}
|
|
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 deployment, inspect its manifest, or request cancellation:
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
void platform deployment list [--project <id-or-slug>] [--status <status>] [--search <text>] [--page <n>] [--limit <n>]
|
|
13
|
+
void platform deployment show <id>
|
|
14
|
+
void platform deployment cancel <id>
|
|
15
|
+
void platform deployment migrate-assets <id> [--cursor <cursor>] [--plan|--yes]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Cancellation applies while a deployment is pending, uploading, migrating, or prerendering, and can be requested again while it is canceling. A deployment that has begun switching traffic, is compensating for a failure, or has finished cannot be canceled through this command.
|
|
19
|
+
|
|
20
|
+
`migrate-assets` copies legacy assets to scoped R2 storage, verifies their contents, and updates each batch only after all its assets are verified. Original assets remain in place, and application traffic stays on the same deployment. Upgrade the platform runtime before using this command. Migrate both active deployments and retained rollback deployments before removing support for older asset storage.
|
|
21
|
+
|
|
22
|
+
Use `--plan` to preview the first batch. Applying authorizes all remaining batches for that deployment; the CLI previews each batch and prints its result, including `nextCursor`. With `--json`, results are JSON Lines. If a later batch fails or the command is interrupted, resume with the cursor from the last successful result. An ambiguous request is never retried automatically; inspect the deployment before resuming. A completed migration reports `complete: true` and `nextCursor: null`.
|
|
23
|
+
|
|
24
|
+
Use [`void platform system asset-migrations`](#operator-system) to find deployments requiring migration. Inspect every inventory page, migrate each deployment with `needsMigration` greater than zero, then inspect every page again. Include retained rollback deployments and stored bundles. Investigate rows marked `invalid` before considering migration complete. Keep the older asset readers until the full inventory is valid and no protected deployment needs migration.
|
|
25
|
+
|
|
26
|
+
Read its runtime logs with:
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
void platform deployment logs <id> [--since <time>] [--cursor <cursor>] [--limit <n>] [--follow]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The default is the last hour, oldest first, with up to 100 records. `--since` accepts a duration such as `10m`, `2h`, or `1d`, an ISO date, or epoch milliseconds. Set `--limit` from 1 to 500 and pass the response's `nextCursor` as `--cursor` to read another page.
|
|
33
|
+
|
|
34
|
+
`--follow` reads the remaining pages and checks for new logs every two seconds until you press Ctrl+C. It checks a five-minute overlap for delayed records and suppresses replayed rows. Records that arrive later may need a subsequent historical query. Following stops with an error if a window exceeds 10,000 records; use a narrower historical query in that case.
|
|
35
|
+
|
|
36
|
+
## Builds {#operator-builds}
|
|
37
|
+
|
|
38
|
+
Inspect a build or read its output:
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
void platform build show <id>
|
|
42
|
+
void platform build logs <id> [--since <sequence>] [--limit <n>] [--follow]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Build logs start at sequence `0` and return up to 500 lines. Use the returned `lastSeq` as `--since` to continue; `--limit` accepts 1 to 500. Container log retrieval requires managed builds to be enabled. GitHub Actions builds return an external log URL.
|
|
46
|
+
|
|
47
|
+
Following waits for the final logs after the build becomes terminal. If completion cannot be confirmed within two minutes, the command exits with an error. Older builds without a completion signal may wait for 30 seconds without new lines before following stops.
|
|
48
|
+
|
|
49
|
+
## System {#operator-system}
|
|
50
|
+
|
|
51
|
+
Inspect activity, check service health, or review administrative changes:
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
void platform system overview
|
|
55
|
+
void platform system health
|
|
56
|
+
void platform system cli-versions
|
|
57
|
+
void platform system asset-migrations [--page <n>] [--limit <n>]
|
|
58
|
+
void platform system events [--page <n>] [--limit <n>]
|
|
59
|
+
void platform system backfill-queue-tokens
|
|
60
|
+
void platform system sandbox-drain [--cursor <opaque-cursor>]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`overview` shows platform totals and recent activity. `health` checks the configured services and database, and exits with a nonzero status if a check fails. `cli-versions` reports the CLI versions used by deployments.
|
|
64
|
+
|
|
65
|
+
`asset-migrations` inventories active deployments, retained rollback deployments, and deployments with stored bundles. It reports their asset counts, `needsMigration`, and an `invalid` flag for unreadable metadata. Read all pages using the response's pagination fields. Migrate each deployment with `needsMigration` greater than zero through [`deployment migrate-assets`](#operator-deployments), then rerun the full inventory. Migration keeps the original assets; removing those assets or their older readers requires separate verification.
|
|
66
|
+
|
|
67
|
+
`events` shows the administrator, target, and outcome of changes. A pending event means the outcome has not been recorded. Previews and session login/logout do not create these events. `backfill-queue-tokens` repairs older queue entries that are missing authentication tokens and supports `--plan` before applying the repair.
|
|
68
|
+
|
|
69
|
+
Use `sandbox-drain` when an upgrade from the legacy tenant-owned Sandbox runtime asks you to finish cleanup. Preview with `--plan`; pass the returned `nextCursor` as `--cursor` to inspect later pages. Apply with `--yes` and rerun until it reports `complete: true`, then rerun the interrupted upgrade. Application traffic stays paused during cleanup, while administrator login remains available. The completed upgrade enables the current managed Sandbox controller automatically.
|
|
70
|
+
|
|
71
|
+
Use the [platform lifecycle commands](./platform-installation.md#lifecycle-commands) to maintain your installation's Workers.
|
|
72
|
+
|
|
73
|
+
## Hosted Workers {#operator-workers}
|
|
74
|
+
|
|
75
|
+
The following commands manage the Workers of the hosted Void Cloud platform.
|
|
76
|
+
They are unavailable on a self-hosted installation; use the
|
|
77
|
+
[lifecycle commands](./platform-installation.md#lifecycle-commands) there instead.
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
void platform worker list [--environment <production|staging>]
|
|
81
|
+
void platform worker show <worker-name> [--environment <production|staging>]
|
|
82
|
+
void platform worker rollback <worker-name> <version-id> [--environment <production|staging>]
|
|
83
|
+
void platform worker rollback-all [--environment <production|staging>]
|
|
84
|
+
void platform worker events [batch-id] [--environment <production|staging>]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Use a name from `worker list`, such as `api` or `proxy`. `show` lists its
|
|
88
|
+
versions and current deployment. Preview either rollback with `--plan`, then
|
|
89
|
+
apply it interactively or with `--yes` in a script. `events` lists worker
|
|
90
|
+
operation events or inspects one batch by ID.
|