sopsy 2.0 · Secure Enclave · YubiKey · macOS + Linux

Secrets live in Git. Keys live in hardware.

How sopsy connects hardware keys, the Git repository, and your secrets YubiKeyGrace · PIV slotPIN + touchSecure EnclaveAlan · Apple SiliconTouch IDsopsysops + ageGit repo.sops.yaml.sopsy.yml · PRsDev secrets.env (local).env.encrypted1 · generate key in a PIV slot2 · age1yubikey1… public key3 · .sops.yaml · .sopsy.yml · .sopsy.sha4 · .env.example · .env.encrypted1 · mint key in the Secure Enclave2 · age1se1… public key3 · pending request → pull request4 · Grace checks out the branch5 · PIN + touch unwraps the data key6 · re-wrap for Alan (sops updatekeys)7 · push · merge1 · .env (plaintext, local only)2 · recipients from .sops.yaml3 · .env.encrypted (values only)4 · commit .env.encryptedNo hardware needed to encrypt

Grace bootstraps the repo with a YubiKey

$ sopsy init -s yubikey
  1. sopsy asks the YubiKey to create a private key inside one of its PIV slots. Grace types her PIN and touches the key.
  2. Only the public recipient comes back. The private key never leaves the YubiKey.
  3. sopsy writes the SOPS rules, the member list with Grace as admin, and a checksum that flags hand edits.
  4. It seeds an encrypted .env.encrypted and gitignores the plaintext .env, so it can never be committed by mistake.

A CLI for SOPS · age · Secure Enclave · YubiKey
macOS + Linux ·new in v2.0.0 →

Encrypted secrets you can actually commit to Git.
Decrypt with Touch ID or a YubiKey


Plaintext is never in the repo, never in Slack. Sleep soundly at night.

sopsy encrypts the secrets in your .env, .yml, and .json files — values only, names left in the clear. The file stays diffable and git blame-able, so you can see exactly when each key appeared and who added it, then commit the whole thing without flinching. By default every teammate's key is minted in hardware: their Mac's Secure Enclave, or a YubiKey on Intel Macs and Linux. The repository's policy decides whether the OS keychain is allowed for machines with neither.

Hardware keys decrypt with Touch ID, or a YubiKey PIN and a touch. The private key never leaves the chip, and any current member can grant the next one access. sopsy run hands the secrets straight to your app, with no plaintext file at all. No server. No subscription. No plaintext in Slack — or anywhere for that matter.

$brew install kigster/tap/sopsy
$cargo install sopsy
See the 60-second setup ↓

Built on SOPS + age — the encryption tools teams already trust. sopsy just makes them delightful.

crate v2.0.0CI passinglicense MIT / Apache-2.0os macOS · Linux🔑 YubiKeykey never leaves the chip

Make SOPS delightful.

Small, fast, colorful, and macOS-first. Your secrets stay in Git — encrypted — while the key that decrypts them never leaves the chip.

$brew install kigster/tap/sopsy
$cargo install sopsy