Encrypted local storage
Secret values are encrypted with XChaCha20-Poly1305 in a SQLite vault. Protect the vault key with your OS credential store, a passphrase, or both.
Open source · Rust-native · Local-first
Store development credentials in an encrypted local vault. Commit references, give your application the values it needs, and leave plaintext .env files behind.
SourceOrrery is a local-first secrets platform written in Rust. Use the CLI to manage credentials and a value-free project manifest to declare what your app needs. Read them through an SDK, or inject them into a child process at launch.
Secret values are encrypted with XChaCha20-Poly1305 in a SQLite vault. Protect the vault key with your OS credential store, a passphrase, or both.
Declare which secrets your project needs in its manifest.
Inline value fields are rejected; keep names and other metadata free of secrets too.
Inspect names, versions and status without printing secret values.
Revealing a value requires an explicit get --reveal.
Version values, enforce activation and expiry, recover soft-deleted secrets, and inspect a tamper-evident audit log.
Install SourceOrrery, then run these commands in your project directory. The secret prompt is hidden; values are never command-line arguments.
sourceorrery vault create developmentsourceorrery secret set database-password --vault developmentsourceorrery secret list --vault developmentDeclare the secret in a project manifest. The vault and secret name resolve to
sourceorrery://development/database-password:
[project]name = "my-app"vault = "development"
[secrets.database-password]env = "DATABASE_PASSWORD"sourceorrery checksourceorrery run -- npm startnpm start receives DATABASE_PASSWORD; your parent shell is unchanged.
The child process can read and disclose its environment, so run code you trust.
The getting started guide covers unlocking, verification
and working without an OS credential store.
All SDKs are read-only and share the Rust core’s semantics. Manage vaults and secret versions with the CLI, then read values through a scoped accessor in your application.
| Protection | Available today |
|---|---|
| Secret values encrypted in the vault | Yes. Names, tags and other metadata remain visible. |
| References instead of credentials in project files | Yes, when you keep secret values out of names, comments and metadata. |
| Version policy and tamper-evident audit records | Yes. A full rollback of the vault needs an external checkpoint to detect. |
| Isolation from an agent running as your user | No. Local unlock access is the current boundary. |
Read the threat model before choosing where to use SourceOrrery. It distinguishes vault protection from secrets copied into application memory, logs, process environments or other files.
The CLI and SDKs use the same Rust implementation. A manifest stores references, the local vault stores encrypted values, and the application chooses when to resolve a secret.