@supacloud/cli 0.85.0 → 0.87.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 +193 -151
- package/dist/index.js +305 -103
- package/dist/shared/context.d.ts +6 -0
- package/dist/shared/tools/ai-tools.d.ts +1 -1
- package/dist/shared/tools/application-schemas.d.ts +34 -0
- package/dist/shared/tools/application-tools.d.ts +2 -1
- package/dist/shared/tools/deploy-tools.d.ts +15 -1
- package/package.json +5 -5
- package/skills/{supacloud-cli → supacloud}/SKILL.md +17 -17
- package/skills/supacloud/agents/openai.yaml +4 -0
- package/skills/{supacloud-cli → supacloud}/references/command-map.md +7 -7
- package/skills/{supacloud-cli → supacloud}/references/database-workflow.md +7 -7
- package/skills/supacloud-cli/agents/openai.yaml +0 -4
package/README.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Project-scoped CLI for SupaCloud users.
|
|
4
4
|
|
|
5
|
-
The only command-line executable is `supacloud
|
|
6
|
-
|
|
5
|
+
The only command-line executable is `supacloud`. The compiled server binary
|
|
6
|
+
installed at `/usr/local/bin/supacloud` is a separate managed-host installation.
|
|
7
7
|
|
|
8
8
|
Tool adapters import `@supacloud/cli/tool-runtime` for typed registration and
|
|
9
9
|
schema decoding. This side-effect-free entrypoint does not initialize the CLI.
|
|
@@ -14,7 +14,7 @@ are not supported.
|
|
|
14
14
|
## Application Starter
|
|
15
15
|
|
|
16
16
|
```sh
|
|
17
|
-
supacloud
|
|
17
|
+
supacloud app init --root ./orders --name orders
|
|
18
18
|
cd orders
|
|
19
19
|
bun install
|
|
20
20
|
bun run check
|
|
@@ -48,16 +48,16 @@ behavior.
|
|
|
48
48
|
### Application delivery
|
|
49
49
|
|
|
50
50
|
```sh
|
|
51
|
-
supacloud
|
|
52
|
-
supacloud
|
|
53
|
-
supacloud
|
|
54
|
-
supacloud
|
|
55
|
-
supacloud
|
|
56
|
-
supacloud
|
|
57
|
-
supacloud
|
|
58
|
-
supacloud
|
|
59
|
-
supacloud
|
|
60
|
-
supacloud
|
|
51
|
+
supacloud app plan --root . --format json
|
|
52
|
+
supacloud app build --root .
|
|
53
|
+
supacloud app upload --ref PROJECT --id orders --manifest_path generated/delivery/delivery.manifest.json
|
|
54
|
+
supacloud app configure --ref PROJECT --id orders --environment_id test --configuration_path configuration.json
|
|
55
|
+
supacloud app deploy --ref PROJECT --id orders --environment_id test --release_id RELEASE_SHA256 --configuration_id CONFIG_UUID --activation_id NEW_UUID --expected_activation_id absent
|
|
56
|
+
supacloud app status --ref PROJECT --id orders --environment_id test
|
|
57
|
+
supacloud app logs --ref PROJECT --id orders --environment_id test
|
|
58
|
+
supacloud app reconcile --ref PROJECT --id orders --environment_id test --release_id RELEASE_SHA256 --activation_id ACTIVATION_UUID
|
|
59
|
+
supacloud app rollback --ref PROJECT --id orders --environment_id test --release_id OLD_RELEASE_SHA256 --configuration_id CONFIG_UUID --activation_id NEW_UUID --expected_activation_id CURRENT_UUID
|
|
60
|
+
supacloud app retire --ref PROJECT --id orders --environment_id test --activation_id ACTIVATION_UUID
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
`plan` and `build` read `delivery` in `supacloud.config.ts`; `--root` is the
|
|
@@ -82,12 +82,12 @@ Management API credentials except local plan/build and authoring commands.
|
|
|
82
82
|
### Isolated Application Previews
|
|
83
83
|
|
|
84
84
|
```sh
|
|
85
|
-
supacloud
|
|
86
|
-
supacloud
|
|
87
|
-
supacloud
|
|
88
|
-
supacloud
|
|
89
|
-
supacloud
|
|
90
|
-
supacloud
|
|
85
|
+
supacloud app preview-plan --env test --id orders --environment_id test --release_id RELEASE_SHA256 --branch_ref preview-orders
|
|
86
|
+
supacloud app preview --env test --id orders --environment_id test --release_id RELEASE_SHA256 --configuration_id CONFIG_UUID --ttl_seconds 3600 --wait --timeout_seconds 300
|
|
87
|
+
supacloud app previews --env test --id orders --environment_id test
|
|
88
|
+
supacloud app preview-status --env test --id orders --environment_id test --preview_id PREVIEW_UUID --wait --timeout_seconds 300
|
|
89
|
+
supacloud app preview-reconcile --env test --id orders --environment_id test --preview_id PREVIEW_UUID
|
|
90
|
+
supacloud app preview-cleanup --env test --id orders --environment_id test --preview_id PREVIEW_UUID
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
The platform owns branch provisioning, queue/Storage namespaces, test Secrets,
|
|
@@ -194,32 +194,32 @@ Install:
|
|
|
194
194
|
|
|
195
195
|
```bash
|
|
196
196
|
npm install -g @supacloud/cli
|
|
197
|
-
supacloud
|
|
197
|
+
supacloud status
|
|
198
198
|
```
|
|
199
199
|
|
|
200
200
|
Bun users can run the same package explicitly with Bun, including on Windows,
|
|
201
201
|
without installing Node.js or a separate wrapper:
|
|
202
202
|
|
|
203
203
|
```bash
|
|
204
|
-
bunx --bun --package @supacloud/cli supacloud
|
|
204
|
+
bunx --bun --package @supacloud/cli supacloud status
|
|
205
205
|
```
|
|
206
206
|
|
|
207
207
|
One-off execution:
|
|
208
208
|
|
|
209
209
|
```bash
|
|
210
|
-
npm exec --package @supacloud/cli -- supacloud
|
|
210
|
+
npm exec --package @supacloud/cli -- supacloud status
|
|
211
211
|
```
|
|
212
212
|
|
|
213
213
|
Install the packaged AI Skill:
|
|
214
214
|
|
|
215
215
|
```bash
|
|
216
|
-
supacloud
|
|
217
|
-
supacloud
|
|
218
|
-
supacloud
|
|
216
|
+
supacloud ai show_skill
|
|
217
|
+
supacloud ai install_skill --dry_run
|
|
218
|
+
supacloud ai install_skill
|
|
219
219
|
```
|
|
220
220
|
|
|
221
|
-
The default destination is `$CODEX_HOME/skills/supacloud
|
|
222
|
-
`~/.codex/skills/supacloud
|
|
221
|
+
The default destination is `$CODEX_HOME/skills/supacloud` or
|
|
222
|
+
`~/.codex/skills/supacloud`. Use `--target /path/to/skills` for an explicit
|
|
223
223
|
Skill root. Different existing content is preserved unless `--force` is passed;
|
|
224
224
|
forced replacement creates a timestamped adjacent backup first.
|
|
225
225
|
|
|
@@ -241,6 +241,9 @@ SUPACLOUD_ENV=test
|
|
|
241
241
|
SUPACLOUD_API_URL=https://management.test.example.com
|
|
242
242
|
SUPACLOUD_API_TOKEN=<test-management-api-token>
|
|
243
243
|
SUPACLOUD_PROJECT_REF=test-ref
|
|
244
|
+
SUPACLOUD_APPLICATION_ID=orders
|
|
245
|
+
SUPACLOUD_APPLICATION_ENVIRONMENT_ID=test
|
|
246
|
+
SUPACLOUD_APPLICATION_CONFIGURATION_PATH=deploy/configuration.test.json
|
|
244
247
|
```
|
|
245
248
|
|
|
246
249
|
```dotenv
|
|
@@ -249,8 +252,26 @@ SUPACLOUD_ENV=production
|
|
|
249
252
|
SUPACLOUD_API_URL=https://management.example.com
|
|
250
253
|
SUPACLOUD_API_TOKEN=<production-management-api-token>
|
|
251
254
|
SUPACLOUD_PROJECT_REF=production-ref
|
|
255
|
+
SUPACLOUD_APPLICATION_ID=orders
|
|
256
|
+
SUPACLOUD_APPLICATION_ENVIRONMENT_ID=production
|
|
257
|
+
SUPACLOUD_APPLICATION_CONFIGURATION_PATH=deploy/configuration.production.json
|
|
252
258
|
```
|
|
253
259
|
|
|
260
|
+
When `SUPACLOUD_APPLICATION_ID` is present, the top-level deployment command
|
|
261
|
+
uses the application release workflow automatically:
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
supacloud --env test deploy
|
|
265
|
+
supacloud --env production deploy --confirm-production production-ref
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
Test and production use the same workflow. Production safety is enforced by the
|
|
269
|
+
CLI confirmation gate; immutable releases, configuration revisions, backups,
|
|
270
|
+
readiness, CAS activation, rollback artifacts and uncertain-result
|
|
271
|
+
reconciliation belong to SupaCloud. The application layer only supplies its
|
|
272
|
+
build output and configuration file; it does not implement backup, activation
|
|
273
|
+
or downgrade orchestration.
|
|
274
|
+
|
|
254
275
|
CLI requests (including `status`) default to `SUPACLOUD_TLS_VERIFY=false`, skipping HTTPS certificate verification so that
|
|
255
276
|
air-gapped installations using private or self-signed certificates work
|
|
256
277
|
without extra configuration. To enable strict certificate verification, set:
|
|
@@ -276,9 +297,9 @@ where identity authentication is required.
|
|
|
276
297
|
Run commands with the selected profile:
|
|
277
298
|
|
|
278
299
|
```bash
|
|
279
|
-
supacloud
|
|
280
|
-
supacloud
|
|
281
|
-
supacloud
|
|
300
|
+
supacloud --env test status
|
|
301
|
+
supacloud project get --env test
|
|
302
|
+
supacloud status --env-file ./config/supacloud.staging.env
|
|
282
303
|
```
|
|
283
304
|
|
|
284
305
|
Global flags may appear before or after the command. Both `--key value` and
|
|
@@ -301,7 +322,7 @@ SUPACLOUD_ENV=test \
|
|
|
301
322
|
SUPACLOUD_API_URL=https://management.test.example.com \
|
|
302
323
|
SUPACLOUD_API_TOKEN="$CI_SUPACLOUD_API_TOKEN" \
|
|
303
324
|
SUPACLOUD_PROJECT_REF=test-ref \
|
|
304
|
-
supacloud
|
|
325
|
+
supacloud status
|
|
305
326
|
```
|
|
306
327
|
|
|
307
328
|
Project context is resolved from one atomic source: a named profile selected by
|
|
@@ -310,6 +331,26 @@ legacy `.env` fallback. Core URL, credential, and project-ref values are not
|
|
|
310
331
|
filled by mixing sources. If `SUPACLOUD_ENV` is set without a complete process
|
|
311
332
|
context, it strictly selects `.env.supacloud.<value>`.
|
|
312
333
|
|
|
334
|
+
For one-command deployments, declare public build variables explicitly in the
|
|
335
|
+
target configuration:
|
|
336
|
+
|
|
337
|
+
```json
|
|
338
|
+
{
|
|
339
|
+
"targets": {
|
|
340
|
+
"web": {
|
|
341
|
+
"type": "frontend",
|
|
342
|
+
"root": "apps/web",
|
|
343
|
+
"id": "web",
|
|
344
|
+
"buildEnv": ["VITE_API_URL", "VITE_SUPABASE_ANON_KEY"]
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
`buildEnv` is an allowlist. The selected profile values are injected only into
|
|
351
|
+
the local build command; values are never printed, undeclared values are not
|
|
352
|
+
passed through, and platform credentials or runtime secrets are rejected.
|
|
353
|
+
|
|
313
354
|
The two credential scopes are separate. Management-backed remote commands use
|
|
314
355
|
only `SUPACLOUD_API_URL` + `SUPACLOUD_API_TOKEN`. An application profile using
|
|
315
356
|
`SUPABASE_URL` + `SUPABASE_SERVICE_ROLE_KEY` can be auto-linked for `status`,
|
|
@@ -326,17 +367,17 @@ The `frontend` command keeps the existing deployment, Git, and tar.zst
|
|
|
326
367
|
actions and also exposes the immutable prebuilt release workflow:
|
|
327
368
|
|
|
328
369
|
```bash
|
|
329
|
-
supacloud
|
|
330
|
-
supacloud
|
|
331
|
-
supacloud
|
|
332
|
-
supacloud
|
|
333
|
-
supacloud
|
|
370
|
+
supacloud frontend list_releases --ref abc123 --id web
|
|
371
|
+
supacloud frontend get_active_release --ref abc123 --id web
|
|
372
|
+
supacloud frontend get_release --ref abc123 --id web --release_id <sha256>
|
|
373
|
+
supacloud frontend upload_release --ref abc123 --id web --archive_path ./dist.tar.zst
|
|
374
|
+
supacloud frontend activate_release --ref abc123 --id web \
|
|
334
375
|
--release_id <sha256> \
|
|
335
376
|
--expected_active_release_id absent \
|
|
336
377
|
--expected_activation_id absent \
|
|
337
378
|
--mutation_id <retry-stable-uuid-v4>
|
|
338
|
-
supacloud
|
|
339
|
-
supacloud
|
|
379
|
+
supacloud frontend rollback --ref abc123 --id web --release_id <retained-sha256>
|
|
380
|
+
supacloud frontend rollback --ref abc123 --id web
|
|
340
381
|
```
|
|
341
382
|
|
|
342
383
|
`upload_release` hashes and streams an existing regular tar.zst file without
|
|
@@ -365,11 +406,11 @@ must not be blindly retried.
|
|
|
365
406
|
Store a compiler-built HTTP/Worker application as one immutable release:
|
|
366
407
|
|
|
367
408
|
```bash
|
|
368
|
-
supacloud
|
|
409
|
+
supacloud applications upload_release --ref abc123 --id reviews \
|
|
369
410
|
--manifest_path ./generated/delivery/delivery.manifest.json
|
|
370
|
-
supacloud
|
|
371
|
-
supacloud
|
|
372
|
-
supacloud
|
|
411
|
+
supacloud applications list_releases --ref abc123 --id reviews --limit 50
|
|
412
|
+
supacloud applications get_release --ref abc123 --id reviews --release_id <sha256>
|
|
413
|
+
supacloud applications get_runtime --ref abc123 --id reviews --environment_id test
|
|
373
414
|
```
|
|
374
415
|
|
|
375
416
|
Upload verifies executable objects, transfers their inventory with multipart
|
|
@@ -407,10 +448,10 @@ environment. Saving a revision does not allocate ports, start processes, change
|
|
|
407
448
|
traffic or migrate data:
|
|
408
449
|
|
|
409
450
|
```bash
|
|
410
|
-
supacloud
|
|
411
|
-
supacloud
|
|
451
|
+
supacloud applications get_configuration --ref abc123 --id reviews --environment_id test
|
|
452
|
+
supacloud applications put_configuration --ref abc123 --id reviews --environment_id test \
|
|
412
453
|
--configuration_path ./application.test.json
|
|
413
|
-
supacloud
|
|
454
|
+
supacloud applications get_configuration --ref abc123 --id reviews --environment_id test \
|
|
414
455
|
--configuration_id <uuid>
|
|
415
456
|
```
|
|
416
457
|
|
|
@@ -473,12 +514,12 @@ The default Management API instance does not yet enable these endpoints.
|
|
|
473
514
|
For an explicitly composed test host:
|
|
474
515
|
|
|
475
516
|
```bash
|
|
476
|
-
supacloud
|
|
517
|
+
supacloud applications activate_release --ref abc123 --id reviews --environment_id test \
|
|
477
518
|
--release_id <release-sha256> --configuration_id <configuration-uuid> \
|
|
478
519
|
--activation_id <new-uuid> --expected_activation_id absent
|
|
479
|
-
supacloud
|
|
520
|
+
supacloud applications reconcile_activation --ref abc123 --id reviews --environment_id test \
|
|
480
521
|
--release_id <release-sha256> --activation_id <same-uuid>
|
|
481
|
-
supacloud
|
|
522
|
+
supacloud applications retire_activation --ref abc123 --id reviews --environment_id test \
|
|
482
523
|
--activation_id <stopped-and-unrouted-uuid>
|
|
483
524
|
```
|
|
484
525
|
|
|
@@ -510,26 +551,26 @@ missing, the platform begins project re-provisioning instead. It does not
|
|
|
510
551
|
restore a database backup and is never invoked automatically by the CLI.
|
|
511
552
|
|
|
512
553
|
```bash
|
|
513
|
-
supacloud
|
|
514
|
-
supacloud
|
|
554
|
+
supacloud project pause --ref abc123
|
|
555
|
+
supacloud release logical_backup_restore --ref abc123 \
|
|
515
556
|
--backup_id logical-full_abc123_<backup-id-suffix> \
|
|
516
557
|
--expected_sha256 <64-lowercase-hex> \
|
|
517
558
|
--restore_confirmation RESTORE_PROJECT:abc123:logical-full_abc123_<backup-id-suffix>:<64-lowercase-hex>
|
|
518
|
-
supacloud
|
|
559
|
+
supacloud project restore --ref abc123
|
|
519
560
|
```
|
|
520
561
|
|
|
521
562
|
```bash
|
|
522
|
-
supacloud
|
|
523
|
-
supacloud
|
|
524
|
-
supacloud
|
|
563
|
+
supacloud release logical_backup_list --ref abc123
|
|
564
|
+
supacloud release logical_backup_create --ref abc123
|
|
565
|
+
supacloud release logical_backup_restore --ref abc123 \
|
|
525
566
|
--backup_id logical-full_abc123_<backup-id-suffix> \
|
|
526
567
|
--expected_sha256 <64-lowercase-hex> \
|
|
527
568
|
--restore_confirmation RESTORE_PROJECT:abc123:logical-full_abc123_<backup-id-suffix>:<64-lowercase-hex>
|
|
528
|
-
supacloud
|
|
529
|
-
supacloud
|
|
530
|
-
supacloud
|
|
569
|
+
supacloud release postgrest_status --ref abc123
|
|
570
|
+
supacloud release postgrest_restart --ref abc123
|
|
571
|
+
supacloud release release_canary_fixture_stage_replay --ref abc123 \
|
|
531
572
|
--subject <central-subject-uuid> --request_id <stage-request-uuid>
|
|
532
|
-
supacloud
|
|
573
|
+
supacloud release release_canary_fixture_disable_replay --ref abc123 \
|
|
533
574
|
--fixture_id <fixture-uuid> --disable_request_id <disable-request-uuid> \
|
|
534
575
|
--issuer <issuer-url> --subject <central-subject-uuid>
|
|
535
576
|
```
|
|
@@ -581,25 +622,25 @@ base commit without manual JSON editing or risk of dirtying non-manifest fields.
|
|
|
581
622
|
|
|
582
623
|
```bash
|
|
583
624
|
# Rebind a single scope manifest to latest git main (or origin/main)
|
|
584
|
-
supacloud
|
|
625
|
+
supacloud release scope_rebind --file supacloud/fa/release-scopes/20260907-intake-p1-production.json
|
|
585
626
|
|
|
586
627
|
# Rebind multiple files (e.g. production and staging together)
|
|
587
|
-
supacloud
|
|
628
|
+
supacloud release scope_rebind --files "20260907-intake-p1-production.json,20260907-intake-p1-staging.json"
|
|
588
629
|
|
|
589
630
|
# Rebind all scopes matching a task ID or filename prefix in standard directories
|
|
590
|
-
supacloud
|
|
631
|
+
supacloud release scope_rebind --task 20260907-intake-p1
|
|
591
632
|
|
|
592
633
|
# Specify an explicit base commit SHA or git ref
|
|
593
|
-
supacloud
|
|
634
|
+
supacloud release scope_rebind --task 20260907-intake-p1 --base_commit origin/main
|
|
594
635
|
|
|
595
636
|
# Preview changes without modifying files
|
|
596
|
-
supacloud
|
|
637
|
+
supacloud release scope_rebind --task 20260907-intake-p1 --dry_run
|
|
597
638
|
|
|
598
639
|
# Inspect scope status, SHA-256 hash, and alignment with git HEAD / origin/main
|
|
599
|
-
supacloud
|
|
640
|
+
supacloud release scope_inspect --file 20260907-intake-p1-production.json
|
|
600
641
|
|
|
601
642
|
# Scaffold a new canonical release scope
|
|
602
|
-
supacloud
|
|
643
|
+
supacloud release scope_create \
|
|
603
644
|
--file supacloud/fa/release-scopes/20260907-intake-p1.json \
|
|
604
645
|
--task FA-INTAKE-P1 \
|
|
605
646
|
--ref abc123 \
|
|
@@ -622,7 +663,7 @@ Production writes require an explicit confirmation equal to the selected
|
|
|
622
663
|
profile's project ref:
|
|
623
664
|
|
|
624
665
|
```bash
|
|
625
|
-
supacloud
|
|
666
|
+
supacloud database push_migrations --env prod \
|
|
626
667
|
--ref production-ref --dir supabase/migrations \
|
|
627
668
|
--confirm-production production-ref
|
|
628
669
|
```
|
|
@@ -647,44 +688,44 @@ API token or service-role key.
|
|
|
647
688
|
Examples:
|
|
648
689
|
|
|
649
690
|
```bash
|
|
650
|
-
supacloud
|
|
651
|
-
supacloud
|
|
652
|
-
supacloud
|
|
653
|
-
supacloud
|
|
654
|
-
supacloud
|
|
655
|
-
supacloud
|
|
656
|
-
supacloud
|
|
657
|
-
supacloud
|
|
658
|
-
supacloud
|
|
659
|
-
supacloud
|
|
660
|
-
supacloud
|
|
661
|
-
supacloud
|
|
662
|
-
supacloud
|
|
663
|
-
supacloud
|
|
664
|
-
supacloud
|
|
665
|
-
supacloud
|
|
666
|
-
supacloud
|
|
667
|
-
supacloud
|
|
668
|
-
supacloud
|
|
669
|
-
supacloud
|
|
670
|
-
supacloud
|
|
671
|
-
supacloud
|
|
672
|
-
supacloud
|
|
673
|
-
supacloud
|
|
674
|
-
supacloud
|
|
675
|
-
supacloud
|
|
676
|
-
supacloud
|
|
677
|
-
supacloud
|
|
678
|
-
supacloud
|
|
679
|
-
supacloud
|
|
680
|
-
supacloud
|
|
681
|
-
supacloud
|
|
682
|
-
supacloud
|
|
691
|
+
supacloud status
|
|
692
|
+
supacloud project get
|
|
693
|
+
supacloud project logs --log_type database
|
|
694
|
+
supacloud project task_stats
|
|
695
|
+
supacloud project task_detail --task_id task_123
|
|
696
|
+
supacloud queue stats --queue emails
|
|
697
|
+
supacloud queue dlq --queue emails --limit 20
|
|
698
|
+
supacloud task_events inspect_webhook --ref abc123
|
|
699
|
+
supacloud database query --sql "select now()"
|
|
700
|
+
supacloud database query --ref abc123 --file ./queries/vector-search.sql
|
|
701
|
+
supacloud database migration_inventory --ref abc123
|
|
702
|
+
supacloud database lint_migrations --dir supabase/migrations
|
|
703
|
+
supacloud database rebase_migrations --dir supabase/migrations --baseline_file backups/schema.sql --baseline_version 20261008000000 --output_dir supabase/migrations-rebased
|
|
704
|
+
supacloud database push_migrations --ref abc123 --dir supabase/migrations --dry_run
|
|
705
|
+
supacloud supabase migration_new --name add_accounts
|
|
706
|
+
supacloud supabase db_diff --schema public --name add_accounts
|
|
707
|
+
supacloud supabase push --ref abc123 --dir supabase/migrations --dry_run
|
|
708
|
+
supacloud frontend list --ref abc123
|
|
709
|
+
supacloud branch create --name feature-orders --data_mode schema_only
|
|
710
|
+
supacloud branch promotion_plan --branch_ref preview123
|
|
711
|
+
supacloud branch promote --branch_ref preview123 --plan_checksum <sha256>
|
|
712
|
+
supacloud edge_functions get_config --ref abc123 --slug hello
|
|
713
|
+
supacloud edge_functions deploy --ref abc123 --slug hello --path ./supabase/functions/hello --expected-active-version absent --expected-activation-id legacy
|
|
714
|
+
supacloud edge_functions deploy --ref abc123 --slug hello --prebundled-path ./dist/hello.js --expected-sha256 <sha256> --expected-active-version 4 --expected-activation-id <uuid>
|
|
715
|
+
supacloud edge_functions deploy_bundle --ref abc123 --slug hello --files '{"index.ts":"export default { fetch: () => new Response(\"ok\") }"}' --expected-active-version 7 --expected-activation-id <uuid>
|
|
716
|
+
supacloud edge_functions source --ref abc123 --slug hello --version 7 --output ./hello-v7.ts
|
|
717
|
+
supacloud edge_functions activate --ref abc123 --slug hello --version 3 --expected-active-version 8 --expected-activation-id <uuid>
|
|
718
|
+
supacloud edge_functions delete --ref abc123 --slug hello --expected-activation-id <uuid>
|
|
719
|
+
supacloud scheduled_functions list --ref abc123
|
|
720
|
+
supacloud secrets upsert --ref abc123 --from-env API_KEY,WEBHOOK_SECRET
|
|
721
|
+
supacloud storage list_buckets --ref abc123
|
|
722
|
+
supacloud storage get_bucket --ref abc123 --bucket reports
|
|
723
|
+
supacloud storage create_bucket --ref abc123 --bucket reports --public false \
|
|
683
724
|
--file_size_limit 10485760 --allowed_mime_types "application/pdf,image/png"
|
|
684
|
-
supacloud
|
|
725
|
+
supacloud storage update_bucket --ref abc123 --bucket reports \
|
|
685
726
|
--expected_revision <revision-from-get_bucket> \
|
|
686
727
|
--allowed_mime_types '["application/pdf"]'
|
|
687
|
-
supacloud
|
|
728
|
+
supacloud storage delete_bucket --ref abc123 --bucket reports \
|
|
688
729
|
--expected_revision <revision-from-get_bucket> --require_empty true
|
|
689
730
|
```
|
|
690
731
|
|
|
@@ -700,7 +741,7 @@ human-readable behavior.
|
|
|
700
741
|
with the separate read-only `/database/migrations/inventory` endpoint:
|
|
701
742
|
|
|
702
743
|
```bash
|
|
703
|
-
supacloud
|
|
744
|
+
supacloud database delivery_migration_plan --ref abc123 \
|
|
704
745
|
--delivery_manifest /archive/delivery/delivery.manifest.json --delivery_target api
|
|
705
746
|
```
|
|
706
747
|
|
|
@@ -858,12 +899,12 @@ activation targets still require a positive version.
|
|
|
858
899
|
Scheduled Function lifecycle operations are also project-scoped:
|
|
859
900
|
|
|
860
901
|
```bash
|
|
861
|
-
supacloud
|
|
902
|
+
supacloud scheduled_functions create --ref abc123 --name nightly \
|
|
862
903
|
--slug cleanup --cron "0 2 * * *" --method POST
|
|
863
|
-
supacloud
|
|
864
|
-
supacloud
|
|
904
|
+
supacloud scheduled_functions get --ref abc123 --schedule_id <id>
|
|
905
|
+
supacloud scheduled_functions update --ref abc123 --schedule_id <id> \
|
|
865
906
|
--expected_updated_at <updated_at-from-list> --cron "0 3 * * *"
|
|
866
|
-
supacloud
|
|
907
|
+
supacloud scheduled_functions delete --ref abc123 --schedule_id <id> \
|
|
867
908
|
--expected_updated_at <updated_at-from-list>
|
|
868
909
|
```
|
|
869
910
|
|
|
@@ -884,11 +925,12 @@ whether the body is empty and the configured header names. Update receipts bind
|
|
|
884
925
|
delete receipts return the matched revision as `deleted_updated_at`.
|
|
885
926
|
|
|
886
927
|
For secret writes, `--from-env` accepts a comma-separated list of environment
|
|
887
|
-
variable names. The CLI reads each non-empty value from
|
|
888
|
-
|
|
889
|
-
printed. Names must be unique
|
|
890
|
-
up to 256 characters).
|
|
891
|
-
|
|
928
|
+
variable names. The CLI reads each non-empty value from the currently selected
|
|
929
|
+
profile source, such as `.env.supacloud.test` selected by `--env test`; command
|
|
930
|
+
arguments contain names only and values are never printed. Names must be unique
|
|
931
|
+
shell-style identifiers (`[A-Za-z_][A-Za-z0-9_]*`, up to 256 characters).
|
|
932
|
+
Missing or empty values fail before any HTTP request. Do not combine
|
|
933
|
+
`--from-env` with the compatibility `--secrets` input.
|
|
892
934
|
|
|
893
935
|
Branch promotion is migration-first. `branch promotion_plan` prints pending
|
|
894
936
|
versions, names, statement counts, and checksums without echoing SQL into terminal
|
|
@@ -902,20 +944,20 @@ break-glass API mode and is intentionally not exposed by this project CLI.
|
|
|
902
944
|
## SupaCloud Lite CLI adapter
|
|
903
945
|
|
|
904
946
|
Lite can be used from its standalone `supacloud-lite` CLI and from the main
|
|
905
|
-
`supacloud
|
|
947
|
+
`supacloud` through the local-only `lite` module. The adapter never calls
|
|
906
948
|
the Management API, never invokes the official Supabase CLI, and never treats a
|
|
907
949
|
PGlite data directory as a Postgres DSN.
|
|
908
950
|
|
|
909
951
|
```bash
|
|
910
|
-
supacloud
|
|
911
|
-
supacloud
|
|
912
|
-
supacloud
|
|
913
|
-
supacloud
|
|
914
|
-
supacloud
|
|
915
|
-
supacloud
|
|
916
|
-
supacloud
|
|
917
|
-
supacloud
|
|
918
|
-
supacloud
|
|
952
|
+
supacloud lite migrate --project_dir .
|
|
953
|
+
supacloud lite status --project_dir .
|
|
954
|
+
supacloud lite db_diff --project_dir . --file add_accounts
|
|
955
|
+
supacloud lite db_pull --project_dir . --file remote_schema
|
|
956
|
+
supacloud lite db_pull --project_dir . --file reviewed_schema --baseline
|
|
957
|
+
supacloud lite gen_types --project_dir . --output src/database.types.ts
|
|
958
|
+
supacloud lite snapshot_create --project_dir . --output backups/lite.tar.gz
|
|
959
|
+
supacloud lite doctor --project_dir . --json
|
|
960
|
+
supacloud lite start --project_dir . --port 54321
|
|
919
961
|
```
|
|
920
962
|
|
|
921
963
|
The adapter resolves the executable in this order:
|
|
@@ -943,29 +985,29 @@ open-source Supabase CLI. It is not a fork. Local authoring commands work withou
|
|
|
943
985
|
SupaCloud credentials:
|
|
944
986
|
|
|
945
987
|
```bash
|
|
946
|
-
supacloud
|
|
947
|
-
supacloud
|
|
948
|
-
supacloud
|
|
949
|
-
supacloud
|
|
950
|
-
supacloud
|
|
988
|
+
supacloud supabase version
|
|
989
|
+
supacloud supabase init --workdir .
|
|
990
|
+
supacloud supabase migration_new --name add_accounts
|
|
991
|
+
supacloud supabase db_diff --schema public --name add_accounts
|
|
992
|
+
supacloud supabase db_reset --no_seed
|
|
951
993
|
```
|
|
952
994
|
|
|
953
995
|
Remote inspection and backup commands require an explicit, percent-encoded
|
|
954
996
|
Postgres DSN:
|
|
955
997
|
|
|
956
998
|
```bash
|
|
957
|
-
supacloud
|
|
958
|
-
supacloud
|
|
959
|
-
supacloud
|
|
960
|
-
supacloud
|
|
999
|
+
supacloud supabase db_pull --db_url "$SUPACLOUD_DB_URL" --declarative
|
|
1000
|
+
supacloud supabase migration_list --db_url "$SUPACLOUD_DB_URL"
|
|
1001
|
+
supacloud supabase db_dump --db_url "$SUPACLOUD_DB_URL" --file backups/schema.sql
|
|
1002
|
+
supacloud supabase gen_types --db_url "$SUPACLOUD_DB_URL" --schema public --file src/database.types.ts
|
|
961
1003
|
```
|
|
962
1004
|
|
|
963
1005
|
Remote migration application intentionally stays on SupaCloud's existing
|
|
964
1006
|
project-authenticated API:
|
|
965
1007
|
|
|
966
1008
|
```bash
|
|
967
|
-
supacloud
|
|
968
|
-
supacloud
|
|
1009
|
+
supacloud supabase push --ref abc123 --dir supabase/migrations --dry_run
|
|
1010
|
+
supacloud supabase push --ref abc123 --dir supabase/migrations
|
|
969
1011
|
```
|
|
970
1012
|
|
|
971
1013
|
`push` uses only `SUPACLOUD_API_TOKEN` for the SupaCloud Management API. That
|
|
@@ -982,17 +1024,17 @@ the adapter does not install a new CLI or replace an existing schema authority.
|
|
|
982
1024
|
`init` preserves existing configuration and inherits the installed CLI's defaults.
|
|
983
1025
|
|
|
984
1026
|
```bash
|
|
985
|
-
supacloud
|
|
986
|
-
supacloud
|
|
987
|
-
supacloud
|
|
988
|
-
supacloud
|
|
989
|
-
supacloud
|
|
990
|
-
supacloud
|
|
991
|
-
supacloud
|
|
992
|
-
SUPACLOUD_ENABLE_NATIVE_STACK=1 supacloud
|
|
993
|
-
SUPACLOUD_ENABLE_NATIVE_STACK=1 supacloud
|
|
994
|
-
supacloud
|
|
995
|
-
supacloud
|
|
1027
|
+
supacloud supabase db_schema_declarative_generate --db_url "$SUPACLOUD_DB_URL"
|
|
1028
|
+
supacloud supabase db_schema_declarative_sync --name add_accounts --strict_coverage
|
|
1029
|
+
supacloud supabase db_diff --diff_engine pg-delta --name add_accounts
|
|
1030
|
+
supacloud supabase config_pull --ref upstream-project
|
|
1031
|
+
supacloud supabase config_pull --ref upstream-project --dry_run=false --yes
|
|
1032
|
+
supacloud supabase stack_start --workdir .
|
|
1033
|
+
supacloud supabase stack_status --workdir .
|
|
1034
|
+
SUPACLOUD_ENABLE_NATIVE_STACK=1 supacloud supabase stack_prepare --workdir . --runtime native
|
|
1035
|
+
SUPACLOUD_ENABLE_NATIVE_STACK=1 supacloud supabase stack_start --workdir . --runtime native --preparation on-demand
|
|
1036
|
+
supacloud supabase stack_stop --workdir .
|
|
1037
|
+
supacloud supabase stack_destroy --workdir . --confirm_destroy --yes
|
|
996
1038
|
```
|
|
997
1039
|
|
|
998
1040
|
Declarative sync generates without applying unless `--apply` is explicit.
|
|
@@ -1030,7 +1072,7 @@ If the live database already contains reviewed historical changes, first pull,
|
|
|
1030
1072
|
back up, and prove schema equivalence. Then preview the controlled tracking sync:
|
|
1031
1073
|
|
|
1032
1074
|
```bash
|
|
1033
|
-
supacloud
|
|
1075
|
+
supacloud database baseline_migrations --ref abc123 --dir supabase/migrations --dry_run
|
|
1034
1076
|
```
|
|
1035
1077
|
|
|
1036
1078
|
Only after explicit approval, rerun without `--dry_run`. This records migration
|
|
@@ -1058,9 +1100,9 @@ Transaction boundary: SupaCloud supports transaction blocks inside one SQL reque
|
|
|
1058
1100
|
Auth configuration commands accept a JSON object from the CLI:
|
|
1059
1101
|
|
|
1060
1102
|
```bash
|
|
1061
|
-
supacloud
|
|
1103
|
+
supacloud auth update_settings --ref abc123 \
|
|
1062
1104
|
--config '{"disable_signup":true,"enable_signup":false}'
|
|
1063
|
-
supacloud
|
|
1105
|
+
supacloud auth update_config --ref abc123 \
|
|
1064
1106
|
--config '{"third_party_auth":{"enabled":true}}'
|
|
1065
1107
|
```
|
|
1066
1108
|
|
|
@@ -1135,14 +1177,14 @@ Gateway / Caddy commands (require admin privileges; config is injected via the C
|
|
|
1135
1177
|
- `gateway verify_custom_hostname` — verify a custom hostname
|
|
1136
1178
|
|
|
1137
1179
|
```bash
|
|
1138
|
-
supacloud
|
|
1139
|
-
supacloud
|
|
1180
|
+
supacloud gateway routes --ref abc123
|
|
1181
|
+
supacloud gateway upsert_route --ref abc123 --route_id webhook \
|
|
1140
1182
|
--hosts "api.example.com" --paths "/webhook/*" --upstream 10.0.0.5:8080
|
|
1141
|
-
supacloud
|
|
1183
|
+
supacloud gateway upsert_route --ref abc123 --route_id canonical-https \
|
|
1142
1184
|
--hosts "www.example.com" --paths "/*" --protocol http \
|
|
1143
1185
|
--redirect_to 'https://www.example.com{http.request.uri}' --redirect_status 308
|
|
1144
|
-
supacloud
|
|
1145
|
-
supacloud
|
|
1186
|
+
supacloud gateway config --ref abc123 --rate_limit_tier pro
|
|
1187
|
+
supacloud gateway rebuild --ref abc123 --clean
|
|
1146
1188
|
```
|
|
1147
1189
|
|
|
1148
1190
|
For server installation, SSH diagnostics, and tenant administration, use `@supacloud/admin`.
|