Secret manager for aux4. This package provides the secret command group and dispatches to provider packages like aux4/secret-1password that handle the actual secret storage.
aux4 resolves secret:// URIs at runtime so credentials never appear in .aux4 configuration files.
aux4 aux4 pkger install aux4/secret
secret:// URIsecret://<provider>/<vault>/<item>/<field>
| Segment | Description | |------------|-----------------------------------------------------------------------------| | provider | The secret provider name (e.g., 1password). Must match an installed aux4/secret-<provider> package | | vault | The vault or namespace where the secret lives | | item | The item name. Can contain / for nested paths | | field | The field to retrieve (e.g., password, username, credential) |
Examples:
secret://1password/Personal/GitHub/password
secret://1password/Work/AWS/access-key
In variable defaults:
{
"name": "apiToken",
"default": "secret://1password/Work/deploy-service/credential"
}
In set: instructions:
"execute": [
"set:password=secret://1password/Work/database/password",
"connect.sh --password ${password}"
]
Via --var flag:
aux4 my-command --var apiKey=secret://1password/Work/service/api-key
The user can always override a secret default with an explicit --varName <value>.
When multiple variables reference the same provider and item, aux4 fetches them in a single call:
{
"name": "username",
"default": "secret://1password/Work/MyApp/username"
},
{
"name": "password",
"default": "secret://1password/Work/MyApp/password"
}
Use otp as the field name to retrieve a TOTP code:
secret://1password/Work/GitHub/otp
| Provider | Package | Backend | |----------|---------|---------| | 1password | aux4/secret-1password | 1Password CLI |
aux4 aux4 pkger install aux4/secret-1password
Every secret provider must implement the following commands under the secret:<provider> profile. The commands and their interfaces are the same across all providers.
Retrieves secret fields as a JSON object.
aux4 secret <provider> get --ref <vault/item> --fields <field1,field2,...> [--otp <true|false>]
| Variable | Description | Default | |----------|-------------|---------| | ref | Secret reference path (e.g., Personal/GitHub) | required | | fields | Comma-separated field names to retrieve | required | | otp | Include one-time password | false |
Output:
{
"username": "john",
"password": "abc123"
}
Lists secrets as secret:// references. Users can copy these directly into .aux4 files.
aux4 secret <provider> list [--vault <name>] [--withFields <true|false>]
| Variable | Description | Default | |----------|-------------|---------| | vault | Filter by vault name | all vaults | | withFields | Show field names for each item | false |
Output:
secret://provider/Vault/ItemName
secret://provider/Vault/AnotherItem
Searches secrets by name (case-insensitive).
aux4 secret <provider> search --query <text> [--vault <name>] [--withFields <true|false>]
| Variable | Description | Default | |----------|-------------|---------| | query | Search query | required | | vault | Filter by vault name | all vaults | | withFields | Show field names for each item | false |
Creates a new secret.
aux4 secret <provider> create --vault <name> --item <title> --fields <key=val,key=val,...> [--category <type>]
| Variable | Description | Default | |----------|-------------|---------| | vault | Target vault | required | | item | Item title | required | | fields | Comma-separated key=value pairs | required | | category | Item category | Login |
Output: the secret:// reference for the created item.
Updates a single field of an existing secret.
aux4 secret <provider> set --ref <vault/item> --field <name> --value <value>
| Variable | Description | Default | |----------|-------------|---------| | ref | Secret reference path | required | | field | Field name to update | required | | value | New value | required |
A secret provider is a standard aux4 package that adds commands under the secret profile. The package must:
aux4/secret as a dependencysecret -> <provider> -> secret:<provider> using profile routingget command following the contract aboveSee the aux4/secret-1password package source for a complete provider implementation example.