4.5 KiB
Dew Vault Secret Manager
Dew Vault is a secret manager for your projects. It helps you keep secrets out of
version control by storing each secret as an encrypted file under .project/vault.
By default the vault password is stored in .project/secrets/dew.vault.password.
Config
Vault settings live in .project/dew.yaml under dew.vault.
dew:
vault:
password_file: .project/secrets/dew.vault.password
storage_dir: .project/vault
generators:
postgres_password:
type: random_password
description: Generate random PostgreSQL passwords.
config:
length: 64
include_symbols: true
jwt_secret:
type: random_token
description: Generate JWT signing secrets.
config:
encoding: base64
bytes: 48
service_uuid:
type: uuid_v4
description: Generate stable-looking unique IDs.
generators maps a generator name (for example postgres_password) to a built-in
generator definition. Values under config are defaults and can be overridden per
run or stored in secret rotation metadata.
Built-in generator types are resolved inside Dew, so secrets can be generated without depending on host binaries.
Commands
Most commands support --format [default|json] (default is default) for
machine-friendly automation.
Initialize Vault
Initialize the vault storage and metadata.
dew vault init
dew vault init --password-file .project/secrets/dew.vault.password
List all secrets
List stored secrets.
dew vault list
dew vault list --format json
Set a secret
set stores or replaces a secret and optional metadata.
dew vault set <secret-name> # Prompts for secret value
dew vault set <secret-name> --env ENV_VAR_NAME # Uses value from environment variable
dew vault set <secret-name> --file /path/to/secret.txt # Uses value from file
echo "secret value" | dew vault set <secret-name> # Uses piped stdin
# Include metadata for automated rotation requirements
dew vault set DB_PASSWORD --metadata '{"rotation":{"enabled":true,"generator":"postgres_password","length":64}}'
dew vault set DB_PASSWORD --metadata-file .project/vault/db_password.meta.json
Get a secret
get retrieves a secret by name.
dew vault get <secret-name>
dew vault get <secret-name> --format json
Update a secret
update patches secret metadata and/or value. Omit value source flags to edit
metadata only.
dew vault update <secret-name> --env ROLLED_PASSWORD
dew vault update <secret-name> --metadata '{"rotation":{"enabled":false}}'
dew vault update <secret-name> --metadata-file .project/vault/db_password.meta.json
Rename a secret
rename changes a secret identifier while preserving value and metadata.
dew vault rename OLD_NAME NEW_NAME
dew vault rename OLD_NAME NEW_NAME --format json
Generate a secret value
generate runs a built-in generator without writing to the vault by default.
dew vault generate postgres_password --length 64 --include_symbols
dew vault generate jwt_secret --bytes 64 --encoding base64
dew vault generate postgres_password --service payments --username app_user --format json
Pipe generated output directly into set when needed:
dew vault generate postgres_password --service payments | dew vault set DB_PASSWORD
Rotate secrets
rotate rewraps secrets with a new vault password when run without a name.
When run with a secret name, it rotates only that secret. For a secret with rotation
metadata (rotation.enabled: true and rotation.generator), Dew invokes that
configured built-in generator using the provided rotation values.
dew vault rotate
dew vault rotate <secret-name>
dew vault rotate <secret-name> --format json
Delete a secret
delete removes a secret and metadata from the vault.
dew vault delete <secret-name>
dew vault delete <secret-name> --format json
Metadata format for rotation-aware secrets
Attach arbitrary metadata and include rotation policy details. Example shape:
{
"rotation": {
"enabled": true,
"generator": "postgres_password",
"service": "payments",
"username": "app_user",
"length": 64
},
"notes": "Rotate monthly and update app config via sidecar"
}
Rotation flow:
- Define a built-in generator in
dew.yamlunderdew.vault.generators. - Attach
rotation.generatorand generator args to the secret metadata. - Run
dew vault rotate <secret-name>to rotate one secret, ordew vault rotateto rotate all configured secrets.