A 2FA authenticator for developers, DevOps and sysadmins

Updated 21 September 2026.

Developers hit the limits of authenticator apps earlier than anyone else, because the job hands out second factors faster than any other job. A realistic inventory: GitHub and GitLab, an AWS root account plus an IAM user per account per environment, Cloudflare, a registrar, npm and PyPI, a password manager, a VPS provider, monitoring, the CI system, a payments dashboard — and then the same list again for every client you administer.

None of that fits in a flat list, and the parts that break first are exactly the ones a consumer-focused authenticator is not designed for.

Structure that matches how infrastructure is actually organized

KeyNesta files codes as vault → space → nested groups → entry, with tags cutting across. In practice that means provider, then environment, then account — or client, then provider — and search that knows the whole path, so prod aws root resolves without you remembering the filing:

Infra                    Clients
 ├─ AWS                   ├─ Client A
 │   ├─ Production        │   ├─ Cloudflare
 │   │   └─ root  #root   │   └─ AWS  #handover
 │   └─ Staging           └─ Client B
 ├─ Cloudflare                └─ Registrar
 └─ Registrars

Client work generally belongs in its own vault rather than a space: separate passphrase, separate master key, separate sync account, so it can be handed over or abandoned cleanly at the end of an engagement. The full reasoning is on managing many accounts.

The standards support that actually bites

Consumer authenticators tend to assume SHA-1, six digits, thirty seconds, because that is what consumer services issue. Enterprise and infrastructure providers do not always agree, and an app that silently ignores the parameters in the QR produces codes that are wrong for reasons nobody can debug at 2am.

What each parameter does, and why a wrong clock breaks everything: TOTP vs HOTP.

Machine-readable in and out

Import accepts Google Authenticator's transfer protobuf, Aegis, 2FAS, generic JSON, CSV, and a plain list of otpauth:// URIs — which is the one that matters when you are consolidating from a script, a spreadsheet or another engineer's handover notes. Duplicates are flagged in a preview before anything is written, and the whole import is undoable in one action.

Out is the same story: a plain standard export whenever you want one, and encrypted backup files that are just files, encrypted with a password you chose, stored wherever you keep things. No API is required to get your own data, and nothing is retained on the way out.

Zero-knowledge, for people who would otherwise self-host

The usual developer answer to cloud sync is not to use it. KeyNesta's sync is built so that refusing is not necessary: each entry, group and space is encrypted individually on the device with a master key the server never sees, under AES-256-GCM with per-object AAD, and the key is wrapped by a scrypt-derived KEK from your passphrase. The server holds object ids, version numbers and ciphertext. Writes are version-checked with conflict copies rather than last-write-wins, deletions are final tombstones, and device revocation is enforced per request.

If you would rather read the parameters than the paragraph, they are all on the encryption architecture page, threat model and known limits included.

What is missing, stated plainly

You will find this out in the first week, so here it is in the first five minutes:

Most of those are on a roadmap. None of them are true today, and a comparison table that quietly ticked them would be worth less to you than this list.

Frequently asked questions

Is there a CLI, an API or a browser extension?

No, none of the three today. The web app at app.keynesta.com is the desktop and browser story, and it needs no install or sign-up. Codes cannot be generated from a script through KeyNesta.

Does KeyNesta handle AWS, GitHub and Cloudflare tokens correctly?

Yes. It reads every parameter from the otpauth:// URI the service issues — SHA-1, SHA-256 or SHA-512, six to eight digits, custom periods, and HOTP counters — rather than assuming the consumer defaults, which is where apps typically go wrong with enterprise-issued tokens.

Can a team share a set of codes?

Not as a feature. There are no team vaults, shared groups, roles or audit logs. The workable pattern today is a dedicated vault whose passphrase is shared out of band, with the understanding that it gives no per-person revocation and no audit trail.

Can I bulk import from a list of otpauth:// URIs?

Yes, alongside Google Authenticator transfer QRs, Aegis, 2FAS, JSON and CSV. Paste or upload the list, check the preview with its duplicate flags, and undo the whole import in one action if it is not what you expected.

Try KeyNesta free. The web app needs no sign-up.

Open the web app All platforms