Three components: a PAM module (pam_prmana.so), a client agent (prmana-agent), and a shared OIDC/JWKS library (prmana-core). All Rust.
DPoP keys can be software, YubiKey (PKCS#11), or TPM 2.0. No gateway, no SSH CA, no patches to sshd. Standard ssh client, standard sshd, PAM in between.
Tested against Keycloak, Auth0, Google, and Entra ID.
The name is from Sanskrit — pramana (प्रमाण) means "proof."