Skip to content

Technical deep-dive

End-to-end by design.

Peach is built so that the strongest claims are architectural, not procedural: no hosted vaults, no account database, and no product telemetry stream to "promise" not to misuse. The trust boundary stays on your device and on the peers you explicitly paired with. Sync passes through a relay, but the relay is outside that boundary by construction — it never stores or accesses any vault or user data, and cannot read or alter a frame it forwards.

peach:v3:entries=247:zstd:aes256gcm:argon2id

Zero-knowledge vault encryption

No account creation

No product telemetry

End-to-end encrypted sync — our relay, your own, or none

Portable PeachScript restore path

Vault container

Peach encrypts vault data locally before it ever leaves process memory boundaries intended for serialization. PeachScript backups are derived from the encrypted container rather than from plaintext records.

  • Compression: Zstandard on the structured vault payload before encryption.
  • Encryption: AES-256-GCM for authenticated confidentiality.
  • Key derivation: Argon2id with per-vault salt and high-memory parameters tuned for interactive unlocks.

Zero-knowledge architecture

There is no hosted account system and no recovery server. Recovery is handled on-device: a 12-word sequence generated locally when you set up Peach, and PeachScript backups you export yourself.

  • No email addresses, usernames, or device identifiers are required for unlock or restore. Your master passphrase still is.
  • No vault material is escrowed on remote infrastructure.
  • All restore flows are deterministic from user-held material.
  • Generic website analytics, when present, are limited to traffic and performance measurement and are not tied to product accounts because no product accounts exist.
  • Purchases are processed by Polar. Peach does not retain payment data.

PeachScript encoding

PeachScript is a dense textual transport wrapper around the encrypted vault package. Each export is a point-in-time snapshot of the vault data in that moment. Peach maps encrypted bytes into private-use runes so the backup remains copyable, storable, and restorable with the backup password instead of any vendor backend.

  • Why PeachScript: the private symbol set keeps the export visibly distinct from ordinary text while remaining copyable.
  • Snapshot semantics: the backup reflects the vault state at export time rather than acting as live sync.
  • Header format: `peach:v2:entries=247:zstd:aes256gcm:argon2id`.
  • Payload: compressed encrypted vault blocks encoded into the PeachScript private-use range.
  • Integrity: authenticated decryption rejects tampered or truncated backups.

Peach Sync protocol

Sync is end-to-end encrypted between your own devices. A relay splices two connections together so they can reach each other from anywhere; it never stores or accesses any vault or user data, and cannot read or alter a single frame. Sync is exactly three choices: our relay, a relay you host yourself, or off.

  • Pairing: one device shows a scannable code carrying a relay address and a single-use token; the other scans it. A Noise NK handshake over ephemeral X25519 keys follows, long-term identity keys are exchanged inside the encrypted channel, and both sides must confirm the same 8-digit code derived from the handshake before anything is trusted.
  • Every later sync runs Noise KK mutual authentication with those long-term keys before any vault frame is sent. Unknown peers are rejected at handshake time, and revoked devices are refused outright.
  • Devices meet at a rotating rendezvous address derived from their shared pairing secret, so the relay never sees a public key or a stable identifier. Frames are padded to size buckets before encryption, so vault size and operation type cannot be read off traffic shape. Session keys are ephemeral and scoped to sync traffic rather than reused as the vault master key.
  • If no paired peer is reachable, nothing leaves the device. With sync off, no relay is contacted at all.

Threat model

Peach is designed to remove server-side breach classes, account takeover risk, and silent product telemetry collection. It does not claim to defeat a fully compromised endpoint or a user who reveals the unlock secret.

  • Protects against hosted vault theft because no hosted vault exists.
  • Protects against passive network collection when no sync or breach check is initiated.
  • Does not protect against malware already controlling the unlocked device.

security fundamentals

The architecture is the promise.

Peach doesn't ask you to trust a company. The security claims are enforced by the code running on your machine.

Peach is built on TypeScript and SolidJS.

KEY DERIVATION Argon2id | 64MB memory | 3 iterations | OWASP 2025
ENCRYPTION AES-256-GCM | authenticated | fresh nonce per write
INTEGRITY BLAKE3 | 256-bit digest | length-extension resistant
PAIRING Scannable code | Noise NK | ephemeral X25519 | 8-digit confirmation
SYNC TRANSPORT Noise KK | X25519 | ChaCha20-Poly1305 | forward secrecy | padded frames
BACKUP FORMAT PeachScript | printable code | zstd compressed | copy or scan
LICENSE VALIDATION Ed25519 signature | offline | zero network
We designed Peach so that even we cannot read your passwords.

No product telemetry.

The only outbound connections are opt-in breach monitoring and an opt-in bug reporting system. Bug reports record only device type — for example, iPhone 15 or MacBook Air M2. No user IDs, no IP addresses, no account required.

No account.

Peach never asks for your email, your name, or any identifying information to use the product. There is no user database. There are no users—only installations.

Payments stay with the processor.

Checkout is handled by Polar. Licenses are generated after payment and sent to your email within seconds. Peach does not receive or retain a customer profile from the purchase.

No hosted vault to breach.

Peach uses a relay for sync, but it has no hosted vault service, account system, or customer database. The relay forwards encrypted traffic and stores no vault or customer data.

Export anytime. To anywhere.

Your vault is yours. Export as a standard CSV to move to any password manager, as PeachScript to restore into Peach on another device, or as a Peach Codex to keep a physical backup in a safe. No lock-in. No export fee.

No kill switch.

Your license works offline forever. If Peach development stopped tomorrow, your installed copy would keep working indefinitely. No phone-home, no expiration.

Where Peach runs.

Chrome

extension | service worker | passkeys

Firefox

extension | service worker | passkeys

Android

Keystore TEE | biometric | autofill service | beta

iOSComing soon

Secure Enclave | Face ID

Network behavior

Default state

Peach does not require network access to unlock, browse, edit, export, or continue using a licensed installation. With no user-initiated action, there is no background service to contact.

Explicit exceptions

Three flows can touch the network: Peach Sync when paired devices exchange end-to-end encrypted data through a relay; breach monitoring when a k-anonymity prefix is sent for password exposure checks; and an optional, opt-in feedback and bug reporting system. The feedback system records no user-identifiable information — only device type (for example, iPhone 15 or MacBook Air M2). None of these paths creates a hosted Peach account or remote Peach vault.