SSH key vault and agent · Windows and Linux · no cloud

SSH keys that know where they're going.

One encrypted vault, unlocked by your YubiKey. An agent that asks before anything reaches root, and tells you afterwards about logins it didn't make.

The keyward loop Three steps in a cycle. Decide: the agent knows the server and what the account can do. Short-lived: approval grants a login for minutes. Verify: the server's accepted logins are compared with what keyward signed. DECIDE root@dj? Ask first. It knows the server and the account GRANT Approve for minutes A touch, then it expires VERIFY Logins keyward didn't make Server log against what was signed every audit feeds the next decision
Decide and verify are built. Decide, grant and verify are all built: approvals, short-lived certificates, and a report that checks afterwards.

The vault

Keys that never leave.

Everything is encrypted at rest and signed inside the agent, so ssh never sees a private key. Unlock with a YubiKey touch and PIN, or a passphrase. A 24-word phrase recreates every key you generated, on a new machine, offline.

About the vault →
dj-2026 · yubi-2026 · github XChaCha20-Poly1305 · Argon2id · FIDO2

The approval

It asks when it matters.

keyward verifies which server a signature is for and what that account can do there. Root, sudo and anything arriving through agent forwarding always ask. Approving is a real touch or passphrase, not a click malware could fake.

How approvals work →

The audit

It checks afterwards.

A tiny server half, reached only through ssh, reports every account, what it can do, and when each key was last used. keyward compares that with what it signed. A login it didn't make means a key exists outside the vault, and you hear about it.

About servers →
Pre-release Built in the open, in Rust, with standard primitives only. What exists today →