The Vault subsystem provides secure storage and management of sensitive information such as API keys, passwords, tokens, and other secrets. It ensures encrypted storage and controlled access to confidential data.
Role: File-based secure vault connector
Summary: Provides encrypted local file storage for secrets using JSON format. Suitable for development environments and single-node deployments requiring basic secret management.
| Setting | Type | Required | Default | Description |
|---|---|---|---|---|
file |
string | No | ~/.smyth/vault.json |
Path to the vault file |
shared |
string | No | "default" |
Shared team name for cross-team secret access |
Example Configuration:
import { SRE } from '@smythos/sre';
SRE.init({
Vault: {
Connector: 'JSONFileVault',
Settings: {
file: './secrets/vault.json',
shared: 'production',
},
},
});
vault.json research path: The JSONFileVault connector will search for the vault.json file in the following order:
file setting.smyth/vault.json file.smyth/vault/vault.json file.smyth/.sre/vault.json file~/.smyth/vault.json file~/.smyth/vault/vault.json file~/.smyth/.sre/vault.json fileThe search paths and the used path are visible in SRE logs in case you need to debug the vault file search.
Use Cases:
Security Notes:
Role: AWS Secrets Manager connector
Summary: Provides integration with AWS Secrets Manager for enterprise-grade secret storage with automatic rotation, fine-grained access control, and audit logging.
| Setting | Type | Required | Default | Description |
|---|---|---|---|---|
region |
string | Yes | - | AWS region where secrets are stored |
awsAccessKeyId |
string | No | - | AWS access key ID (can use IAM roles instead) |
awsSecretAccessKey |
string | No | - | AWS secret access key (can use IAM roles instead) |
Example Configuration:
import { SRE } from '@smythos/sre';
SRE.init({
Vault: {
Connector: 'SecretsManager',
Settings: {
region: 'us-east-1',
awsAccessKeyId: process.env.AWS_ACCESS_KEY_ID,
awsSecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
},
},
});
Use Cases:
Security Features:
Role: No-operation vault connector
Summary: Provides a null implementation that discards all vault operations. Used for testing or when secret management is handled externally.
| Setting | Type | Required | Default | Description |
|---|---|---|---|---|
| No specific settings | any | No | - | NullVault accepts any settings object |
Example Configuration:
import { SRE } from '@smythos/sre';
SRE.init({
Vault: {
Connector: 'NullVault',
Settings: {},
},
});
Use Cases:
All vault connectors support these standard operations:
| Operation | Description |
|---|---|
get(keyId) |
Retrieve a secret value |
set(keyId, value) |
Store a secret value |
delete(keyId) |
Remove a secret |
exists(keyId) |
Check if secret exists |
list() |
List all available secrets |
import { SRE } from '@smythos/sre';
SRE.init({
Vault: {
Connector: 'JSONFileVault',
Settings: {
file: process.env.VAULT_PATH || './.smyth/vault.json',
fileKey: process.env.VAULT_KEY_PATH,
},
},
});
import { SRE } from '@smythos/sre';
// Development
SRE.init({
Vault: {
Connector: 'JSONFileVault',
Settings: {
shared: 'development',
},
},
});
// Production
SRE.init({
Vault: {
Connector: 'SecretsManager',
Settings: {
region: 'us-east-1',
},
},
});