KrypticKryptic

Read the code that sees plaintext

Everything that can see a secret in plaintext is open source, and the server-side platform only ever stores ciphertext.

The rules the architecture is built on

Anything that touches plaintext is open source

The encryption engine, the daemon, and every language SDK can see secrets in plaintext - so they are published under GPL-3.0 (daemon) and Apache-2.0 (encryption engine and SDKs), auditable before any sales conversation. No NDA, no trust-us.

No custom cryptography

AES-256-GCM, P-256 ECDH, and Argon2id from platform crypto libraries, composed - never reimplemented. The engineering lives in the key hierarchy, envelope format, and rotation behavior.

Our servers cannot read your secrets

Values are encrypted end-to-end: your browser, daemon, or CI runner holds the org key, and the server stores only ciphertext and key grants sealed to your devices. There is no server-side decrypt path to misuse.

Memory-only on the client

The daemon holds secrets in memory with a 5-minute TTL and serves them over a local OS socket that never crosses a network. Nothing is written to disk on developer machines.

What protects your secrets

End-to-endEach organization has a 256-bit org key that exists only on your clients. It reaches your browser, daemons, and CI machines as P-256 sealed-box grants; the server stores ciphertext it cannot open.
At restSecret values are AES-256-GCM envelopes (96-bit nonces, 128-bit tags) encrypted client-side under the org key before they are sent to us.
Context bindingEvery ciphertext is bound to its secret and environment via associated data - rows cannot be swapped in storage undetected.
Key rotationOrg keys rotate client-side: an admin’s browser re-encrypts every value under a fresh key and re-grants it to active devices in one atomic change. Lost passphrases recover via a one-time recovery code.
Passwords & machine secretsArgon2id (64 MiB, 3 iterations), versioned parameters, constant-time verification. Refresh and invitation tokens are stored only as SHA-256 hashes.
In transitTLS 1.3 to the platform; local daemon-to-SDK delivery over a unix socket (macOS/Linux) or named pipe (Windows) with user-only permissions.
Sessions15-minute access tokens, rotating refresh tokens, org-configurable absolute session expiry, per-device revocation.

The open-source boundary

The encryption engine ships with a SECURITY.md describing the full key hierarchy - what is derived from what, where each key lives, and exactly what the server can and cannot see - plus the test vectors that prove it. The daemon and CLI are GPL-3.0. The encryption engine and all eight language SDKs (.Net, Node.js, Python, Java, Go, Ruby, C++, Rust) are Apache-2.0. All live in the same GitHub organization.

Read the code on GitHub

Reporting a vulnerability

Report suspected vulnerabilities to [email protected]. Please do not open public issues for security reports. We aim to acknowledge within five business days. That is a target, not an SLA. We are not a CVE Numbering Authority; see the disclosure policy for scope and how CVE IDs are requested.