Palimpsest Get in touch

Palimpsest · Product

How it works

A password scheme where how you type it matters, not just what you type. What Palimpsest does, what it’s built with, and how far along it is.

The premise

Say two people both end up with hello in a password field. One typed it straight through. The other typed hellp, hit backspace and typed o. With Palimpsest, those are different passwords. It records every edit in order, turns that into a standard transcript, and uses the transcript as the credential.

It’s built as a set of TypeScript packages: the core that turns edits into a transcript, a browser capture SDK, server-side verification, React, Vue and Svelte adapters, and an Auth0 integration. It isn’t published to npm yet. The threat model comes first in the docs: it protects against attacks that can see what ends up in the field, but not against someone who controls the keyboard input itself.

What’s included

Every keystroke and edit, in order, turned into a consistent transcript

Characters you typed and then deleted never show up in the field, but still count toward the password

Argon2id key derivation, replay protection and rate limiting, with an optional OPAQUE mode

A clear threat model, including what the scheme doesn’t protect against

How it’s built

Palimpsest is built on TypeScript, Argon2id, OPAQUE and Auth0.

It lives in a private repository, and its history isn’t published.

How the work is done

Every project here starts as a written spec, and the spec stays the source of truth once there’s code. The repository keeps a build plan with current status, an append-only decision log of where the code departed from the plan, and a handoff document that describes where things stand, including the unfinished parts.

That’s how one person keeps this many projects moving, and it’s what this page is written from.

Current state

In development. Being worked on now.

The source is private, so the way to check what this page says is to use the product.

Next

Put Palimpsest in your pipeline

Ask about hooking it up to the repositories and agents you already run.

This site isn't finished. Anything on it may still change, and none of it is binding until the site is live.