localvault 1.2.2 → 1.2.3
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.
- checksums.yaml +4 -4
- data/README.md +180 -153
- data/lib/localvault/cli.rb +4 -1
- data/lib/localvault/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4e30526cd10f0e0e29efe3db5b5c73d8de353cad6ad797d02fe1ac7f626ef7bc
|
|
4
|
+
data.tar.gz: e6f53442c299ba9836eddd53de5715a3f14577c2213080bfe2b7eab9f4646f41
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9d707292c02dace77c7595a61885273145f524e917a1b79a04670b428e5812cbc59564f74cacad4bd73f9a1d0843d91ad45588b33c5b1cf2fae58840df3e484f
|
|
7
|
+
data.tar.gz: 761ac32c6161f3c52d6c51ef7f254b8bd8689739cd7a692fc3ae33f03e014de311514f7753d2470068aca7ef005045f672ea87d386cc06daa0909e136521f325
|
data/README.md
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
# LocalVault
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Encrypted local secrets vault with MCP server for AI agents. Zero infrastructure, zero cloud dependency.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
> **[Try the interactive demo](https://inventlist.com/tools/localvault/cli)** — explore every command in your browser.
|
|
6
6
|
|
|
7
7
|
Part of [InventList Tools](https://inventlist.com/tools/localvault) — free, open-source developer utilities for indie builders.
|
|
8
8
|
|
|
9
|
+
---
|
|
10
|
+
|
|
9
11
|
## Install
|
|
10
12
|
|
|
11
|
-
### Homebrew (macOS)
|
|
13
|
+
### Homebrew (macOS / Linux)
|
|
12
14
|
|
|
13
15
|
```bash
|
|
14
16
|
brew install inventlist/tap/localvault
|
|
@@ -39,206 +41,221 @@ sudo dnf install libsodium-devel
|
|
|
39
41
|
# Create a vault (prompts for passphrase)
|
|
40
42
|
localvault init
|
|
41
43
|
|
|
42
|
-
# Store
|
|
44
|
+
# Store secrets
|
|
43
45
|
localvault set OPENAI_API_KEY "sk-proj-..."
|
|
44
46
|
localvault set STRIPE_SECRET_KEY "sk_live_..."
|
|
45
|
-
localvault set
|
|
47
|
+
localvault set DATABASE_URL "postgres://localhost/myapp"
|
|
46
48
|
|
|
47
|
-
# Retrieve a secret (pipeable)
|
|
49
|
+
# Retrieve a secret (raw, pipeable)
|
|
48
50
|
localvault get OPENAI_API_KEY
|
|
49
51
|
|
|
50
|
-
#
|
|
51
|
-
localvault
|
|
52
|
+
# View all secrets (masked by default)
|
|
53
|
+
localvault show
|
|
54
|
+
|
|
55
|
+
# Reveal values
|
|
56
|
+
localvault show --reveal
|
|
52
57
|
|
|
53
58
|
# Export as shell variables
|
|
54
|
-
localvault env
|
|
55
|
-
# => export GITHUB_TOKEN="ghp_..."
|
|
56
|
-
# => export OPENAI_API_KEY="sk-proj-..."
|
|
57
|
-
# => export STRIPE_SECRET_KEY="sk_live_..."
|
|
59
|
+
eval $(localvault env)
|
|
58
60
|
|
|
59
61
|
# Run a command with secrets injected
|
|
60
62
|
localvault exec -- rails server
|
|
61
|
-
localvault exec -- node app.js
|
|
62
63
|
```
|
|
63
64
|
|
|
64
65
|
## Commands
|
|
65
66
|
|
|
67
|
+
### Secrets
|
|
68
|
+
|
|
66
69
|
| Command | Description |
|
|
67
70
|
|---------|-------------|
|
|
68
|
-
| `init [NAME]` | Create a vault (
|
|
69
|
-
| `set KEY VALUE` | Store a secret |
|
|
70
|
-
| `get KEY` | Retrieve a secret (raw
|
|
71
|
-
| `
|
|
71
|
+
| `init [NAME]` | Create a vault (Argon2id key derivation) |
|
|
72
|
+
| `set KEY VALUE` | Store a secret (supports dot-notation: `project.KEY`) |
|
|
73
|
+
| `get KEY` | Retrieve a secret (raw, pipeable) |
|
|
74
|
+
| `show` | Display all secrets in a table (masked by default) |
|
|
75
|
+
| `show --reveal` | Display with values visible |
|
|
76
|
+
| `show --group` | Group by dot-notation prefix (one table per project) |
|
|
77
|
+
| `list` | List key names only |
|
|
72
78
|
| `delete KEY` | Remove a secret |
|
|
73
|
-
| `
|
|
74
|
-
| `
|
|
75
|
-
| `
|
|
76
|
-
| `
|
|
77
|
-
| `
|
|
78
|
-
| `login TOKEN` | Log in to InventList (auto-keygen + publish public key) |
|
|
79
|
-
| `sync push` | Push vault to InventList cloud |
|
|
80
|
-
| `sync pull` | Pull vault from InventList cloud |
|
|
81
|
-
| `sync status` | Show sync state for all vaults |
|
|
82
|
-
| `team init` | Initialize a vault as a team vault (sets you as owner) |
|
|
83
|
-
| `team add @handle` | Add a teammate (with optional `--scope`) |
|
|
84
|
-
| `team remove @handle` | Remove a teammate (with optional `--rotate` or `--scope`) |
|
|
85
|
-
| `team list` | Show who has access to a synced vault |
|
|
86
|
-
| `team rotate` | Re-encrypt vault with new passphrase (no member changes) |
|
|
87
|
-
| `version` | Print version |
|
|
79
|
+
| `rename OLD NEW` | Rename a secret key |
|
|
80
|
+
| `copy KEY --to VAULT` | Copy a secret to another vault |
|
|
81
|
+
| `import FILE` | Bulk-import from .env / .json / .yml |
|
|
82
|
+
| `env` | Export as `export KEY="value"` lines |
|
|
83
|
+
| `exec -- CMD` | Run a command with secrets injected as env vars |
|
|
88
84
|
|
|
89
|
-
|
|
85
|
+
### Vault Management
|
|
90
86
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
# All subsequent commands skip the passphrase prompt
|
|
100
|
-
localvault get API_KEY
|
|
101
|
-
localvault list
|
|
102
|
-
localvault exec -- rails server
|
|
103
|
-
```
|
|
87
|
+
| Command | Description |
|
|
88
|
+
|---------|-------------|
|
|
89
|
+
| `vaults` | List all vaults with secret counts |
|
|
90
|
+
| `switch [VAULT]` | Switch default vault |
|
|
91
|
+
| `unlock` | Cache passphrase for the session |
|
|
92
|
+
| `lock [NAME]` | Clear cached passphrase |
|
|
93
|
+
| `rekey [NAME]` | Change vault passphrase (re-encrypts all secrets) |
|
|
94
|
+
| `reset [NAME]` | Destroy and reinitialize a vault |
|
|
104
95
|
|
|
105
|
-
|
|
96
|
+
### Sync & Login
|
|
106
97
|
|
|
107
|
-
|
|
98
|
+
| Command | Description |
|
|
99
|
+
|---------|-------------|
|
|
100
|
+
| `login [TOKEN]` | Log in to InventList — auto-generates X25519 keypair + publishes public key |
|
|
101
|
+
| `login --status` | Show current login status |
|
|
102
|
+
| `logout` | Clear stored credentials |
|
|
103
|
+
| `sync push [NAME]` | Push encrypted vault to cloud |
|
|
104
|
+
| `sync pull [NAME]` | Pull vault from cloud (auto-unlocks if you have a key slot) |
|
|
105
|
+
| `sync status` | Show sync state for all vaults |
|
|
106
|
+
| `config set server URL` | Point at a custom server (default: inventlist.com) |
|
|
108
107
|
|
|
109
|
-
|
|
108
|
+
### Team Sharing (v1.2.0)
|
|
110
109
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
localvault set MYHANDLE_ACCESS_TOKEN "..." --vault x
|
|
125
|
-
localvault set MYHANDLE_ACCESS_SECRET "..." --vault x
|
|
126
|
-
localvault set MYHANDLE_BEARER_TOKEN "..." --vault x
|
|
127
|
-
|
|
128
|
-
localvault set MYBRAND_API_KEY "..." --vault x
|
|
129
|
-
localvault set MYBRAND_ACCESS_TOKEN "..." --vault x
|
|
130
|
-
|
|
131
|
-
# List all vaults
|
|
132
|
-
localvault vaults
|
|
133
|
-
# => default (default)
|
|
134
|
-
# => production
|
|
135
|
-
# => staging
|
|
136
|
-
# => x
|
|
137
|
-
|
|
138
|
-
# Unlock a specific vault for a session
|
|
139
|
-
eval $(localvault unlock --vault x)
|
|
140
|
-
localvault exec --vault x -- ruby scripts/post.rb
|
|
141
|
-
```
|
|
110
|
+
| Command | Description |
|
|
111
|
+
|---------|-------------|
|
|
112
|
+
| `team init` | Convert vault to team vault (sets you as owner, SyncBundle v3) |
|
|
113
|
+
| `team verify @handle` | Check if a user has a published public key (dry-run) |
|
|
114
|
+
| `team add @handle` | Add teammate with full vault access |
|
|
115
|
+
| `team add @handle --scope KEY...` | Add teammate with access to specific keys only |
|
|
116
|
+
| `team remove @handle` | Remove teammate's access |
|
|
117
|
+
| `team remove @handle --scope KEY` | Remove one scoped key (keeps other scopes) |
|
|
118
|
+
| `team remove @handle --rotate` | Full revocation + re-encrypt with new passphrase |
|
|
119
|
+
| `team list` | List vault members |
|
|
120
|
+
| `team rotate` | Re-key vault with new passphrase, keep all members |
|
|
121
|
+
|
|
122
|
+
### Keys
|
|
142
123
|
|
|
143
|
-
|
|
124
|
+
| Command | Description |
|
|
125
|
+
|---------|-------------|
|
|
126
|
+
| `keys generate` | Generate X25519 identity keypair |
|
|
127
|
+
| `keys show` | Display your public key |
|
|
128
|
+
| `keys publish` | Upload public key to InventList (required before others can add you) |
|
|
144
129
|
|
|
145
|
-
|
|
130
|
+
### AI / MCP
|
|
146
131
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
# Type 'default' to confirm: default
|
|
152
|
-
# New passphrase:
|
|
153
|
-
# Confirm passphrase:
|
|
154
|
-
# Vault 'default' has been reset.
|
|
155
|
-
```
|
|
132
|
+
| Command | Description |
|
|
133
|
+
|---------|-------------|
|
|
134
|
+
| `install-mcp [CLIENT]` | Configure MCP server in claude-code, cursor, windsurf, or zed |
|
|
135
|
+
| `mcp` | Start MCP server (stdio transport) |
|
|
156
136
|
|
|
157
|
-
|
|
137
|
+
All commands accept `--vault NAME` (or `-v NAME`) to target a specific vault. Default vault is `default`.
|
|
158
138
|
|
|
159
|
-
##
|
|
139
|
+
## Personal Sync
|
|
160
140
|
|
|
161
|
-
Sync vaults
|
|
141
|
+
Sync your vaults between machines — same passphrase, no team features needed:
|
|
162
142
|
|
|
163
143
|
```bash
|
|
164
|
-
#
|
|
165
|
-
localvault login YOUR_TOKEN
|
|
166
|
-
|
|
167
|
-
# Push a vault to the cloud
|
|
144
|
+
# Machine A: push your vault
|
|
168
145
|
localvault sync push
|
|
169
146
|
|
|
170
|
-
#
|
|
147
|
+
# Machine B: install, login, pull
|
|
148
|
+
brew install inventlist/tap/localvault
|
|
149
|
+
localvault login YOUR_TOKEN
|
|
171
150
|
localvault sync pull
|
|
151
|
+
localvault show # enter your passphrase — same secrets
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Check what's synced:
|
|
172
155
|
|
|
173
|
-
|
|
156
|
+
```bash
|
|
174
157
|
localvault sync status
|
|
158
|
+
# default synced 2 minutes ago
|
|
159
|
+
# production local only —
|
|
175
160
|
```
|
|
176
161
|
|
|
177
162
|
## Team Sharing
|
|
178
163
|
|
|
179
|
-
Share vault access with teammates using X25519
|
|
164
|
+
Share vault access with teammates using X25519 asymmetric encryption. The server never sees plaintext.
|
|
180
165
|
|
|
181
166
|
```bash
|
|
182
|
-
#
|
|
167
|
+
# 1. Convert to team vault (required first)
|
|
183
168
|
localvault team init -v production
|
|
184
169
|
|
|
185
|
-
#
|
|
186
|
-
localvault team
|
|
187
|
-
|
|
188
|
-
# Add a teammate with scoped access (only specific keys)
|
|
189
|
-
localvault team add @carol -v production --scope platepose DATABASE_URL
|
|
170
|
+
# 2. Verify teammate has a published key
|
|
171
|
+
localvault team verify @alice
|
|
190
172
|
|
|
191
|
-
#
|
|
192
|
-
localvault team
|
|
193
|
-
# => @alice (owner)
|
|
194
|
-
# => @bob (full vault)
|
|
195
|
-
# => @carol (scopes: platepose, DATABASE_URL)
|
|
173
|
+
# 3. Add with full access
|
|
174
|
+
localvault team add @alice -v production
|
|
196
175
|
|
|
197
|
-
#
|
|
198
|
-
localvault team
|
|
176
|
+
# 4. Or scoped — they only see specific keys
|
|
177
|
+
localvault team add @bob -v production --scope STRIPE_KEY WEBHOOK_SECRET
|
|
199
178
|
|
|
200
|
-
#
|
|
201
|
-
|
|
179
|
+
# 5. When Alice pulls, auto-unlocks via her identity key
|
|
180
|
+
# (on Alice's machine)
|
|
181
|
+
localvault sync pull production
|
|
182
|
+
# => Unlocked via your identity key.
|
|
202
183
|
|
|
203
|
-
#
|
|
204
|
-
|
|
184
|
+
# 6. Scoped members can't push
|
|
185
|
+
# (on Bob's machine)
|
|
186
|
+
localvault sync push production
|
|
187
|
+
# => Error: You have scoped access. Only the owner can push.
|
|
205
188
|
|
|
206
|
-
#
|
|
189
|
+
# 7. Rotate without removing anyone
|
|
207
190
|
localvault team rotate -v production
|
|
191
|
+
|
|
192
|
+
# 8. Full revocation + re-key
|
|
193
|
+
localvault team remove @alice -v production --rotate
|
|
208
194
|
```
|
|
209
195
|
|
|
210
|
-
|
|
196
|
+
**Prerequisites:** Teammates must have a published public key. `localvault login` does this automatically, or: `localvault keys generate && localvault keys publish`.
|
|
211
197
|
|
|
212
198
|
## MCP Server (AI Agents)
|
|
213
199
|
|
|
214
|
-
|
|
200
|
+
Give AI agents safe secret access. Keys never appear in agent context or config files.
|
|
215
201
|
|
|
216
202
|
```bash
|
|
217
|
-
#
|
|
218
|
-
|
|
203
|
+
# One-command install for Claude Code
|
|
204
|
+
localvault install-mcp claude-code
|
|
205
|
+
# Also supports: cursor, windsurf, zed
|
|
206
|
+
|
|
207
|
+
# Unlock your vault for the session
|
|
208
|
+
localvault unlock
|
|
209
|
+
|
|
210
|
+
# MCP tools available to the agent:
|
|
211
|
+
# get_secret(key, vault?) — read a secret
|
|
212
|
+
# list_secrets(vault?, prefix?) — list key names
|
|
213
|
+
# set_secret(key, value, vault?) — store a secret
|
|
214
|
+
# delete_secret(key, vault?) — remove a secret
|
|
219
215
|
```
|
|
220
216
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
"
|
|
226
|
-
"localvault": {
|
|
227
|
-
"command": "localvault",
|
|
228
|
-
"args": ["mcp"],
|
|
229
|
-
"env": {
|
|
230
|
-
"LOCALVAULT_SESSION": "<your-session-token>"
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
217
|
+
**exec_action** — agent declares intent, LocalVault executes with secrets injected. The agent never sees the key:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
localvault exec_action -- curl -s https://api.openai.com/v1/models \
|
|
221
|
+
-H "Authorization: Bearer $OPENAI_API_KEY"
|
|
235
222
|
```
|
|
236
223
|
|
|
237
|
-
|
|
224
|
+
## Multi-Project Vaults
|
|
238
225
|
|
|
239
|
-
|
|
226
|
+
One vault, many projects. Dot-notation keeps secrets organized:
|
|
240
227
|
|
|
241
|
-
|
|
228
|
+
```bash
|
|
229
|
+
# Store with project prefix
|
|
230
|
+
localvault set myapp.DATABASE_URL postgres://localhost/myapp -v work
|
|
231
|
+
localvault set api.DATABASE_URL postgres://localhost/api -v work
|
|
232
|
+
|
|
233
|
+
# View grouped by project
|
|
234
|
+
localvault show --group -v work
|
|
235
|
+
|
|
236
|
+
# Filter to one project
|
|
237
|
+
localvault show -p myapp -v work
|
|
238
|
+
|
|
239
|
+
# Export one project
|
|
240
|
+
eval $(localvault env -p myapp -v work)
|
|
241
|
+
|
|
242
|
+
# Bulk import
|
|
243
|
+
localvault import .env --prefix myapp -v work
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Session Caching
|
|
247
|
+
|
|
248
|
+
Avoid typing your passphrase repeatedly:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
eval $(localvault unlock)
|
|
252
|
+
|
|
253
|
+
# All subsequent commands skip the passphrase prompt
|
|
254
|
+
localvault get API_KEY
|
|
255
|
+
localvault exec -- rails server
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Session lives in `LOCALVAULT_SESSION` — disappears when the terminal closes.
|
|
242
259
|
|
|
243
260
|
## Security
|
|
244
261
|
|
|
@@ -246,20 +263,23 @@ See [MCP for AI Agents](https://inventlist.com/sites/localvault/series/localvaul
|
|
|
246
263
|
|
|
247
264
|
| Layer | Algorithm | Purpose |
|
|
248
265
|
|-------|-----------|---------|
|
|
249
|
-
| Key derivation | **Argon2id** (64 MB,
|
|
250
|
-
| Encryption | **XSalsa20-Poly1305** | Authenticated encryption
|
|
266
|
+
| Key derivation | **Argon2id** (64 MB, 3 iterations) | Passphrase → master key |
|
|
267
|
+
| Encryption | **XSalsa20-Poly1305** | Authenticated encryption |
|
|
251
268
|
| Key exchange | **X25519** | Team key slots + vault sharing |
|
|
252
269
|
|
|
253
|
-
-
|
|
254
|
-
-
|
|
255
|
-
- Argon2id is memory-hard
|
|
270
|
+
- Random 24-byte nonce per encryption
|
|
271
|
+
- Poly1305 authentication prevents tampering
|
|
272
|
+
- Argon2id is memory-hard (GPU/ASIC resistant)
|
|
256
273
|
- All crypto via [libsodium](https://doc.libsodium.org/) (RbNaCl bindings)
|
|
274
|
+
- SyncBundle v3 for team vaults (owner field + per-member key slots)
|
|
257
275
|
|
|
258
276
|
### Storage Layout
|
|
259
277
|
|
|
260
278
|
```
|
|
261
279
|
~/.localvault/
|
|
262
|
-
├── config.yml # Default vault
|
|
280
|
+
├── config.yml # Default vault, server URL, token
|
|
281
|
+
├── identity.key # X25519 private key (encrypted at rest)
|
|
282
|
+
├── identity.pub # X25519 public key (safe to share)
|
|
263
283
|
├── vaults/
|
|
264
284
|
│ ├── default/
|
|
265
285
|
│ │ ├── meta.yml # Salt, creation date, version
|
|
@@ -267,13 +287,19 @@ See [MCP for AI Agents](https://inventlist.com/sites/localvault/series/localvaul
|
|
|
267
287
|
│ └── production/
|
|
268
288
|
│ ├── meta.yml
|
|
269
289
|
│ └── secrets.enc
|
|
270
|
-
└── keys/ # X25519 identity keypair for sync + team access
|
|
271
290
|
```
|
|
272
291
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
-
|
|
276
|
-
|
|
292
|
+
## Server Independence
|
|
293
|
+
|
|
294
|
+
LocalVault is server-agnostic. It ships configured for `inventlist.com` but works with any host that implements the protocol (4 endpoints):
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
# Use a different server
|
|
298
|
+
localvault config set server https://vaulthost.example
|
|
299
|
+
|
|
300
|
+
# Or override per-login
|
|
301
|
+
localvault login --server https://vaulthost.example
|
|
302
|
+
```
|
|
277
303
|
|
|
278
304
|
## Development
|
|
279
305
|
|
|
@@ -281,7 +307,7 @@ See [MCP for AI Agents](https://inventlist.com/sites/localvault/series/localvaul
|
|
|
281
307
|
git clone https://github.com/inventlist/localvault.git
|
|
282
308
|
cd localvault
|
|
283
309
|
bundle install
|
|
284
|
-
bundle exec rake test
|
|
310
|
+
bundle exec rake test # 463 tests, 918 assertions
|
|
285
311
|
```
|
|
286
312
|
|
|
287
313
|
## Used by
|
|
@@ -290,4 +316,5 @@ Powers credentials management at [InventList](https://inventlist.com) — where
|
|
|
290
316
|
|
|
291
317
|
## License
|
|
292
318
|
|
|
293
|
-
|
|
319
|
+
Apache 2.0 — see [LICENSE](LICENSE).
|
|
320
|
+
Built by the [InventList](https://inventlist.com) team.
|
data/lib/localvault/cli.rb
CHANGED
|
@@ -26,7 +26,10 @@ module LocalVault
|
|
|
26
26
|
shell.say " localvault delete KEY Remove a secret"
|
|
27
27
|
shell.say " localvault import FILE Bulk-import from .env / .json / .yml"
|
|
28
28
|
shell.say " localvault env Export as shell variable assignments"
|
|
29
|
-
shell.say " localvault exec -- CMD Run a command with secrets injected"
|
|
29
|
+
shell.say " localvault exec -- CMD Run a command with secrets injected as env vars"
|
|
30
|
+
shell.say ""
|
|
31
|
+
shell.say " Use with any CLI: localvault exec -- inventlist ships list"
|
|
32
|
+
shell.say " localvault exec -- curl -H \"Authorization: Bearer $API_KEY\" ..."
|
|
30
33
|
shell.say ""
|
|
31
34
|
shell.say "VAULT MANAGEMENT"
|
|
32
35
|
shell.say " localvault vaults List all vaults"
|
data/lib/localvault/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: localvault
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nauman Tariq
|
|
8
|
+
autorequire:
|
|
8
9
|
bindir: bin
|
|
9
10
|
cert_chain: []
|
|
10
|
-
date:
|
|
11
|
+
date: 2026-04-06 00:00:00.000000000 Z
|
|
11
12
|
dependencies:
|
|
12
13
|
- !ruby/object:Gem::Dependency
|
|
13
14
|
name: thor
|
|
@@ -130,6 +131,7 @@ metadata:
|
|
|
130
131
|
homepage_uri: https://inventlist.com/tools/localvault
|
|
131
132
|
source_code_uri: https://github.com/inventlist/localvault
|
|
132
133
|
funding_uri: https://inventlist.com
|
|
134
|
+
post_install_message:
|
|
133
135
|
rdoc_options: []
|
|
134
136
|
require_paths:
|
|
135
137
|
- lib
|
|
@@ -144,7 +146,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
144
146
|
- !ruby/object:Gem::Version
|
|
145
147
|
version: '0'
|
|
146
148
|
requirements: []
|
|
147
|
-
rubygems_version: 3.
|
|
149
|
+
rubygems_version: 3.0.3.1
|
|
150
|
+
signing_key:
|
|
148
151
|
specification_version: 4
|
|
149
152
|
summary: Zero-infrastructure secrets manager
|
|
150
153
|
test_files: []
|