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.
Files changed (353) hide show
  1. package/README.md +278 -104
  2. package/dist/cli/commands/apply.d.ts +15 -0
  3. package/dist/cli/commands/apply.d.ts.map +1 -0
  4. package/dist/cli/commands/apply.js +137 -0
  5. package/dist/cli/commands/apply.js.map +1 -0
  6. package/dist/cli/commands/change.d.ts +33 -0
  7. package/dist/cli/commands/change.d.ts.map +1 -0
  8. package/dist/cli/commands/change.js +621 -0
  9. package/dist/cli/commands/change.js.map +1 -0
  10. package/dist/cli/commands/diff.d.ts +15 -0
  11. package/dist/cli/commands/diff.d.ts.map +1 -0
  12. package/dist/cli/commands/diff.js +123 -0
  13. package/dist/cli/commands/diff.js.map +1 -0
  14. package/dist/cli/commands/init.js +1 -1
  15. package/dist/cli/commands/init.js.map +1 -1
  16. package/dist/cli/commands/local/delete.d.ts.map +1 -1
  17. package/dist/cli/commands/local/delete.js +12 -1
  18. package/dist/cli/commands/local/delete.js.map +1 -1
  19. package/dist/cli/commands/local/diff.d.ts.map +1 -1
  20. package/dist/cli/commands/local/diff.js +12 -0
  21. package/dist/cli/commands/local/diff.js.map +1 -1
  22. package/dist/cli/commands/local/index.js +2 -2
  23. package/dist/cli/commands/local/index.js.map +1 -1
  24. package/dist/cli/commands/local/init.d.ts.map +1 -1
  25. package/dist/cli/commands/local/init.js +13 -2
  26. package/dist/cli/commands/local/init.js.map +1 -1
  27. package/dist/cli/commands/local/pull.d.ts.map +1 -1
  28. package/dist/cli/commands/local/pull.js +2 -11
  29. package/dist/cli/commands/local/pull.js.map +1 -1
  30. package/dist/cli/commands/local/push.d.ts.map +1 -1
  31. package/dist/cli/commands/local/push.js +12 -0
  32. package/dist/cli/commands/local/push.js.map +1 -1
  33. package/dist/cli/commands/local/set.d.ts +1 -1
  34. package/dist/cli/commands/local/set.d.ts.map +1 -1
  35. package/dist/cli/commands/local/set.js +13 -2
  36. package/dist/cli/commands/local/set.js.map +1 -1
  37. package/dist/cli/commands/local/status.js +1 -1
  38. package/dist/cli/commands/local/status.js.map +1 -1
  39. package/dist/cli/commands/local/sync.js +1 -1
  40. package/dist/cli/commands/local/sync.js.map +1 -1
  41. package/dist/cli/commands/plan.d.ts +14 -0
  42. package/dist/cli/commands/plan.d.ts.map +1 -0
  43. package/dist/cli/commands/plan.js +159 -0
  44. package/dist/cli/commands/plan.js.map +1 -0
  45. package/dist/cli/commands/rotation.js +1 -1
  46. package/dist/cli/commands/rotation.js.map +1 -1
  47. package/dist/cli/commands/service/dedupe.d.ts.map +1 -1
  48. package/dist/cli/commands/service/dedupe.js +4 -8
  49. package/dist/cli/commands/service/dedupe.js.map +1 -1
  50. package/dist/cli/commands/services.js +2 -2
  51. package/dist/cli/commands/services.js.map +1 -1
  52. package/dist/cli/commands/status.d.ts +21 -0
  53. package/dist/cli/commands/status.d.ts.map +1 -0
  54. package/dist/cli/commands/status.js +714 -0
  55. package/dist/cli/commands/status.js.map +1 -0
  56. package/dist/cli/index.js +194 -98
  57. package/dist/cli/index.js.map +1 -1
  58. package/dist/cli/lib/colors.d.ts +1 -0
  59. package/dist/cli/lib/colors.d.ts.map +1 -1
  60. package/dist/cli/lib/colors.js +2 -0
  61. package/dist/cli/lib/colors.js.map +1 -1
  62. package/dist/cli/lib/create-client.d.ts.map +1 -1
  63. package/dist/cli/lib/create-client.js +15 -0
  64. package/dist/cli/lib/create-client.js.map +1 -1
  65. package/dist/cli/lib/error-hints.d.ts +6 -0
  66. package/dist/cli/lib/error-hints.d.ts.map +1 -0
  67. package/dist/cli/lib/error-hints.js +5 -0
  68. package/dist/cli/lib/error-hints.js.map +1 -0
  69. package/dist/cli/tui/app.d.ts.map +1 -1
  70. package/dist/cli/tui/app.js +2 -23
  71. package/dist/cli/tui/app.js.map +1 -1
  72. package/dist/cli/tui/dashboard.js +1 -1
  73. package/dist/cli/tui/dashboard.js.map +1 -1
  74. package/dist/cli/tui/secrets-explorer/entry.d.ts.map +1 -1
  75. package/dist/cli/tui/secrets-explorer/entry.js +2 -34
  76. package/dist/cli/tui/secrets-explorer/entry.js.map +1 -1
  77. package/dist/cli/tui/tabs/audit-tab.d.ts +1 -2
  78. package/dist/cli/tui/tabs/audit-tab.d.ts.map +1 -1
  79. package/dist/cli/tui/tabs/audit-tab.js +2 -3
  80. package/dist/cli/tui/tabs/audit-tab.js.map +1 -1
  81. package/dist/client.d.ts +3 -3
  82. package/dist/client.d.ts.map +1 -1
  83. package/dist/client.js +14 -8
  84. package/dist/client.js.map +1 -1
  85. package/dist/domain/apply.d.ts +47 -0
  86. package/dist/domain/apply.d.ts.map +1 -0
  87. package/dist/domain/apply.js +144 -0
  88. package/dist/domain/apply.js.map +1 -0
  89. package/dist/domain/governance.d.ts +50 -0
  90. package/dist/domain/governance.d.ts.map +1 -0
  91. package/dist/domain/governance.js +456 -0
  92. package/dist/domain/governance.js.map +1 -0
  93. package/dist/domain/index.d.ts +22 -0
  94. package/dist/domain/index.d.ts.map +1 -0
  95. package/dist/domain/index.js +22 -0
  96. package/dist/domain/index.js.map +1 -0
  97. package/dist/domain/inventory.d.ts +30 -0
  98. package/dist/domain/inventory.d.ts.map +1 -0
  99. package/dist/domain/inventory.js +175 -0
  100. package/dist/domain/inventory.js.map +1 -0
  101. package/dist/domain/plan.d.ts +65 -0
  102. package/dist/domain/plan.d.ts.map +1 -0
  103. package/dist/domain/plan.js +343 -0
  104. package/dist/domain/plan.js.map +1 -0
  105. package/dist/domain/scorecard.d.ts +34 -0
  106. package/dist/domain/scorecard.d.ts.map +1 -0
  107. package/dist/domain/scorecard.js +216 -0
  108. package/dist/domain/scorecard.js.map +1 -0
  109. package/dist/domain/state.d.ts +87 -0
  110. package/dist/domain/state.d.ts.map +1 -0
  111. package/dist/domain/state.js +428 -0
  112. package/dist/domain/state.js.map +1 -0
  113. package/dist/domain/types.d.ts +386 -0
  114. package/dist/domain/types.d.ts.map +1 -0
  115. package/dist/domain/types.js +161 -0
  116. package/dist/domain/types.js.map +1 -0
  117. package/dist/lib/backend-sync.d.ts +5 -7
  118. package/dist/lib/backend-sync.d.ts.map +1 -1
  119. package/dist/lib/backend-sync.js +96 -74
  120. package/dist/lib/backend-sync.js.map +1 -1
  121. package/dist/lib/crypto.d.ts.map +1 -1
  122. package/dist/lib/crypto.js +16 -23
  123. package/dist/lib/crypto.js.map +1 -1
  124. package/dist/lib/error-hints.d.ts +27 -0
  125. package/dist/lib/error-hints.d.ts.map +1 -0
  126. package/dist/lib/error-hints.js +132 -0
  127. package/dist/lib/error-hints.js.map +1 -0
  128. package/dist/lib/errors.js +2 -2
  129. package/dist/lib/errors.js.map +1 -1
  130. package/dist/lib/init-generator.d.ts.map +1 -1
  131. package/dist/lib/init-generator.js +6 -0
  132. package/dist/lib/init-generator.js.map +1 -1
  133. package/dist/lib/local-ops.d.ts +3 -3
  134. package/dist/lib/local-ops.d.ts.map +1 -1
  135. package/dist/lib/local-ops.js +111 -69
  136. package/dist/lib/local-ops.js.map +1 -1
  137. package/dist/lib/local.d.ts +22 -4
  138. package/dist/lib/local.d.ts.map +1 -1
  139. package/dist/lib/local.js +49 -9
  140. package/dist/lib/local.js.map +1 -1
  141. package/dist/lib/monorepo.d.ts +40 -1
  142. package/dist/lib/monorepo.d.ts.map +1 -1
  143. package/dist/lib/monorepo.js +190 -4
  144. package/dist/lib/monorepo.js.map +1 -1
  145. package/dist/lib/output.d.ts +0 -3
  146. package/dist/lib/output.d.ts.map +1 -1
  147. package/dist/lib/output.js +6 -2
  148. package/dist/lib/output.js.map +1 -1
  149. package/dist/lib/root-gitignore.d.ts +14 -0
  150. package/dist/lib/root-gitignore.d.ts.map +1 -0
  151. package/dist/lib/root-gitignore.js +54 -0
  152. package/dist/lib/root-gitignore.js.map +1 -0
  153. package/dist/lib/scope-policy.d.ts +81 -0
  154. package/dist/lib/scope-policy.d.ts.map +1 -0
  155. package/dist/lib/scope-policy.js +269 -0
  156. package/dist/lib/scope-policy.js.map +1 -0
  157. package/dist/lib/snapshot-ops.js +1 -1
  158. package/dist/lib/snapshot-ops.js.map +1 -1
  159. package/dist/lib/sync-plan.d.ts +76 -0
  160. package/dist/lib/sync-plan.d.ts.map +1 -0
  161. package/dist/lib/sync-plan.js +205 -0
  162. package/dist/lib/sync-plan.js.map +1 -0
  163. package/dist/lib/variable-validation.d.ts +33 -0
  164. package/dist/lib/variable-validation.d.ts.map +1 -0
  165. package/dist/lib/variable-validation.js +137 -0
  166. package/dist/lib/variable-validation.js.map +1 -0
  167. package/dist/lib/write-guard.d.ts +25 -0
  168. package/dist/lib/write-guard.d.ts.map +1 -0
  169. package/dist/lib/write-guard.js +59 -0
  170. package/dist/lib/write-guard.js.map +1 -0
  171. package/dist/mcp/prompts.d.ts +26 -21
  172. package/dist/mcp/prompts.d.ts.map +1 -1
  173. package/dist/mcp/prompts.js +107 -1754
  174. package/dist/mcp/prompts.js.map +1 -1
  175. package/dist/mcp/resources.d.ts +18 -27
  176. package/dist/mcp/resources.d.ts.map +1 -1
  177. package/dist/mcp/resources.js +242 -1677
  178. package/dist/mcp/resources.js.map +1 -1
  179. package/dist/mcp/server.d.ts +7 -7
  180. package/dist/mcp/server.js +9 -9
  181. package/dist/mcp/server.js.map +1 -1
  182. package/dist/mcp/tools/config.d.ts +7 -1
  183. package/dist/mcp/tools/config.d.ts.map +1 -1
  184. package/dist/mcp/tools/config.js +15 -3
  185. package/dist/mcp/tools/config.js.map +1 -1
  186. package/dist/mcp/tools/definitions.d.ts +12 -7
  187. package/dist/mcp/tools/definitions.d.ts.map +1 -1
  188. package/dist/mcp/tools/definitions.js +269 -681
  189. package/dist/mcp/tools/definitions.js.map +1 -1
  190. package/dist/mcp/tools/handlers/apply.d.ts +8 -0
  191. package/dist/mcp/tools/handlers/apply.d.ts.map +1 -0
  192. package/dist/mcp/tools/handlers/apply.js +72 -0
  193. package/dist/mcp/tools/handlers/apply.js.map +1 -0
  194. package/dist/mcp/tools/handlers/change.d.ts +9 -0
  195. package/dist/mcp/tools/handlers/change.d.ts.map +1 -0
  196. package/dist/mcp/tools/handlers/change.js +175 -0
  197. package/dist/mcp/tools/handlers/change.js.map +1 -0
  198. package/dist/mcp/tools/handlers/diff.d.ts +8 -0
  199. package/dist/mcp/tools/handlers/diff.d.ts.map +1 -0
  200. package/dist/mcp/tools/handlers/diff.js +67 -0
  201. package/dist/mcp/tools/handlers/diff.js.map +1 -0
  202. package/dist/mcp/tools/handlers/export.d.ts +10 -0
  203. package/dist/mcp/tools/handlers/export.d.ts.map +1 -0
  204. package/dist/mcp/tools/handlers/export.js +217 -0
  205. package/dist/mcp/tools/handlers/export.js.map +1 -0
  206. package/dist/mcp/tools/handlers/init.d.ts +3 -6
  207. package/dist/mcp/tools/handlers/init.d.ts.map +1 -1
  208. package/dist/mcp/tools/handlers/init.js +22 -72
  209. package/dist/mcp/tools/handlers/init.js.map +1 -1
  210. package/dist/mcp/tools/handlers/key.d.ts +9 -0
  211. package/dist/mcp/tools/handlers/key.d.ts.map +1 -0
  212. package/dist/mcp/tools/handlers/key.js +326 -0
  213. package/dist/mcp/tools/handlers/key.js.map +1 -0
  214. package/dist/mcp/tools/handlers/local.d.ts +10 -85
  215. package/dist/mcp/tools/handlers/local.d.ts.map +1 -1
  216. package/dist/mcp/tools/handlers/local.js +351 -468
  217. package/dist/mcp/tools/handlers/local.js.map +1 -1
  218. package/dist/mcp/tools/handlers/nuke.d.ts +9 -0
  219. package/dist/mcp/tools/handlers/nuke.d.ts.map +1 -0
  220. package/dist/mcp/tools/handlers/nuke.js +30 -0
  221. package/dist/mcp/tools/handlers/nuke.js.map +1 -0
  222. package/dist/mcp/tools/handlers/plan.d.ts +8 -0
  223. package/dist/mcp/tools/handlers/plan.d.ts.map +1 -0
  224. package/dist/mcp/tools/handlers/plan.js +75 -0
  225. package/dist/mcp/tools/handlers/plan.js.map +1 -0
  226. package/dist/mcp/tools/handlers/read.d.ts +15 -0
  227. package/dist/mcp/tools/handlers/read.d.ts.map +1 -0
  228. package/dist/mcp/tools/handlers/read.js +57 -0
  229. package/dist/mcp/tools/handlers/read.js.map +1 -0
  230. package/dist/mcp/tools/handlers/run.d.ts +12 -0
  231. package/dist/mcp/tools/handlers/run.d.ts.map +1 -0
  232. package/dist/mcp/tools/handlers/run.js +203 -0
  233. package/dist/mcp/tools/handlers/run.js.map +1 -0
  234. package/dist/mcp/tools/handlers/search.d.ts +11 -0
  235. package/dist/mcp/tools/handlers/search.d.ts.map +1 -0
  236. package/dist/mcp/tools/handlers/search.js +124 -0
  237. package/dist/mcp/tools/handlers/search.js.map +1 -0
  238. package/dist/mcp/tools/handlers/services.d.ts +8 -0
  239. package/dist/mcp/tools/handlers/services.d.ts.map +1 -0
  240. package/dist/mcp/tools/handlers/services.js +39 -0
  241. package/dist/mcp/tools/handlers/services.js.map +1 -0
  242. package/dist/mcp/tools/handlers/snapshot.d.ts +10 -0
  243. package/dist/mcp/tools/handlers/snapshot.d.ts.map +1 -0
  244. package/dist/mcp/tools/handlers/snapshot.js +141 -0
  245. package/dist/mcp/tools/handlers/snapshot.js.map +1 -0
  246. package/dist/mcp/tools/handlers/status.d.ts +8 -0
  247. package/dist/mcp/tools/handlers/status.d.ts.map +1 -0
  248. package/dist/mcp/tools/handlers/status.js +341 -0
  249. package/dist/mcp/tools/handlers/status.js.map +1 -0
  250. package/dist/mcp/tools/handlers/versions.d.ts +10 -0
  251. package/dist/mcp/tools/handlers/versions.d.ts.map +1 -0
  252. package/dist/mcp/tools/handlers/versions.js +139 -0
  253. package/dist/mcp/tools/handlers/versions.js.map +1 -0
  254. package/dist/mcp/tools/index.d.ts +13 -5
  255. package/dist/mcp/tools/index.d.ts.map +1 -1
  256. package/dist/mcp/tools/index.js +158 -246
  257. package/dist/mcp/tools/index.js.map +1 -1
  258. package/dist/mcp/tools.d.ts +2 -10
  259. package/dist/mcp/tools.d.ts.map +1 -1
  260. package/dist/mcp/tools.js +2 -19
  261. package/dist/mcp/tools.js.map +1 -1
  262. package/dist/types.d.ts +44 -0
  263. package/dist/types.d.ts.map +1 -1
  264. package/dist/types.js.map +1 -1
  265. package/package.json +5 -4
  266. package/dist/cli/commands/delete.d.ts +0 -25
  267. package/dist/cli/commands/delete.d.ts.map +0 -1
  268. package/dist/cli/commands/delete.js +0 -118
  269. package/dist/cli/commands/delete.js.map +0 -1
  270. package/dist/cli/commands/doctor.d.ts +0 -21
  271. package/dist/cli/commands/doctor.d.ts.map +0 -1
  272. package/dist/cli/commands/doctor.js +0 -446
  273. package/dist/cli/commands/doctor.js.map +0 -1
  274. package/dist/cli/commands/get.d.ts +0 -24
  275. package/dist/cli/commands/get.d.ts.map +0 -1
  276. package/dist/cli/commands/get.js +0 -118
  277. package/dist/cli/commands/get.js.map +0 -1
  278. package/dist/cli/commands/pull.d.ts +0 -32
  279. package/dist/cli/commands/pull.d.ts.map +0 -1
  280. package/dist/cli/commands/pull.js +0 -196
  281. package/dist/cli/commands/pull.js.map +0 -1
  282. package/dist/cli/commands/push.d.ts +0 -29
  283. package/dist/cli/commands/push.d.ts.map +0 -1
  284. package/dist/cli/commands/push.js +0 -322
  285. package/dist/cli/commands/push.js.map +0 -1
  286. package/dist/cli/commands/rollback.d.ts +0 -8
  287. package/dist/cli/commands/rollback.d.ts.map +0 -1
  288. package/dist/cli/commands/rollback.js +0 -109
  289. package/dist/cli/commands/rollback.js.map +0 -1
  290. package/dist/cli/commands/set.d.ts +0 -35
  291. package/dist/cli/commands/set.d.ts.map +0 -1
  292. package/dist/cli/commands/set.js +0 -424
  293. package/dist/cli/commands/set.js.map +0 -1
  294. package/dist/cli/commands/sync/index.d.ts +0 -33
  295. package/dist/cli/commands/sync/index.d.ts.map +0 -1
  296. package/dist/cli/commands/sync/index.js +0 -275
  297. package/dist/cli/commands/sync/index.js.map +0 -1
  298. package/dist/cli/commands/sync.d.ts +0 -26
  299. package/dist/cli/commands/sync.d.ts.map +0 -1
  300. package/dist/cli/commands/sync.js +0 -371
  301. package/dist/cli/commands/sync.js.map +0 -1
  302. package/dist/cli/commands/var/index.d.ts +0 -31
  303. package/dist/cli/commands/var/index.d.ts.map +0 -1
  304. package/dist/cli/commands/var/index.js +0 -119
  305. package/dist/cli/commands/var/index.js.map +0 -1
  306. package/dist/cli/commands/versions.d.ts +0 -8
  307. package/dist/cli/commands/versions.d.ts.map +0 -1
  308. package/dist/cli/commands/versions.js +0 -135
  309. package/dist/cli/commands/versions.js.map +0 -1
  310. package/dist/mcp/tools/handlers/analysis.d.ts +0 -13
  311. package/dist/mcp/tools/handlers/analysis.d.ts.map +0 -1
  312. package/dist/mcp/tools/handlers/analysis.js +0 -195
  313. package/dist/mcp/tools/handlers/analysis.js.map +0 -1
  314. package/dist/mcp/tools/handlers/batch.d.ts +0 -12
  315. package/dist/mcp/tools/handlers/batch.d.ts.map +0 -1
  316. package/dist/mcp/tools/handlers/batch.js +0 -171
  317. package/dist/mcp/tools/handlers/batch.js.map +0 -1
  318. package/dist/mcp/tools/handlers/core.d.ts +0 -15
  319. package/dist/mcp/tools/handlers/core.d.ts.map +0 -1
  320. package/dist/mcp/tools/handlers/core.js +0 -179
  321. package/dist/mcp/tools/handlers/core.js.map +0 -1
  322. package/dist/mcp/tools/handlers/doctor.d.ts +0 -32
  323. package/dist/mcp/tools/handlers/doctor.d.ts.map +0 -1
  324. package/dist/mcp/tools/handlers/doctor.js +0 -1019
  325. package/dist/mcp/tools/handlers/doctor.js.map +0 -1
  326. package/dist/mcp/tools/handlers/iac.d.ts +0 -17
  327. package/dist/mcp/tools/handlers/iac.d.ts.map +0 -1
  328. package/dist/mcp/tools/handlers/iac.js +0 -131
  329. package/dist/mcp/tools/handlers/iac.js.map +0 -1
  330. package/dist/mcp/tools/handlers/k8s.d.ts +0 -11
  331. package/dist/mcp/tools/handlers/k8s.d.ts.map +0 -1
  332. package/dist/mcp/tools/handlers/k8s.js +0 -117
  333. package/dist/mcp/tools/handlers/k8s.js.map +0 -1
  334. package/dist/mcp/tools/handlers/keys.d.ts +0 -54
  335. package/dist/mcp/tools/handlers/keys.d.ts.map +0 -1
  336. package/dist/mcp/tools/handlers/keys.js +0 -561
  337. package/dist/mcp/tools/handlers/keys.js.map +0 -1
  338. package/dist/mcp/tools/handlers/monorepo.d.ts +0 -29
  339. package/dist/mcp/tools/handlers/monorepo.d.ts.map +0 -1
  340. package/dist/mcp/tools/handlers/monorepo.js +0 -329
  341. package/dist/mcp/tools/handlers/monorepo.js.map +0 -1
  342. package/dist/mcp/tools/handlers/sync.d.ts +0 -11
  343. package/dist/mcp/tools/handlers/sync.d.ts.map +0 -1
  344. package/dist/mcp/tools/handlers/sync.js +0 -77
  345. package/dist/mcp/tools/handlers/sync.js.map +0 -1
  346. package/dist/mcp/tools/handlers/utility.d.ts +0 -29
  347. package/dist/mcp/tools/handlers/utility.d.ts.map +0 -1
  348. package/dist/mcp/tools/handlers/utility.js +0 -245
  349. package/dist/mcp/tools/handlers/utility.js.map +0 -1
  350. package/dist/mcp/tools/handlers/versioning.d.ts +0 -33
  351. package/dist/mcp/tools/handlers/versioning.d.ts.map +0 -1
  352. package/dist/mcp/tools/handlers/versioning.js +0 -208
  353. 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 var set DATABASE_URL="postgres://..." -e dev # Set secret
33
- vaulter var set PORT::3000 -e dev # Set config (plain)
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 --all
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 -s api # Service-specific
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 -e dev # Add to backend
102
- vaulter sync push -e dev # Or push local .env
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 # Local vs backend
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
- **New team member setup:**
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 pull --dir -e dev # Pull from backend .vaulter/local/
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
- **Sharing a new variable:**
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. Add locally
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
- # 2. Push to backend (share with team)
155
- vaulter sync push --dir -e dev
236
+ # 3) Share to backend (explicit approval step before running)
237
+ vaulter local push --shared -e dev
156
238
 
157
- # 3. Notify team
158
- # "New var added, run: vaulter sync pull --dir && vaulter local pull --all"
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 | `vaulter_doctor` |
166
- | Pull with overrides | `vaulter_local_pull all=true` |
167
- | Set shared override | `vaulter_local_shared_set key="DEBUG" value="true"` |
168
- | Set service override | `vaulter_local_set key="PORT" value="3001" service="api"` |
169
- | See differences | `vaulter_local_diff` |
170
- | Clone environment | `vaulter_clone_env source="dev" target="stg"` |
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 --all
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 - Doctor
324
+ ## 🩺 Health Check - Status
223
325
 
224
- **Always start with `vaulter doctor`** to diagnose your setup:
326
+ **Always start with `vaulter status`** to diagnose your setup:
225
327
 
226
328
  ```bash
227
- vaulter doctor -e dev
329
+ vaulter status -e dev
330
+ vaulter status -e dev --offline
228
331
  ```
229
332
 
230
- Doctor performs **16 comprehensive checks**:
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
- | ✅ **+9 more** | Config, project, environment, backend, keys, etc. |
345
+ | ✅ **+8 more** | Config, project, environment, backend, keys, etc. |
242
346
 
243
347
  **Example output:**
244
348
 
245
349
  ```
246
- ✓ ok: 14 | ⚠ warn: 1 | ✗ fail: 1
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
- **For AI Agents:** Call `vaulter_doctor` once at the start of a new session (or when operations fail / environments change) to understand the current state before performing sensitive operations.
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
- ### Variables (`var`)
399
+ ### Health
279
400
 
280
401
  | Command | Description |
281
402
  |:--------|:------------|
282
- | `var get <key> -e <env>` | Get a variable |
283
- | `var set KEY=val -e <env>` | Set secret (encrypted) |
284
- | `var set KEY::val -e <env>` | Set config (plain text) |
285
- | `var set KEY:=123 -e <env>` | Set typed secret (number/boolean) |
286
- | `var delete <key> -e <env>` | Delete a variable |
287
- | `var list -e <env>` | List all variables |
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
- ### Sync
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
- | `sync merge -e <env>` | Bidirectional merge (default) |
296
- | `sync pull -e <env>` | Download from backend to outputs |
297
- | `sync pull --dir -e <env>` | Download to `.vaulter/{env}/` directory |
298
- | `sync push -e <env>` | Upload .env file to backend |
299
- | `sync push --dir -e <env>` | Upload `.vaulter/{env}/` directory to backend |
300
- | `sync push --prune -e <env>` | Upload, delete remote-only vars |
301
- | `sync diff -e <env>` | Show differences without changes |
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 var set LOG_LEVEL=debug -e dev --shared
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 var list -e prd --shared # Works! Uses dev key for shared
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 pull` |
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 pull -e prd
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 sync push -e dev -s api # Push specific service
785
- vaulter sync push -e dev --shared # Push shared variables
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 sync pull --all
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 sync pull --output web
1037
+ vaulter local pull --output web
864
1038
 
865
1039
  # Preview without writing
866
- vaulter sync pull --all --dry-run
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 sync pull --all
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` is 100% OFFLINE** - no backend calls!
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/`. Perfect for local development where you want to work offline and sync later.
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 --all` | Generate .env files from local | ❌ OFFLINE |
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 --all → Generate .env │
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 --all → Generate .env │
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 -s web # service config
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 --all
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 --all # Generate .env files
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 --all
1212
+ vaulter local pull
1033
1213
 
1034
1214
  # Overwrite entire file (ignores sections)
1035
- vaulter local pull --all --overwrite
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. **53 tools, 6 resources, 12 prompts.**
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 (53)
1278
-
1279
- | Category | Tools |
1280
- |:---------|:------|
1281
- | **Core (5)** | `vaulter_get`, `vaulter_set`, `vaulter_delete`, `vaulter_list`, `vaulter_export` |
1282
- | **Batch (3)** | `vaulter_multi_get`, `vaulter_multi_set`, `vaulter_multi_delete` |
1283
- | **Sync (3)** | `vaulter_sync`, `vaulter_pull`, `vaulter_push` |
1284
- | **Analysis (2)** | `vaulter_compare`, `vaulter_search` |
1285
- | **Status (2)** | `vaulter_status`, `vaulter_audit_list` |
1286
- | **K8s (2)** | `vaulter_k8s_secret`, `vaulter_k8s_configmap` |
1287
- | **IaC (2)** | `vaulter_helm_values`, `vaulter_tf_vars` |
1288
- | **Keys (6)** | `vaulter_key_generate`, `vaulter_key_list`, `vaulter_key_show`, `vaulter_key_export`, `vaulter_key_import`, `vaulter_key_rotate` |
1289
- | **Monorepo (5)** | `vaulter_init`, `vaulter_scan`, `vaulter_services`, `vaulter_shared_list`, `vaulter_inheritance_info` |
1290
- | **Categorization (1)** | `vaulter_categorize_vars` |
1291
- | **Dangerous (1)** | `vaulter_nuke_preview` |
1292
- | **Utility (4)** | `vaulter_copy`, `vaulter_rename`, `vaulter_promote_shared`, `vaulter_demote_shared` |
1293
- | **Local Overrides (8)** | `vaulter_local_pull`, `vaulter_local_set`, `vaulter_local_delete`, `vaulter_local_diff`, `vaulter_local_status`, `vaulter_local_shared_set`, `vaulter_local_shared_delete`, `vaulter_local_shared_list` |
1294
- | **Snapshot (3)** | `vaulter_snapshot_create`, `vaulter_snapshot_list`, `vaulter_snapshot_restore` |
1295
- | **Versioning (3)** | `vaulter_list_versions`, `vaulter_get_version`, `vaulter_rollback` |
1296
- | **Diagnostic (3)** | `vaulter_doctor`, `vaulter_clone_env`, `vaulter_diff` |
1297
-
1298
- ### Resources (6)
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!** How vaulter stores data (s3db.js architecture) |
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 (12)
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
- | `shared_vars_workflow` | Manage monorepo shared vars |
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"}