Sign and verify in your browserno install required.

Generate a ghost identity, pick a ring, sign a message, and produce the same trailer block the CLI produces. Everything runs locally — your secret never leaves the page. When you close the tab, the identity is gone unless you exported it.

Step 01 — get an identity

Generate a fresh keypair locally. Your secret is a random 256-bit scalar and never leaves this page. Public key is derived deterministically.

Or — import an existing identity
paste a previously exported identity json
StatusNO IDENTITY
  • keypair generated
  • public key derived
  • ready to sign

What stays in the browser.

/ 01

Secret keys never leave the page

Identities are generated client-side via Web Crypto. We have no API endpoint that receives secret material. If you don't export it, it's gone when you reload.

/ 02

Same crypto as the CLI

lib/lsag.ts is a port of the CLI's signer with identical wire format. A signature produced here verifies in the CLI and vice versa — bit-for-bit reproducible.

/ 03

Rings are public

Picking a ring from the registry only loads its public members and ring root. The ring's deterministic ring root means the verifier can prove the ring you used without trusting our server.

/ 04

Demo, not git

This is for showing the protocol. Real git commits still need the CLI because git binary signs the actual commit object — but the trailer block produced here is real LSAG output.