vaulter 1.0.65 → 1.0.70
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 +278 -104
- package/dist/cli/commands/apply.d.ts +15 -0
- package/dist/cli/commands/apply.d.ts.map +1 -0
- package/dist/cli/commands/apply.js +137 -0
- package/dist/cli/commands/apply.js.map +1 -0
- package/dist/cli/commands/change.d.ts +33 -0
- package/dist/cli/commands/change.d.ts.map +1 -0
- package/dist/cli/commands/change.js +621 -0
- package/dist/cli/commands/change.js.map +1 -0
- package/dist/cli/commands/diff.d.ts +15 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/diff.js +123 -0
- package/dist/cli/commands/diff.js.map +1 -0
- package/dist/cli/commands/init.js +1 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/local/delete.d.ts.map +1 -1
- package/dist/cli/commands/local/delete.js +12 -1
- package/dist/cli/commands/local/delete.js.map +1 -1
- package/dist/cli/commands/local/diff.d.ts.map +1 -1
- package/dist/cli/commands/local/diff.js +12 -0
- package/dist/cli/commands/local/diff.js.map +1 -1
- package/dist/cli/commands/local/index.js +2 -2
- package/dist/cli/commands/local/index.js.map +1 -1
- package/dist/cli/commands/local/init.d.ts.map +1 -1
- package/dist/cli/commands/local/init.js +13 -2
- package/dist/cli/commands/local/init.js.map +1 -1
- package/dist/cli/commands/local/pull.d.ts.map +1 -1
- package/dist/cli/commands/local/pull.js +2 -11
- package/dist/cli/commands/local/pull.js.map +1 -1
- package/dist/cli/commands/local/push.d.ts.map +1 -1
- package/dist/cli/commands/local/push.js +12 -0
- package/dist/cli/commands/local/push.js.map +1 -1
- package/dist/cli/commands/local/set.d.ts +1 -1
- package/dist/cli/commands/local/set.d.ts.map +1 -1
- package/dist/cli/commands/local/set.js +13 -2
- package/dist/cli/commands/local/set.js.map +1 -1
- package/dist/cli/commands/local/status.js +1 -1
- package/dist/cli/commands/local/status.js.map +1 -1
- package/dist/cli/commands/local/sync.js +1 -1
- package/dist/cli/commands/local/sync.js.map +1 -1
- package/dist/cli/commands/plan.d.ts +14 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +159 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/rotation.js +1 -1
- package/dist/cli/commands/rotation.js.map +1 -1
- package/dist/cli/commands/service/dedupe.d.ts.map +1 -1
- package/dist/cli/commands/service/dedupe.js +4 -8
- package/dist/cli/commands/service/dedupe.js.map +1 -1
- package/dist/cli/commands/services.js +2 -2
- package/dist/cli/commands/services.js.map +1 -1
- package/dist/cli/commands/status.d.ts +21 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +714 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/index.js +194 -98
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/lib/colors.d.ts +1 -0
- package/dist/cli/lib/colors.d.ts.map +1 -1
- package/dist/cli/lib/colors.js +2 -0
- package/dist/cli/lib/colors.js.map +1 -1
- package/dist/cli/lib/create-client.d.ts.map +1 -1
- package/dist/cli/lib/create-client.js +15 -0
- package/dist/cli/lib/create-client.js.map +1 -1
- package/dist/cli/lib/error-hints.d.ts +6 -0
- package/dist/cli/lib/error-hints.d.ts.map +1 -0
- package/dist/cli/lib/error-hints.js +5 -0
- package/dist/cli/lib/error-hints.js.map +1 -0
- package/dist/cli/tui/app.d.ts.map +1 -1
- package/dist/cli/tui/app.js +2 -23
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli/tui/dashboard.js +1 -1
- package/dist/cli/tui/dashboard.js.map +1 -1
- package/dist/cli/tui/secrets-explorer/entry.d.ts.map +1 -1
- package/dist/cli/tui/secrets-explorer/entry.js +2 -34
- package/dist/cli/tui/secrets-explorer/entry.js.map +1 -1
- package/dist/cli/tui/tabs/audit-tab.d.ts +1 -2
- package/dist/cli/tui/tabs/audit-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/audit-tab.js +2 -3
- package/dist/cli/tui/tabs/audit-tab.js.map +1 -1
- package/dist/client.d.ts +3 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +14 -8
- package/dist/client.js.map +1 -1
- package/dist/domain/apply.d.ts +47 -0
- package/dist/domain/apply.d.ts.map +1 -0
- package/dist/domain/apply.js +144 -0
- package/dist/domain/apply.js.map +1 -0
- package/dist/domain/governance.d.ts +50 -0
- package/dist/domain/governance.d.ts.map +1 -0
- package/dist/domain/governance.js +456 -0
- package/dist/domain/governance.js.map +1 -0
- package/dist/domain/index.d.ts +22 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +22 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/inventory.d.ts +30 -0
- package/dist/domain/inventory.d.ts.map +1 -0
- package/dist/domain/inventory.js +175 -0
- package/dist/domain/inventory.js.map +1 -0
- package/dist/domain/plan.d.ts +65 -0
- package/dist/domain/plan.d.ts.map +1 -0
- package/dist/domain/plan.js +343 -0
- package/dist/domain/plan.js.map +1 -0
- package/dist/domain/scorecard.d.ts +34 -0
- package/dist/domain/scorecard.d.ts.map +1 -0
- package/dist/domain/scorecard.js +216 -0
- package/dist/domain/scorecard.js.map +1 -0
- package/dist/domain/state.d.ts +87 -0
- package/dist/domain/state.d.ts.map +1 -0
- package/dist/domain/state.js +428 -0
- package/dist/domain/state.js.map +1 -0
- package/dist/domain/types.d.ts +386 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/domain/types.js +161 -0
- package/dist/domain/types.js.map +1 -0
- package/dist/lib/backend-sync.d.ts +5 -7
- package/dist/lib/backend-sync.d.ts.map +1 -1
- package/dist/lib/backend-sync.js +96 -74
- package/dist/lib/backend-sync.js.map +1 -1
- package/dist/lib/crypto.d.ts.map +1 -1
- package/dist/lib/crypto.js +16 -23
- package/dist/lib/crypto.js.map +1 -1
- package/dist/lib/error-hints.d.ts +27 -0
- package/dist/lib/error-hints.d.ts.map +1 -0
- package/dist/lib/error-hints.js +132 -0
- package/dist/lib/error-hints.js.map +1 -0
- package/dist/lib/errors.js +2 -2
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/init-generator.d.ts.map +1 -1
- package/dist/lib/init-generator.js +6 -0
- package/dist/lib/init-generator.js.map +1 -1
- package/dist/lib/local-ops.d.ts +3 -3
- package/dist/lib/local-ops.d.ts.map +1 -1
- package/dist/lib/local-ops.js +111 -69
- package/dist/lib/local-ops.js.map +1 -1
- package/dist/lib/local.d.ts +22 -4
- package/dist/lib/local.d.ts.map +1 -1
- package/dist/lib/local.js +49 -9
- package/dist/lib/local.js.map +1 -1
- package/dist/lib/monorepo.d.ts +40 -1
- package/dist/lib/monorepo.d.ts.map +1 -1
- package/dist/lib/monorepo.js +190 -4
- package/dist/lib/monorepo.js.map +1 -1
- package/dist/lib/output.d.ts +0 -3
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +6 -2
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/root-gitignore.d.ts +14 -0
- package/dist/lib/root-gitignore.d.ts.map +1 -0
- package/dist/lib/root-gitignore.js +54 -0
- package/dist/lib/root-gitignore.js.map +1 -0
- package/dist/lib/scope-policy.d.ts +81 -0
- package/dist/lib/scope-policy.d.ts.map +1 -0
- package/dist/lib/scope-policy.js +269 -0
- package/dist/lib/scope-policy.js.map +1 -0
- package/dist/lib/snapshot-ops.js +1 -1
- package/dist/lib/snapshot-ops.js.map +1 -1
- package/dist/lib/sync-plan.d.ts +76 -0
- package/dist/lib/sync-plan.d.ts.map +1 -0
- package/dist/lib/sync-plan.js +205 -0
- package/dist/lib/sync-plan.js.map +1 -0
- package/dist/lib/variable-validation.d.ts +33 -0
- package/dist/lib/variable-validation.d.ts.map +1 -0
- package/dist/lib/variable-validation.js +137 -0
- package/dist/lib/variable-validation.js.map +1 -0
- package/dist/lib/write-guard.d.ts +25 -0
- package/dist/lib/write-guard.d.ts.map +1 -0
- package/dist/lib/write-guard.js +59 -0
- package/dist/lib/write-guard.js.map +1 -0
- package/dist/mcp/prompts.d.ts +26 -21
- package/dist/mcp/prompts.d.ts.map +1 -1
- package/dist/mcp/prompts.js +107 -1754
- package/dist/mcp/prompts.js.map +1 -1
- package/dist/mcp/resources.d.ts +18 -27
- package/dist/mcp/resources.d.ts.map +1 -1
- package/dist/mcp/resources.js +242 -1677
- package/dist/mcp/resources.js.map +1 -1
- package/dist/mcp/server.d.ts +7 -7
- package/dist/mcp/server.js +9 -9
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/config.d.ts +7 -1
- package/dist/mcp/tools/config.d.ts.map +1 -1
- package/dist/mcp/tools/config.js +15 -3
- package/dist/mcp/tools/config.js.map +1 -1
- package/dist/mcp/tools/definitions.d.ts +12 -7
- package/dist/mcp/tools/definitions.d.ts.map +1 -1
- package/dist/mcp/tools/definitions.js +269 -681
- package/dist/mcp/tools/definitions.js.map +1 -1
- package/dist/mcp/tools/handlers/apply.d.ts +8 -0
- package/dist/mcp/tools/handlers/apply.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/apply.js +72 -0
- package/dist/mcp/tools/handlers/apply.js.map +1 -0
- package/dist/mcp/tools/handlers/change.d.ts +9 -0
- package/dist/mcp/tools/handlers/change.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/change.js +175 -0
- package/dist/mcp/tools/handlers/change.js.map +1 -0
- package/dist/mcp/tools/handlers/diff.d.ts +8 -0
- package/dist/mcp/tools/handlers/diff.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/diff.js +67 -0
- package/dist/mcp/tools/handlers/diff.js.map +1 -0
- package/dist/mcp/tools/handlers/export.d.ts +10 -0
- package/dist/mcp/tools/handlers/export.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/export.js +217 -0
- package/dist/mcp/tools/handlers/export.js.map +1 -0
- package/dist/mcp/tools/handlers/init.d.ts +3 -6
- package/dist/mcp/tools/handlers/init.d.ts.map +1 -1
- package/dist/mcp/tools/handlers/init.js +22 -72
- package/dist/mcp/tools/handlers/init.js.map +1 -1
- package/dist/mcp/tools/handlers/key.d.ts +9 -0
- package/dist/mcp/tools/handlers/key.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/key.js +326 -0
- package/dist/mcp/tools/handlers/key.js.map +1 -0
- package/dist/mcp/tools/handlers/local.d.ts +10 -85
- package/dist/mcp/tools/handlers/local.d.ts.map +1 -1
- package/dist/mcp/tools/handlers/local.js +351 -468
- package/dist/mcp/tools/handlers/local.js.map +1 -1
- package/dist/mcp/tools/handlers/nuke.d.ts +9 -0
- package/dist/mcp/tools/handlers/nuke.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/nuke.js +30 -0
- package/dist/mcp/tools/handlers/nuke.js.map +1 -0
- package/dist/mcp/tools/handlers/plan.d.ts +8 -0
- package/dist/mcp/tools/handlers/plan.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/plan.js +75 -0
- package/dist/mcp/tools/handlers/plan.js.map +1 -0
- package/dist/mcp/tools/handlers/read.d.ts +15 -0
- package/dist/mcp/tools/handlers/read.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/read.js +57 -0
- package/dist/mcp/tools/handlers/read.js.map +1 -0
- package/dist/mcp/tools/handlers/run.d.ts +12 -0
- package/dist/mcp/tools/handlers/run.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/run.js +203 -0
- package/dist/mcp/tools/handlers/run.js.map +1 -0
- package/dist/mcp/tools/handlers/search.d.ts +11 -0
- package/dist/mcp/tools/handlers/search.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/search.js +124 -0
- package/dist/mcp/tools/handlers/search.js.map +1 -0
- package/dist/mcp/tools/handlers/services.d.ts +8 -0
- package/dist/mcp/tools/handlers/services.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/services.js +39 -0
- package/dist/mcp/tools/handlers/services.js.map +1 -0
- package/dist/mcp/tools/handlers/snapshot.d.ts +10 -0
- package/dist/mcp/tools/handlers/snapshot.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/snapshot.js +141 -0
- package/dist/mcp/tools/handlers/snapshot.js.map +1 -0
- package/dist/mcp/tools/handlers/status.d.ts +8 -0
- package/dist/mcp/tools/handlers/status.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/status.js +341 -0
- package/dist/mcp/tools/handlers/status.js.map +1 -0
- package/dist/mcp/tools/handlers/versions.d.ts +10 -0
- package/dist/mcp/tools/handlers/versions.d.ts.map +1 -0
- package/dist/mcp/tools/handlers/versions.js +139 -0
- package/dist/mcp/tools/handlers/versions.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +13 -5
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +158 -246
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools.d.ts +2 -10
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +2 -19
- package/dist/mcp/tools.js.map +1 -1
- package/dist/types.d.ts +44 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +5 -4
- package/dist/cli/commands/delete.d.ts +0 -25
- package/dist/cli/commands/delete.d.ts.map +0 -1
- package/dist/cli/commands/delete.js +0 -118
- package/dist/cli/commands/delete.js.map +0 -1
- package/dist/cli/commands/doctor.d.ts +0 -21
- package/dist/cli/commands/doctor.d.ts.map +0 -1
- package/dist/cli/commands/doctor.js +0 -446
- package/dist/cli/commands/doctor.js.map +0 -1
- package/dist/cli/commands/get.d.ts +0 -24
- package/dist/cli/commands/get.d.ts.map +0 -1
- package/dist/cli/commands/get.js +0 -118
- package/dist/cli/commands/get.js.map +0 -1
- package/dist/cli/commands/pull.d.ts +0 -32
- package/dist/cli/commands/pull.d.ts.map +0 -1
- package/dist/cli/commands/pull.js +0 -196
- package/dist/cli/commands/pull.js.map +0 -1
- package/dist/cli/commands/push.d.ts +0 -29
- package/dist/cli/commands/push.d.ts.map +0 -1
- package/dist/cli/commands/push.js +0 -322
- package/dist/cli/commands/push.js.map +0 -1
- package/dist/cli/commands/rollback.d.ts +0 -8
- package/dist/cli/commands/rollback.d.ts.map +0 -1
- package/dist/cli/commands/rollback.js +0 -109
- package/dist/cli/commands/rollback.js.map +0 -1
- package/dist/cli/commands/set.d.ts +0 -35
- package/dist/cli/commands/set.d.ts.map +0 -1
- package/dist/cli/commands/set.js +0 -424
- package/dist/cli/commands/set.js.map +0 -1
- package/dist/cli/commands/sync/index.d.ts +0 -33
- package/dist/cli/commands/sync/index.d.ts.map +0 -1
- package/dist/cli/commands/sync/index.js +0 -275
- package/dist/cli/commands/sync/index.js.map +0 -1
- package/dist/cli/commands/sync.d.ts +0 -26
- package/dist/cli/commands/sync.d.ts.map +0 -1
- package/dist/cli/commands/sync.js +0 -371
- package/dist/cli/commands/sync.js.map +0 -1
- package/dist/cli/commands/var/index.d.ts +0 -31
- package/dist/cli/commands/var/index.d.ts.map +0 -1
- package/dist/cli/commands/var/index.js +0 -119
- package/dist/cli/commands/var/index.js.map +0 -1
- package/dist/cli/commands/versions.d.ts +0 -8
- package/dist/cli/commands/versions.d.ts.map +0 -1
- package/dist/cli/commands/versions.js +0 -135
- package/dist/cli/commands/versions.js.map +0 -1
- package/dist/mcp/tools/handlers/analysis.d.ts +0 -13
- package/dist/mcp/tools/handlers/analysis.d.ts.map +0 -1
- package/dist/mcp/tools/handlers/analysis.js +0 -195
- package/dist/mcp/tools/handlers/analysis.js.map +0 -1
- package/dist/mcp/tools/handlers/batch.d.ts +0 -12
- package/dist/mcp/tools/handlers/batch.d.ts.map +0 -1
- package/dist/mcp/tools/handlers/batch.js +0 -171
- package/dist/mcp/tools/handlers/batch.js.map +0 -1
- package/dist/mcp/tools/handlers/core.d.ts +0 -15
- package/dist/mcp/tools/handlers/core.d.ts.map +0 -1
- package/dist/mcp/tools/handlers/core.js +0 -179
- package/dist/mcp/tools/handlers/core.js.map +0 -1
- package/dist/mcp/tools/handlers/doctor.d.ts +0 -32
- package/dist/mcp/tools/handlers/doctor.d.ts.map +0 -1
- package/dist/mcp/tools/handlers/doctor.js +0 -1019
- package/dist/mcp/tools/handlers/doctor.js.map +0 -1
- package/dist/mcp/tools/handlers/iac.d.ts +0 -17
- package/dist/mcp/tools/handlers/iac.d.ts.map +0 -1
- package/dist/mcp/tools/handlers/iac.js +0 -131
- package/dist/mcp/tools/handlers/iac.js.map +0 -1
- package/dist/mcp/tools/handlers/k8s.d.ts +0 -11
- package/dist/mcp/tools/handlers/k8s.d.ts.map +0 -1
- package/dist/mcp/tools/handlers/k8s.js +0 -117
- package/dist/mcp/tools/handlers/k8s.js.map +0 -1
- package/dist/mcp/tools/handlers/keys.d.ts +0 -54
- package/dist/mcp/tools/handlers/keys.d.ts.map +0 -1
- package/dist/mcp/tools/handlers/keys.js +0 -561
- package/dist/mcp/tools/handlers/keys.js.map +0 -1
- package/dist/mcp/tools/handlers/monorepo.d.ts +0 -29
- package/dist/mcp/tools/handlers/monorepo.d.ts.map +0 -1
- package/dist/mcp/tools/handlers/monorepo.js +0 -329
- package/dist/mcp/tools/handlers/monorepo.js.map +0 -1
- package/dist/mcp/tools/handlers/sync.d.ts +0 -11
- package/dist/mcp/tools/handlers/sync.d.ts.map +0 -1
- package/dist/mcp/tools/handlers/sync.js +0 -77
- package/dist/mcp/tools/handlers/sync.js.map +0 -1
- package/dist/mcp/tools/handlers/utility.d.ts +0 -29
- package/dist/mcp/tools/handlers/utility.d.ts.map +0 -1
- package/dist/mcp/tools/handlers/utility.js +0 -245
- package/dist/mcp/tools/handlers/utility.js.map +0 -1
- package/dist/mcp/tools/handlers/versioning.d.ts +0 -33
- package/dist/mcp/tools/handlers/versioning.d.ts.map +0 -1
- package/dist/mcp/tools/handlers/versioning.js +0 -208
- package/dist/mcp/tools/handlers/versioning.js.map +0 -1
package/README.md
CHANGED
|
@@ -26,14 +26,81 @@ curl -fsSL https://raw.githubusercontent.com/forattini-dev/vaulter/main/install.
|
|
|
26
26
|
|
|
27
27
|
## Quick Start
|
|
28
28
|
|
|
29
|
+
### Minimal
|
|
30
|
+
|
|
29
31
|
```bash
|
|
30
32
|
vaulter init # Initialize project
|
|
31
33
|
vaulter key generate --name master # Generate encryption key
|
|
32
|
-
vaulter
|
|
33
|
-
vaulter
|
|
34
|
+
vaulter change set DATABASE_URL="postgres://..." -e dev # Set secret
|
|
35
|
+
vaulter change set PORT::3000 -e dev # Set config (plain)
|
|
36
|
+
vaulter change set NODE_ENV=local -e dev # Set config (sensitive=false)
|
|
37
|
+
vaulter change move API_KEY --from shared --to api -e dev # Move variable to service
|
|
38
|
+
vaulter change move API_KEY --from shared -e dev -s svc-notifications # Infer destination service
|
|
39
|
+
vaulter plan -e dev # Preview changes before applying
|
|
34
40
|
eval $(vaulter export shell -e dev) # Export to shell
|
|
35
41
|
```
|
|
36
42
|
|
|
43
|
+
### End-to-End (Monorepo, `web` + `api`)
|
|
44
|
+
|
|
45
|
+
This flow shows local editing, team sharing, and promotion across multiple environments.
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# 0) Initialize + discover services
|
|
49
|
+
vaulter init --monorepo
|
|
50
|
+
vaulter key generate --name master
|
|
51
|
+
vaulter services
|
|
52
|
+
|
|
53
|
+
# 1) Create/override vars locally (offline by default)
|
|
54
|
+
# `local set` writes only to `.vaulter/local/*`; use `-e/--env` only for backend-aware operations.
|
|
55
|
+
vaulter local set NEXT_PUBLIC_APP_NAME=Portal --shared
|
|
56
|
+
vaulter local set NODE_ENV=local --shared
|
|
57
|
+
vaulter local set DATABASE_URL=postgres://... -s api
|
|
58
|
+
vaulter local set REDIS_URL=redis://... -s api
|
|
59
|
+
vaulter local set QUEUE_ENABLED::true -s api
|
|
60
|
+
vaulter local set WORKER_CONCURRENCY::4 -s web
|
|
61
|
+
vaulter local pull --all # Generates .env for local run (all outputs)
|
|
62
|
+
vaulter local diff # Review local overrides
|
|
63
|
+
|
|
64
|
+
# 2) Share source of truth with team (backend sync)
|
|
65
|
+
vaulter local push --all -e dev
|
|
66
|
+
|
|
67
|
+
# 3) Team members pull and generate local envs
|
|
68
|
+
vaulter local sync -e dev
|
|
69
|
+
vaulter local pull --all
|
|
70
|
+
|
|
71
|
+
# 4) Promote the same managed set to multiple environments
|
|
72
|
+
for ENV in dev stg prd; do
|
|
73
|
+
echo "Deploying to $ENV"
|
|
74
|
+
vaulter plan -e "$ENV"
|
|
75
|
+
vaulter apply -e "$ENV" $( [ "$ENV" = "prd" ] && echo '--force' )
|
|
76
|
+
done
|
|
77
|
+
|
|
78
|
+
# 5) Run your scripts with vaulter-managed variables
|
|
79
|
+
vaulter run -e dev -- pnpm start # Local run with local overrides
|
|
80
|
+
vaulter run -e dev -s web -- pnpm --dir apps/web dev
|
|
81
|
+
vaulter run -e dev -s api -- pnpm --dir apps/api lint
|
|
82
|
+
vaulter run -e stg -s api -- pnpm --dir apps/api migrate
|
|
83
|
+
vaulter run -e prd -- docker compose -f ./deploy/docker/docker-compose.yml up
|
|
84
|
+
|
|
85
|
+
# 6) Export service-specific artifacts per environment
|
|
86
|
+
# Config-like outputs
|
|
87
|
+
vaulter export env -e dev --service api > apps/api/.env
|
|
88
|
+
vaulter export env -e stg --service web > apps/web/.env
|
|
89
|
+
vaulter export shell -e prd --service api > /tmp/api-env.sh
|
|
90
|
+
|
|
91
|
+
# Kubernetes artifacts
|
|
92
|
+
vaulter export k8s-secret -e dev --service api --name api-secrets
|
|
93
|
+
vaulter export k8s-secret -e dev --service web --name web-secrets
|
|
94
|
+
vaulter export k8s-secret -e stg --service api --name api-secrets
|
|
95
|
+
vaulter export k8s-secret -e prd --service api --name api-secrets
|
|
96
|
+
|
|
97
|
+
# Deployment formats
|
|
98
|
+
vaulter export k8s-configmap -e prd --service api --name api-configmap
|
|
99
|
+
vaulter export helm -e prd --service api --name api-values
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
> `--force` is required on `apply -e prd` and other production-like environments.
|
|
103
|
+
|
|
37
104
|
---
|
|
38
105
|
|
|
39
106
|
## 🔄 Development Workflow
|
|
@@ -91,18 +158,20 @@ apps/api/.env # ❌ Gitignored - Generated output
|
|
|
91
158
|
|
|
92
159
|
```bash
|
|
93
160
|
# 1. Start: Pull latest from backend + apply your local overrides
|
|
94
|
-
vaulter local pull
|
|
161
|
+
vaulter local pull
|
|
95
162
|
|
|
96
163
|
# 2. Work: Add personal overrides (not shared with team)
|
|
97
164
|
vaulter local set DEBUG::true # Shared override
|
|
98
|
-
vaulter local set PORT::3001
|
|
165
|
+
vaulter local set PORT::3001 # Service-specific (inferred from cwd in monorepo)
|
|
99
166
|
|
|
100
167
|
# 3. Add new variable for team? Push to backend
|
|
101
|
-
vaulter set NEW_VAR=value
|
|
102
|
-
vaulter
|
|
168
|
+
vaulter local set NEW_VAR=value --shared # Personal scratch pad
|
|
169
|
+
vaulter local push # Share scratch locally with team
|
|
170
|
+
vaulter plan -e dev # Preview changes (recommended)
|
|
171
|
+
vaulter apply -e dev # Apply after approval
|
|
103
172
|
|
|
104
173
|
# 4. Check: See what's different
|
|
105
|
-
vaulter diff -e dev
|
|
174
|
+
vaulter diff -e dev # Local vs backend diff
|
|
106
175
|
|
|
107
176
|
# 5. Promote: Clone to staging/production
|
|
108
177
|
vaulter clone dev stg --dry-run # Preview
|
|
@@ -138,37 +207,70 @@ vaulter clone dev stg # Execute
|
|
|
138
207
|
|
|
139
208
|
### Team Collaboration
|
|
140
209
|
|
|
141
|
-
|
|
210
|
+
Team collaboration assumes one shared truth for each environment (backend) and private, local overrides per developer.
|
|
211
|
+
|
|
212
|
+
**New team member setup (2 minutes):**
|
|
142
213
|
```bash
|
|
143
214
|
git clone <repo> # Gets .vaulter/config.yaml
|
|
144
215
|
export VAULTER_KEY_DEV=<from-team> # Get key securely from team
|
|
145
|
-
vaulter sync
|
|
216
|
+
vaulter local sync -e dev # Pull remote vars to .vaulter/local/
|
|
146
217
|
vaulter local pull --all # Generate .env files (offline)
|
|
147
218
|
```
|
|
148
219
|
|
|
149
|
-
**
|
|
220
|
+
**Why this is stable for teams**
|
|
221
|
+
|
|
222
|
+
- `vaulter local set` is always a private, working-copy edit. It does **not** change what others consume by itself.
|
|
223
|
+
- `vaulter local push` is how you publish team-visible changes from local overrides.
|
|
224
|
+
- `vaulter local sync` is how others consume published changes.
|
|
225
|
+
- Use environment-specific gates (`status`, `diff`, and `plan/apply`) before merging critical updates.
|
|
226
|
+
|
|
227
|
+
**Recommended sharing flow (single variable):**
|
|
150
228
|
```bash
|
|
151
|
-
# 1
|
|
152
|
-
vaulter local set NEW_FEATURE::enabled # Shared config
|
|
229
|
+
# 1) Add locally first
|
|
230
|
+
vaulter local set --shared NEW_FEATURE::enabled # Shared config
|
|
231
|
+
vaulter local diff # Verify local change before publishing
|
|
232
|
+
|
|
233
|
+
# 2) Optional dry-run share preview
|
|
234
|
+
vaulter local push --shared --dry-run -e dev # Checks what would be pushed
|
|
153
235
|
|
|
154
|
-
#
|
|
155
|
-
vaulter
|
|
236
|
+
# 3) Share to backend (explicit approval step before running)
|
|
237
|
+
vaulter local push --shared -e dev
|
|
156
238
|
|
|
157
|
-
#
|
|
158
|
-
# "New var
|
|
239
|
+
# 4) Notify team
|
|
240
|
+
# "New var published. Run: vaulter local sync -e dev && vaulter local pull --all"
|
|
159
241
|
```
|
|
160
242
|
|
|
243
|
+
**Monorepo service rule (recommended):**
|
|
244
|
+
|
|
245
|
+
- Defaults are shared only when genuinely global.
|
|
246
|
+
- Service behavior should live in service scope (`-s svc-*`) unless explicitly cross-service.
|
|
247
|
+
- Keep service ownership rules documented in `.vaulter/config.yaml` (`policy`), so mistakes are prevented early.
|
|
248
|
+
|
|
249
|
+
**Conflict resolution if two devs edit same key**
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
vaulter local diff -s <service> # See your local delta
|
|
253
|
+
vaulter local sync -e dev # Pull latest from backend
|
|
254
|
+
vaulter local pull --all # Rebuild outputs
|
|
255
|
+
vaulter local diff -s <service> # Re-check before pushing
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
If divergence remains:
|
|
259
|
+
- Ask one owner to pause and re-publish.
|
|
260
|
+
- Prefer `vaulter plan -e dev` + manual review for sensitive or cross-service keys.
|
|
261
|
+
|
|
262
|
+
**Important:** Most `local` commands are local-only. Passing `-e/--env` is only needed when publishing or syncing with backend.
|
|
263
|
+
|
|
161
264
|
### MCP Tools for Workflow
|
|
162
265
|
|
|
163
266
|
| Task | Tool |
|
|
164
267
|
|:-----|:-----|
|
|
165
|
-
| Check health | `
|
|
166
|
-
| Pull with overrides | `
|
|
167
|
-
| Set shared override | `
|
|
168
|
-
| Set service override | `
|
|
169
|
-
| See differences | `
|
|
170
|
-
|
|
|
171
|
-
| Compare environments | `vaulter_compare source="dev" target="prd"` |
|
|
268
|
+
| Check health | `vaulter_status action="scorecard"` |
|
|
269
|
+
| Pull with overrides | `vaulter_local action="pull"` |
|
|
270
|
+
| Set shared override | `vaulter_local action="shared-set" key="DEBUG" value="true"` |
|
|
271
|
+
| Set service override | `vaulter_local action="set" key="PORT" value="3001"` |
|
|
272
|
+
| See differences | `vaulter_diff` |
|
|
273
|
+
| Compare environments | `vaulter_search source="dev" target="prd"` |
|
|
172
274
|
|
|
173
275
|
---
|
|
174
276
|
|
|
@@ -212,38 +314,40 @@ config() // Loads from .vaulter/local/ (configs.env + secrets.env)
|
|
|
212
314
|
npx vaulter run -- pnpm dev
|
|
213
315
|
|
|
214
316
|
# Or pull from backend first
|
|
215
|
-
vaulter local pull
|
|
317
|
+
vaulter local pull
|
|
216
318
|
```
|
|
217
319
|
|
|
218
320
|
That's it! For most local development, vaulter is just a structured dotenv.
|
|
219
321
|
|
|
220
322
|
---
|
|
221
323
|
|
|
222
|
-
## 🩺 Health Check -
|
|
324
|
+
## 🩺 Health Check - Status
|
|
223
325
|
|
|
224
|
-
**Always start with `vaulter
|
|
326
|
+
**Always start with `vaulter status`** to diagnose your setup:
|
|
225
327
|
|
|
226
328
|
```bash
|
|
227
|
-
vaulter
|
|
329
|
+
vaulter status -e dev
|
|
330
|
+
vaulter status -e dev --offline
|
|
228
331
|
```
|
|
229
332
|
|
|
230
|
-
|
|
333
|
+
Status performs **up to 18 checks** online, or a local-first subset in `--offline`.
|
|
231
334
|
|
|
232
335
|
| Check | What It Does |
|
|
233
336
|
|-------|--------------|
|
|
234
|
-
| ✅ **Connection** | Tests backend connectivity |
|
|
337
|
+
| ✅ **Connection** | Tests backend connectivity (skipped in `--offline`) |
|
|
235
338
|
| ✅ **Latency** | Measures operation speed |
|
|
236
339
|
| ✅ **Permissions** | Validates read/write/delete access |
|
|
237
340
|
| ✅ **Encryption** | Tests encrypt → decrypt round-trip |
|
|
238
341
|
| ✅ **Sync Status** | Compares local vs remote |
|
|
239
342
|
| ✅ **Security** | Detects .env in git, weak keys |
|
|
343
|
+
| ✅ **Scope Policy** | Checks `shared` vs `service` assignment rules |
|
|
240
344
|
| ✅ **Perf Config** | Suggests cache/warmup/concurrency tuning |
|
|
241
|
-
| ✅ **+
|
|
345
|
+
| ✅ **+8 more** | Config, project, environment, backend, keys, etc. |
|
|
242
346
|
|
|
243
347
|
**Example output:**
|
|
244
348
|
|
|
245
349
|
```
|
|
246
|
-
✓ ok:
|
|
350
|
+
✓ ok: 15 | ⚠ warn: 1 | ✗ fail: 1
|
|
247
351
|
|
|
248
352
|
✓ connection: connected (24 vars in dev)
|
|
249
353
|
✓ latency: read=45ms, list=67ms
|
|
@@ -260,7 +364,24 @@ Doctor performs **16 comprehensive checks**:
|
|
|
260
364
|
- 🚀 Pre-deploy - ensure everything is synced
|
|
261
365
|
- 🔄 Routine - weekly health check
|
|
262
366
|
|
|
263
|
-
|
|
367
|
+
### Runbook local (`scripts/vaulter-verify-dev.sh`)
|
|
368
|
+
|
|
369
|
+
For a quick pre-deploy validation in local/dev workflows:
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
VAULTER_VERIFY_ENV=dev pnpm run verify:vaulter
|
|
373
|
+
VAULTER_VERIFY_OFFLINE=0 VAULTER_VERIFY_REQUIRE_CONFIG=1 pnpm run verify:vaulter
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
The script runs:
|
|
377
|
+
|
|
378
|
+
- `vaulter status -e <env> -v [--offline]` (offline by default)
|
|
379
|
+
- `vaulter diff -e <env> --values`
|
|
380
|
+
- `vaulter list -e <env>`
|
|
381
|
+
|
|
382
|
+
It writes an execution log under `artifacts/vaulter-health/` for auditability.
|
|
383
|
+
|
|
384
|
+
**For AI Agents:** Call `vaulter_status action="scorecard"` once at the start of a new session (or when operations fail / environments change) to understand the current state before performing sensitive operations.
|
|
264
385
|
|
|
265
386
|
See [docs/DOCTOR.md](docs/DOCTOR.md) for complete guide.
|
|
266
387
|
|
|
@@ -275,38 +396,52 @@ See [docs/DOCTOR.md](docs/DOCTOR.md) for complete guide.
|
|
|
275
396
|
| `init` | Initialize project config |
|
|
276
397
|
| `init --split` | Initialize with split mode (configs/secrets dirs) |
|
|
277
398
|
|
|
278
|
-
###
|
|
399
|
+
### Health
|
|
279
400
|
|
|
280
401
|
| Command | Description |
|
|
281
402
|
|:--------|:------------|
|
|
282
|
-
| `
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
|
287
|
-
|
|
403
|
+
| `status -e <env>` | Full diagnostic report with checks and suggestions |
|
|
404
|
+
|
|
405
|
+
### Mutations (`change`)
|
|
406
|
+
|
|
407
|
+
| Command | Description |
|
|
408
|
+
|:--------|:------------|
|
|
409
|
+
| `change set KEY=val -e <env>` | Set secret (encrypted) |
|
|
410
|
+
| `change set KEY::val -e <env>` | Set config (plain text) |
|
|
411
|
+
| `change set KEY:=123 -e <env>` | Set typed secret (number/boolean) |
|
|
412
|
+
| `change delete <key> -e <env>` | Delete variable |
|
|
413
|
+
| `change move <key> --from <scope> --to <scope> -e <env>` | Move/copy variable between scopes |
|
|
414
|
+
| `change import -f <file> -e <env>` | Import variables from file |
|
|
415
|
+
| `list -e <env>` | List all variables |
|
|
288
416
|
|
|
289
417
|
**Set syntax**: `=` encrypted secret · `::` plain config · `:=` typed secret
|
|
290
418
|
|
|
291
|
-
|
|
419
|
+
In monorepo mode, when `--service` is resolved, one of `--from` or `--to` can be omitted and inferred from the active service.
|
|
420
|
+
|
|
421
|
+
### Plan & Apply
|
|
292
422
|
|
|
293
423
|
| Command | Description |
|
|
294
424
|
|:--------|:------------|
|
|
295
|
-
| `
|
|
296
|
-
| `
|
|
297
|
-
| `
|
|
298
|
-
| `
|
|
299
|
-
| `
|
|
300
|
-
|
|
301
|
-
|
|
425
|
+
| `plan -e <env>` | Compute diff local vs backend, generate plan artifact |
|
|
426
|
+
| `apply -e <env>` | Execute plan, push changes to backend |
|
|
427
|
+
| `diff -e <env>` | Quick diff without plan artifacts |
|
|
428
|
+
| `plan --dir -e <env>` | Plan from `.vaulter/{env}/` directory |
|
|
429
|
+
| `plan [--plan-output <file>] -e <env>` | Write plan artifact (`.json` + `.md`). If `--plan-output` is omitted, defaults to `artifacts/vaulter-plans/<project>-<env>-<timestamp>.*` |
|
|
430
|
+
|
|
431
|
+
### Recommended daily path
|
|
432
|
+
|
|
433
|
+
- `vaulter local pull` → `vaulter local set` → `vaulter local push` (when ready)
|
|
434
|
+
- `vaulter change set` → `vaulter change move` → `vaulter plan -e <env>` → `vaulter apply -e <env>`
|
|
435
|
+
- `vaulter plan -e <env>` → validate → `vaulter apply -e <env>`
|
|
436
|
+
- `vaulter status -e <env>` for quick pre-flight health check
|
|
302
437
|
|
|
303
438
|
### Export
|
|
304
439
|
|
|
305
440
|
| Command | Description |
|
|
306
441
|
|:--------|:------------|
|
|
307
442
|
| `export shell -e <env>` | Export for shell `eval $(...)` |
|
|
308
|
-
| `export k8s-secret -e <env>` | Generate Kubernetes Secret |
|
|
309
|
-
| `export k8s-configmap -e <env>` | Generate Kubernetes ConfigMap |
|
|
443
|
+
| `export k8s-secret -e <env>` | Generate Kubernetes Secret (sensitive vars only) |
|
|
444
|
+
| `export k8s-configmap -e <env>` | Generate Kubernetes ConfigMap (config vars only) |
|
|
310
445
|
| `export helm -e <env>` | Generate Helm values.yaml |
|
|
311
446
|
| `export terraform -e <env>` | Generate Terraform .tfvars |
|
|
312
447
|
| `export docker -e <env>` | Docker env-file format |
|
|
@@ -365,6 +500,30 @@ npx vaulter run -e prd -- pnpm build
|
|
|
365
500
|
npx vaulter run -e dev -s api -- pnpm start
|
|
366
501
|
```
|
|
367
502
|
|
|
503
|
+
### Run scripts via package.json
|
|
504
|
+
|
|
505
|
+
Use `vaulter run` directly in your npm scripts to keep variables centralized and explicit.
|
|
506
|
+
|
|
507
|
+
```json
|
|
508
|
+
{
|
|
509
|
+
"scripts": {
|
|
510
|
+
"dev:web": "vaulter run -e dev -s web -- pnpm --dir apps/web dev",
|
|
511
|
+
"lint:api": "vaulter run -e dev -s api -- pnpm --dir apps/api lint",
|
|
512
|
+
"migrate:api:stg": "vaulter run -e stg -s api -- pnpm --dir apps/api run migrate",
|
|
513
|
+
"deploy:api:prd": "vaulter run -e prd -s api -- pnpm --dir apps/api build && vaulter export k8s-secret -e prd -s api --name api-secrets"
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
```bash
|
|
519
|
+
npm run dev:web
|
|
520
|
+
npm run lint:api
|
|
521
|
+
npm run migrate:api:stg
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
The important part is that `vaulter run` stays as the first command so variable resolution and scope resolution
|
|
525
|
+
happen before your script command.
|
|
526
|
+
|
|
368
527
|
The `run` command auto-detects the environment (local, CI, K8s) and loads the appropriate files before executing your command.
|
|
369
528
|
|
|
370
529
|
> Run `vaulter --help` or `vaulter <command> --help` for all options.
|
|
@@ -483,10 +642,10 @@ encryption:
|
|
|
483
642
|
**Example flow:**
|
|
484
643
|
```bash
|
|
485
644
|
# Set shared var (uses dev key because shared_key_environment: dev)
|
|
486
|
-
vaulter
|
|
645
|
+
vaulter change set LOG_LEVEL=debug -e dev --scope shared
|
|
487
646
|
|
|
488
647
|
# Read shared var from prd (still uses dev key for shared vars)
|
|
489
|
-
vaulter
|
|
648
|
+
vaulter list -e prd --shared # Works! Uses dev key for shared
|
|
490
649
|
```
|
|
491
650
|
|
|
492
651
|
---
|
|
@@ -517,6 +676,20 @@ audit:
|
|
|
517
676
|
enabled: true
|
|
518
677
|
retention_days: 90
|
|
519
678
|
|
|
679
|
+
scope_policy:
|
|
680
|
+
mode: warn
|
|
681
|
+
inherit_defaults: true
|
|
682
|
+
rules:
|
|
683
|
+
- name: api-keys-service
|
|
684
|
+
pattern: '^API_'
|
|
685
|
+
expected_scope: service
|
|
686
|
+
expected_service: svc-app
|
|
687
|
+
reason: 'API_* vars are service-owned'
|
|
688
|
+
- name: app-url-shared-default
|
|
689
|
+
pattern: '^APP_.*_URL$'
|
|
690
|
+
expected_scope: shared
|
|
691
|
+
reason: 'URL variables stay shared by default'
|
|
692
|
+
|
|
520
693
|
# Local development files (see "Local vs Deploy Structure" below)
|
|
521
694
|
# local: .vaulter/local/
|
|
522
695
|
|
|
@@ -565,7 +738,7 @@ Vaulter separates **local development** from **deployment** configurations:
|
|
|
565
738
|
| `local/configs.env` | Developer's machine | Ignored | Non-sensitive local vars |
|
|
566
739
|
| `local/secrets.env` | Developer's machine | Ignored | Sensitive local secrets |
|
|
567
740
|
| `deploy/configs/*.env` | CI/CD configs | Committed | Non-sensitive (PORT, HOST, LOG_LEVEL) |
|
|
568
|
-
| `deploy/secrets/*.env` | CI/CD secrets | Ignored | Pulled via `vaulter sync
|
|
741
|
+
| `deploy/secrets/*.env` | CI/CD secrets | Ignored | Pulled via `vaulter local sync` |
|
|
569
742
|
|
|
570
743
|
**Gitignore:**
|
|
571
744
|
|
|
@@ -738,7 +911,8 @@ You can also use the CLI directly:
|
|
|
738
911
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
739
912
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
740
913
|
run: |
|
|
741
|
-
npx vaulter sync
|
|
914
|
+
npx vaulter local sync -e prd
|
|
915
|
+
npx vaulter local pull -e prd
|
|
742
916
|
npx vaulter run -e prd -- pnpm build
|
|
743
917
|
```
|
|
744
918
|
|
|
@@ -781,8 +955,8 @@ Auto-detects NX, Turborepo, Lerna, pnpm, Yarn workspaces, Rush.
|
|
|
781
955
|
|
|
782
956
|
```bash
|
|
783
957
|
vaulter service list # List discovered services
|
|
784
|
-
vaulter
|
|
785
|
-
vaulter
|
|
958
|
+
vaulter plan -e dev -s api # Plan changes for specific service
|
|
959
|
+
vaulter apply -e dev -s api # Apply planned changes
|
|
786
960
|
vaulter export shell -e dev -s api # Export with shared inheritance
|
|
787
961
|
vaulter export shell -e dev --shared # Export only shared variables
|
|
788
962
|
```
|
|
@@ -848,7 +1022,7 @@ shared:
|
|
|
848
1022
|
|
|
849
1023
|
```bash
|
|
850
1024
|
# Pull to all outputs at once
|
|
851
|
-
vaulter
|
|
1025
|
+
vaulter local pull --all
|
|
852
1026
|
|
|
853
1027
|
# Result:
|
|
854
1028
|
# ✓ web: apps/web/.env.local (5 vars)
|
|
@@ -860,10 +1034,10 @@ vaulter sync pull --all
|
|
|
860
1034
|
|
|
861
1035
|
```bash
|
|
862
1036
|
# Pull only web
|
|
863
|
-
vaulter
|
|
1037
|
+
vaulter local pull --output web
|
|
864
1038
|
|
|
865
1039
|
# Preview without writing
|
|
866
|
-
vaulter
|
|
1040
|
+
vaulter local pull --all --dry-run
|
|
867
1041
|
```
|
|
868
1042
|
|
|
869
1043
|
### How It Works
|
|
@@ -874,7 +1048,7 @@ vaulter sync pull --all --dry-run
|
|
|
874
1048
|
│ DATABASE_URL, JWT_SECRET, NEXT_PUBLIC_API, LOG_LEVEL │
|
|
875
1049
|
└────────────────────────┬────────────────────────────────┘
|
|
876
1050
|
│
|
|
877
|
-
vaulter
|
|
1051
|
+
vaulter local pull --all
|
|
878
1052
|
│
|
|
879
1053
|
┌───────────────┼───────────────┐
|
|
880
1054
|
▼ ▼ ▼
|
|
@@ -913,17 +1087,19 @@ outputs:
|
|
|
913
1087
|
|
|
914
1088
|
## Local Overrides (Dev Environment) - OFFLINE FIRST
|
|
915
1089
|
|
|
916
|
-
**`vaulter local pull`
|
|
1090
|
+
**`vaulter local pull` and local `.env` generation are 100% OFFLINE** - no backend calls.
|
|
917
1091
|
|
|
918
|
-
Works entirely from local files in `.vaulter/local/`.
|
|
1092
|
+
Works entirely from local files in `.vaulter/local/`. This is the primary workflow for day-to-day development: edit local overrides, run `vaulter local pull`, and only sync when needed.
|
|
919
1093
|
|
|
920
1094
|
### Quick Reference
|
|
921
1095
|
|
|
922
1096
|
| Command | What it does | Backend? |
|
|
923
1097
|
|---------|--------------|----------|
|
|
924
|
-
| `vaulter local pull
|
|
1098
|
+
| `vaulter local pull` | Generate .env files from local | ❌ OFFLINE |
|
|
925
1099
|
| `vaulter local push --all` | Send local → backend | ✅ Backend |
|
|
926
1100
|
| `vaulter local sync` | Download backend → local | ✅ Backend |
|
|
1101
|
+
| `vaulter local set` | Write local override to `.vaulter/local/` | ❌ OFFLINE |
|
|
1102
|
+
| `vaulter local diff` | Compare local overrides vs base env | ❌ OFFLINE |
|
|
927
1103
|
|
|
928
1104
|
### Workflow
|
|
929
1105
|
|
|
@@ -931,7 +1107,7 @@ Works entirely from local files in `.vaulter/local/`. Perfect for local developm
|
|
|
931
1107
|
┌─────────────────────────────────────────────────────┐
|
|
932
1108
|
│ LOCAL DEVELOPMENT │
|
|
933
1109
|
│ 1. Edit .vaulter/local/*.env │
|
|
934
|
-
│ 2. vaulter local pull
|
|
1110
|
+
│ 2. vaulter local pull → Generate .env │
|
|
935
1111
|
│ 3. Develop... │
|
|
936
1112
|
└─────────────────────────────────────────────────────┘
|
|
937
1113
|
↓
|
|
@@ -944,10 +1120,12 @@ Works entirely from local files in `.vaulter/local/`. Perfect for local developm
|
|
|
944
1120
|
│ NEW TEAM MEMBER │
|
|
945
1121
|
│ 1. git clone <repo> │
|
|
946
1122
|
│ 2. vaulter local sync → Download from backend │
|
|
947
|
-
│ 3. vaulter local pull
|
|
1123
|
+
│ 3. vaulter local pull → Generate .env │
|
|
948
1124
|
└─────────────────────────────────────────────────────┘
|
|
949
1125
|
```
|
|
950
1126
|
|
|
1127
|
+
For monorepos, use `--service <name>` on `local set`, `local delete`, `local diff`, and `local push` (without `--all`), unless the CLI can infer the service from your current directory (or the monorepo has only one service).
|
|
1128
|
+
|
|
951
1129
|
### File Structure
|
|
952
1130
|
|
|
953
1131
|
```
|
|
@@ -981,11 +1159,13 @@ For each output target, vaulter merges:
|
|
|
981
1159
|
# === EDIT LOCALLY ===
|
|
982
1160
|
vaulter local set --shared DEBUG::true # shared config
|
|
983
1161
|
vaulter local set --shared API_KEY=xxx # shared secret
|
|
984
|
-
vaulter local set PORT::3001
|
|
1162
|
+
vaulter local set PORT::3001 # service config (inferred from cwd in monorepo)
|
|
985
1163
|
vaulter local set DB_URL=xxx -s api # service secret
|
|
1164
|
+
# In service directories, `-s` is usually auto-inferred.
|
|
1165
|
+
# If the repo has only one service, `-s` is inferred automatically too.
|
|
986
1166
|
|
|
987
1167
|
# === GENERATE .ENV FILES [OFFLINE] ===
|
|
988
|
-
vaulter local pull
|
|
1168
|
+
vaulter local pull
|
|
989
1169
|
# Output: "svc-auth: 23 vars (21 shared + 2 service)"
|
|
990
1170
|
|
|
991
1171
|
# === SHARE WITH TEAM ===
|
|
@@ -993,7 +1173,7 @@ vaulter local push --all # Upload entire structure
|
|
|
993
1173
|
|
|
994
1174
|
# === GET TEAM'S CHANGES ===
|
|
995
1175
|
vaulter local sync # Download from backend
|
|
996
|
-
vaulter local pull
|
|
1176
|
+
vaulter local pull # Generate .env files
|
|
997
1177
|
|
|
998
1178
|
# === OTHER ===
|
|
999
1179
|
vaulter local diff # Show differences
|
|
@@ -1029,10 +1209,10 @@ NODE_ENV=production
|
|
|
1029
1209
|
|
|
1030
1210
|
```bash
|
|
1031
1211
|
# Section-aware pull (default)
|
|
1032
|
-
vaulter local pull
|
|
1212
|
+
vaulter local pull
|
|
1033
1213
|
|
|
1034
1214
|
# Overwrite entire file (ignores sections)
|
|
1035
|
-
vaulter local pull --
|
|
1215
|
+
vaulter local pull --overwrite
|
|
1036
1216
|
```
|
|
1037
1217
|
|
|
1038
1218
|
**Programmatic API:**
|
|
@@ -1255,7 +1435,7 @@ const result = await loadRuntime({
|
|
|
1255
1435
|
|
|
1256
1436
|
## MCP Server
|
|
1257
1437
|
|
|
1258
|
-
Claude AI integration via Model Context Protocol. **
|
|
1438
|
+
Claude AI integration via Model Context Protocol. **17 Tools | 4 Resources | 5 Prompts.**
|
|
1259
1439
|
|
|
1260
1440
|
```bash
|
|
1261
1441
|
vaulter mcp
|
|
@@ -1274,58 +1454,52 @@ vaulter mcp
|
|
|
1274
1454
|
}
|
|
1275
1455
|
```
|
|
1276
1456
|
|
|
1277
|
-
### Tools (
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
|
1282
|
-
|
|
1283
|
-
| **
|
|
1284
|
-
|
|
|
1285
|
-
|
|
|
1286
|
-
|
|
|
1287
|
-
| **
|
|
1288
|
-
|
|
|
1289
|
-
|
|
|
1290
|
-
|
|
|
1291
|
-
| **
|
|
1292
|
-
| **
|
|
1293
|
-
| **
|
|
1294
|
-
| **
|
|
1295
|
-
| **
|
|
1296
|
-
|
|
|
1297
|
-
|
|
1298
|
-
|
|
1457
|
+
### Tools (17)
|
|
1458
|
+
|
|
1459
|
+
> **Tool Architecture:** Each tool is action-based (one tool per domain with `action` parameter).
|
|
1460
|
+
|
|
1461
|
+
| Category | Tool | Actions / Description |
|
|
1462
|
+
|:---------|:-----|:---------------------|
|
|
1463
|
+
| **Mutation Flow** | `vaulter_change` | set, delete, move, import (writes local state only) |
|
|
1464
|
+
| | `vaulter_plan` | Compute diff local vs backend, generate plan artifact |
|
|
1465
|
+
| | `vaulter_apply` | Execute plan, push changes to backend |
|
|
1466
|
+
| | `vaulter_run` | Execute command with loaded variables |
|
|
1467
|
+
| **Read** | `vaulter_get` | Get single var or multi-get via `keys[]` |
|
|
1468
|
+
| | `vaulter_list` | List vars with optional filter |
|
|
1469
|
+
| | `vaulter_search` | Search by pattern or compare environments |
|
|
1470
|
+
| | `vaulter_diff` | Quick diff without plan artifacts |
|
|
1471
|
+
| **Status** | `vaulter_status` | scorecard, vars, audit, drift, inventory |
|
|
1472
|
+
| **Export** | `vaulter_export` | k8s-secret, k8s-configmap, helm, terraform, env, shell, json |
|
|
1473
|
+
| **Keys** | `vaulter_key` | generate, list, show, export, import, rotate |
|
|
1474
|
+
| **Local Dev** | `vaulter_local` | pull, push, push-all, sync, set, delete, diff, status, shared-set, shared-delete, shared-list |
|
|
1475
|
+
| **Backup** | `vaulter_snapshot` | create, list, restore, delete |
|
|
1476
|
+
| | `vaulter_versions` | list, get, rollback |
|
|
1477
|
+
| **Setup** | `vaulter_init` | Initialize project |
|
|
1478
|
+
| | `vaulter_services` | Discover monorepo services |
|
|
1479
|
+
| **Danger** | `vaulter_nuke` | Preview backend deletion (CLI-only execution) |
|
|
1480
|
+
|
|
1481
|
+
### Resources (4)
|
|
1299
1482
|
|
|
1300
1483
|
Static data views (no input required). For actions with parameters, use tools.
|
|
1301
1484
|
|
|
1302
1485
|
| URI | Description |
|
|
1303
1486
|
|:----|:------------|
|
|
1304
|
-
| `vaulter://instructions` | **Read first!**
|
|
1487
|
+
| `vaulter://instructions` | **Read first!** s3db.js architecture + tool overview |
|
|
1305
1488
|
| `vaulter://tools-guide` | Which tool to use for each scenario |
|
|
1306
|
-
| `vaulter://monorepo-example` | Complete monorepo isolation example with var counts |
|
|
1307
|
-
| `vaulter://mcp-config` | MCP settings sources (priority chain) |
|
|
1308
1489
|
| `vaulter://config` | Project configuration (YAML) |
|
|
1309
1490
|
| `vaulter://services` | Monorepo services list |
|
|
1310
1491
|
|
|
1311
|
-
### Prompts (
|
|
1492
|
+
### Prompts (5)
|
|
1312
1493
|
|
|
1313
1494
|
Pre-configured workflows for common tasks.
|
|
1314
1495
|
|
|
1315
1496
|
| Prompt | Description |
|
|
1316
1497
|
|:-------|:------------|
|
|
1317
1498
|
| `setup_project` | Initialize new vaulter project |
|
|
1318
|
-
| `migrate_dotenv` | Migrate existing .env files |
|
|
1319
1499
|
| `deploy_secrets` | Deploy to Kubernetes |
|
|
1320
1500
|
| `compare_environments` | Compare dev vs prd |
|
|
1321
|
-
| `security_audit` | Audit secrets for issues |
|
|
1322
1501
|
| `rotation_workflow` | Check/rotate/report on rotation |
|
|
1323
|
-
| `
|
|
1324
|
-
| `batch_operations` | Multi-set/get/delete operations |
|
|
1325
|
-
| `copy_environment` | Copy variables between environments |
|
|
1326
|
-
| `sync_workflow` | Sync local files with remote backend |
|
|
1327
|
-
| `monorepo_deploy` | Complete monorepo setup with isolation |
|
|
1328
|
-
| `local_overrides_workflow` | Manage local dev overrides (shared + service) |
|
|
1502
|
+
| `local_dev_workflow` | Manage local dev overrides (shared + service) |
|
|
1329
1503
|
|
|
1330
1504
|
> **Full MCP documentation:** See [docs/MCP.md](docs/MCP.md) for complete tool reference with parameters.
|
|
1331
1505
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vaulter `apply` Command
|
|
3
|
+
*
|
|
4
|
+
* Executes the last plan, pushing changes to the backend.
|
|
5
|
+
* If no plan exists or plan is stale, auto-plans first.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* vaulter apply -e dev Apply latest plan (auto-plan if needed)
|
|
9
|
+
* vaulter apply -e prd --force Apply to production (requires --force)
|
|
10
|
+
* vaulter apply -e dev --dry-run Show what would be applied
|
|
11
|
+
* vaulter apply -e dev --prune Include remote-only deletions
|
|
12
|
+
*/
|
|
13
|
+
import type { VarContext } from './change.js';
|
|
14
|
+
export declare function runApply(context: VarContext): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=apply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/apply.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAc7C,wBAAsB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGjE"}
|