Features¶
- Git-like commands:
show,log,diff,ls,tag - Staging workflow:
edit→status→diff→apply(review changes before applying), plusexport/importfor portable, per-service snapshots - Version navigation:
#VERSION,~SHIFT,:LABELsyntax - Colored diff output: Easy-to-read unified diff format
- Multi-cloud: AWS SSM Parameter Store / Secrets Manager, Google Cloud Secret Manager, and Azure Key Vault / App Configuration
- Secure staging: Working staging state is encrypted at rest with a data key stored in the OS keychain (override with
SUVE_STAGING_KEY). Each encrypted file is bound to its scope and service, so a file moved to another scope or service fails to decrypt, and an unencrypted file found while a key is configured is reported with a warning. When no key is available (no keychain backend and noSUVE_STAGING_KEY), an interactive session falls back to plaintext with a warning, while a non-interactive one refuses to write unencrypted unlessSUVE_STAGING_ALLOW_PLAINTEXTis set. Exported snapshot files carry a separately passphrase-encrypted payload (Argon2 + AES-GCM; an empty passphrase writes plaintext). - TUI mode: Keyboard-driven terminal UI via
--tuiflag (built withBubble Tea); ships in every build, including the dependency-free CLI/TUI-only one
- GUI mode: Desktop application via
--guiflag (built with
Wails)
Metadata Terminology¶
suve uses AWS-friendly terms and maps each backend's native concept onto three axes. Mind two naming traps: Google Cloud "labels" are suve tags (key=value metadata), and Azure App Configuration's "label" is suve's namespace (an identity axis, --namespace/--ns) — neither is the other.
| Backend | suve tag ( tag/untag) |
suve :LABEL(version selector) |
suve description ( --description) |
suve namespace ( --namespace) |
|---|---|---|---|---|
| AWS Parameter Store | resource tags | — | resource description | — |
| AWS Secrets Manager | resource tags | version staging labels (AWSCURRENT / AWSPREVIOUS / custom) |
resource description | — |
| Google Cloud Secret Manager | resource labels | — | resource annotation: description=... |
— |
| Azure Key Vault | tags on a specific version | — | — | — |
| Azure App Configuration | tags on a specific version | — | — | label — the (key, label) composite address (unset = empty string, or dev / prd / …) |
All key=value metadata is unified as tags; suve adds no per-provider command or flag aliases. For the App Configuration label axis, see Namespaces.