About

A password manager that cannot read your passwords.

Most tools that hold your secrets can technically open them. This one can't — and that single constraint decides everything about how it works. Here's the whole thing: what it stores, how the encryption actually functions, what it protects you from, and what it deliberately can't do.

The problem isn't that you forget passwords

It's that you have too many secrets, of too many shapes, and nowhere honest to put them.

A working developer or founder is carrying, at any moment: a few dozen logins, a handful of API keys, two-factor codes for the accounts that matter, a company card, a recovery phrase they can never lose, and a scattering of credential files — a service-account JSON, an AuthKey_XXXX.p8, a signing certificate. Those live in wildly different places. Logins end up in the browser. API keys end up in a .env that gets copied into Slack "just this once". The recovery phrase ends up in a Notes app. The key files end up in ~/Downloads, and then on a new laptop they're simply gone.

Every one of those is the same category of thing: a short string of bytes that grants access, that you must keep, and that you must never leak. The reason they end up in five different places is that most password managers only really model one shape — the website login — and everything else gets shoved into a free-text note.

So the goal here is narrow and specific: one encrypted place for every shape of secret, that opens on every device you own, and that stays readable to exactly one person.

What zero-knowledge actually means

The term gets used loosely enough to be nearly meaningless in marketing copy, so here is the concrete version.

Most services encrypt your data at rest. That's real, and it protects you if someone steals a hard drive out of a datacentre. But the service itself holds the key — it has to, because it decrypts your data to show it to you in a web page. Which means an administrator, a compromised server, a subpoena, or a bug in the wrong endpoint can all produce plaintext.

Zero-knowledge inverts that. The key is derived on your device and never leaves it. The server is handed ciphertext and asked to store it. It has no key, no way to derive one, and no way to tell whether a given blob is a password, a photo, or noise. When you read your vault, your own device does the decrypting.

The test for whether something is genuinely zero-knowledge is uncomfortable and simple: if you forget your secret, can they get your data back? If yes, they had the key. There is no third answer.

This is why the PIN below is not a "password you log in with". It's an ingredient in the key. Nothing on any server ever compares it to anything.

How the encryption works

No hand-waving — these are the actual primitives, and they're identical on every device.

Deriving the key

Your key comes from two things: your Tieddr Account identity (a stable account id) and your 6-digit PIN. They're combined and run through PBKDF2-HMAC-SHA256 at 210,000 iterations — the OWASP recommendation — against a random 16-byte salt, producing a 256-bit key.

The iteration count is the point. A 6-digit PIN is only a million possibilities, which a computer would otherwise exhaust instantly. Forcing 210,000 hash rounds per guess makes brute force expensive, and because the key derivation happens on your device against ciphertext an attacker would first have to steal, there's no login endpoint to hammer. The account id being mixed in means two people with the same PIN never share a key.

Encrypting the data

Each entry is encrypted with AES-256-GCM — an authenticated cipher. That second word matters: GCM doesn't just hide the contents, it detects tampering. If a single byte of stored ciphertext is altered, decryption fails loudly rather than returning quietly corrupted data. Every single write gets a fresh random 12-byte nonce, so saving the same password twice produces two completely different ciphertexts, and nobody watching the store can infer anything from patterns.

What the server actually holds

FieldWhat's in it
CiphertextAES-256-GCM encrypted bytes of the entry. Opaque.
NonceA random 12-byte value per write. Not secret, and useless alone.
Account idWhich vault the blob belongs to, so your devices can find it.
TimestampUsed to resolve which edit is newer.
Salt + verifierLets a new device reproduce your key from your PIN, and reject a wrong PIN before it corrupts anything. Contains no key.

That's the complete list. No titles, no URLs, no usernames, no searchable metadata — those all live inside the ciphertext. The store can tell you have some number of entries; it can't tell you have a Coinbase account.

Where the key lives

Only in memory, only while unlocked. It's never written to disk, never serialized, and never sent anywhere. Close the app and it's gone; you re-enter the PIN and it's derived again. On the desktop and in the browser it also auto-locks after inactivity, and at rest the local cache holds ciphertext only.

What it stores

Six shapes, because those are the six shapes that actually exist:

The key file problem

There's a category of secret that password managers have quietly ignored for a decade: the credential that arrives as a file, exactly once.

You've met all of them:

Lose one and you don't recover it — you revoke it, reissue it, and then update every deploy pipeline that referenced it. The standard workarounds are all bad: leave it in ~/Downloads and lose it with the laptop; commit it to a private repo and hope; email it to yourself and put a permanent secret in your mailbox forever; paste it into a notes app in plaintext.

Here, a key file is a first-class entry. You add the file, and its bytes are encrypted on your device and stored inside the entry itself, protected by exactly the same AES-256-GCM as your passwords. It syncs to every device you own. On the web you download the original file back, byte for byte; on your phone it sits under Secrets and you can copy its contents straight out.

Because the file rides inside the encrypted entry rather than being handed to a storage bucket, there's no second system holding your credential under different rules. It's the same envelope, the same key, the same guarantees.

Practical limit: these are credentials, not archives. A service-account JSON is around 2 KB and an AuthKey .p8 about 1.7 KB, so the cap sits far above anything you'd actually store.

How syncing works without trusting the sync

The device is always the source of truth for reading. The vault on your phone is a complete local copy, so opening it never waits on a network — it works on a plane, on hotel wifi, in a lift.

Syncing is a background reconcile against an encrypted mirror: your device pulls every blob for your account, merges by last-write-wins on each entry's own timestamp, and pushes anything it holds that's newer. Because every blob crossing the wire is ciphertext produced by a key the server has never seen, the mirror is a dumb store of opaque bytes. It could be operated by someone hostile and the guarantee wouldn't change.

The same design is what lets a second device join at all: it signs in with the same account, you enter the same PIN, the same key is reproduced, and the existing ciphertext simply opens.

Where it runs

All four are the same vault. An entry saved in a browser is on your phone before you've picked it up, because they're not four products — they're four windows onto one encrypted store, and they all run identical cryptography.

The threat model, stated honestly

Security writing that only lists strengths is marketing. Here's both halves.

What this protects you from

What it does not protect you from

Versus the alternatives

Genuinely — for a lot of people, the browser's built-in store is fine, and it's certainly better than reuse. The differences worth knowing:

ApproachWhere it falls down
Browser's saved passwordsWebsite logins only. Tied to that browser's account and unlocked by your OS session, so anyone at your unlocked machine has them. No API keys, key files, cards-with-CVC or 2FA.
Notes appUsually plaintext, usually synced to a provider who can read it, and it becomes the least-searchable place you own.
A .env fileFine locally, catastrophic in transit. It ends up in Slack, in a screenshot, in a repo.
A password on paperGenuinely decent against remote attackers, useless for a 4 KB service-account JSON, and it doesn't autofill.
Reusing one passwordOne breach anywhere is a breach everywhere. This is how it actually happens.

Privacy

The short version: the contents of your vault are mathematically unavailable to us, and we're not interested in the rest either.

See the privacy policy and terms for the formal version.

Questions people actually ask

What does zero-knowledge actually mean?

It means the server storing your data has no way to read it. Your encryption key is derived on your device from your account identity and your PIN, and it is never transmitted. What syncs is AES-256-GCM ciphertext. Nobody operating the service can decrypt it, because they never hold the key.

What happens if I forget my PIN?

Your vault cannot be recovered. The PIN is an input to the key derivation, not a password checked against a server, so there is no reset link that could bring the data back. That is the direct trade-off for the server never being able to read your vault. Anyone offering both zero-knowledge encryption and a full password reset is holding a copy of your key somewhere.

Can a password manager store key files like a service-account JSON or an AuthKey .p8?

Yes. The file's bytes are encrypted on your device and stored inside the vault entry itself, so a Google Cloud or Firebase service-account JSON, an App Store Connect AuthKey .p8, or a certificate is protected exactly like a password and syncs to every device you own. This matters because those files are typically issued once and cannot be downloaded again.

Does it work offline?

Yes. The vault on your device is the source of truth for reading. Sync is a background reconcile against an encrypted mirror, so you are never waiting on the network to look something up, and changes made offline are pushed when a connection returns.

How is this different from letting a browser save passwords?

A browser's built-in store generally only handles website logins, is tied to that browser's account, and unlocks with the operating-system session. A dedicated vault also holds API keys, key files, 2FA codes, card details and recovery phrases, is unlocked by a secret only you know, and moves across browsers, phones and desktops.

Is AES-256-GCM with PBKDF2 strong enough?

AES-256-GCM is an authenticated cipher, so it detects tampering as well as hiding contents, and it is the same primitive used to protect TLS traffic. PBKDF2-HMAC-SHA256 at 210,000 iterations follows the OWASP recommendation, and deliberately makes each guess at your PIN expensive. Every write uses a fresh random nonce, so identical entries never produce identical ciphertext.

Keep your secrets where only you can reach them.

Free to start. Encrypted from the first tap.