keychainpgp Svelte Themes

Keychainpgp

Clipboard-first PGP encryption for desktop & Android — built with Rust, Tauri v2, and Svelte 5

KeychainPGP

KeychainPGP

Simple, cross-platform OpenPGP encryption for your clipboard.
Copy. Encrypt. Paste.Copy. Decrypt. Read.

CI Release Latest Release Downloads License

Rust Tauri v2 Svelte 5 Sequoia-PGP

InstallationFeaturesQuick StartBuildContributing


KeychainPGP brings the simplicity of OpenKeychain to the desktop. No command-line flags, no certificate managers, no configuration — just encryption that works.

Screenshots

Home — Clipboard Mode Key Manager

More screenshots

Home — Compose Mode Recipient Selection

Encrypted Message in Clipboard

Download

GitHub Releases   Get it on Obtainium   Web App

Platform Formats Portable Requirements
Windows .exe · .msi .zip Windows 10+
macOS .dmg macOS 10.15+
Linux .AppImage · .deb .tar.gz glibc 2.35+, WebKit2GTK 4.1
Android .apk (arm64, arm, x86_64) Android 7.0+

[!NOTE] Linux users: Pre-built binaries require glibc 2.35 or newer (Ubuntu 22.04+, Debian 12+, Fedora 36+, RHEL 9+). On older distributions, build from source.

[!TIP] Android users: Obtainium lets you install and update KeychainPGP directly from GitHub releases — no app store required.

Features

  • Clipboard-first workflow — encrypt and decrypt without leaving your app
  • Global hotkeysCtrl+Shift+E to encrypt, Ctrl+Shift+D to decrypt
  • Modern cryptography — Ed25519 + X25519, powered by Sequoia-PGP
  • System tray — runs quietly in the background
  • Auto-clear clipboard — decrypted text is wiped after 30 seconds
  • Compose mode — draft, encrypt, and sign messages in one window
  • OPSEC mode — RAM-only keys, no disk traces, Tor proxy support
  • 20 languages — full i18n via Paraglide
  • Mobile companion — Android app with key sync via QR codes
  • Portable mode — drop a .portable marker and run from a USB stick
  • Cross-platform — Windows, macOS, Linux, Android, and Web (WASM)

Quick Start

  1. Install KeychainPGP (see Download)
  2. Create your keys — name + email, one click
  3. Import a contact's public key
  4. Encrypt — copy text → Ctrl+Shift+E → select recipient → paste
  5. Decrypt — copy PGP message → Ctrl+Shift+D → read

Architecture

KeychainPGP is a Rust workspace with six crates:

keychainpgp/
├── crates/
│   ├── keychainpgp-core       # OpenPGP crypto engine (Sequoia-PGP)
│   ├── keychainpgp-keys       # Keyring: SQLite + OS credential store
│   ├── keychainpgp-clipboard  # Clipboard monitoring, PGP detection, auto-clear
│   ├── keychainpgp-ui         # Tauri v2 desktop + Android app (Svelte 5)
│   ├── keychainpgp-cli        # CLI binary
│   └── keychainpgp-wasm       # WASM bindings for the web app
└── web/                        # Standalone Vite + Svelte 5 SPA (WASM)
Crate Purpose
keychainpgp-core Pure-Rust OpenPGP operations — encrypt, decrypt, sign, verify. No I/O.
keychainpgp-keys Key storage with SQLite and OS credential store (Keychain/DPAPI/Secret Service)
keychainpgp-clipboard Clipboard watching, PGP message detection, timed auto-clear
keychainpgp-ui Tauri v2 desktop & mobile app with Svelte 5 frontend
keychainpgp-cli Command-line interface for scripting and headless use
keychainpgp-wasm WebAssembly bindings — same crypto engine in the browser

Building from Source

Prerequisites

Build

# Clone the repository
git clone https://github.com/keychainpgp/keychainpgp.git
cd keychainpgp

# Install frontend dependencies
cd crates/keychainpgp-ui/frontend && npm install && cd ../../..

# Build the desktop app
cargo build --release -p keychainpgp-ui

# Or build the CLI only
cargo build --release -p keychainpgp-cli

Development

# Install git hooks (pre-commit: fmt + clippy, pre-push: tests)
./scripts/install-hooks.sh      # Linux / macOS / Git Bash
.\scripts\install-hooks.ps1     # PowerShell

# Run the desktop app in dev mode (hot-reload)
cd crates/keychainpgp-ui && cargo tauri dev

# Run all tests
cargo test --workspace

# Lint
cargo clippy --workspace -- -D warnings
cargo fmt --all -- --check

WASM / Web App

# Build the WASM package
wasm-pack build crates/keychainpgp-wasm --target web --out-dir ../../web/pkg

# Run the web app locally
cd web && npm install && npm run dev

Android

# Requires JDK 17+ and Android NDK
cd crates/keychainpgp-ui
npx @tauri-apps/cli android build --debug

Contributing

Contributions are welcome! Please read the Contributing Guide before submitting a PR.

TL;DR:

  1. Fork & clone
  2. ./scripts/install-hooks.sh to set up git hooks
  3. git checkout -b feature/your-feature
  4. Make changes, add tests
  5. cargo test --workspace && cargo clippy --workspace -- -D warnings
  6. Commit with Conventional Commits format
  7. Open a pull request

This project follows the Contributor Covenant v2.1.

Security

If you discover a security vulnerability, do NOT open a public issue. Please email keychainpgp@protonmail.com instead.

See SECURITY.md for full details.

If you find KeychainPGP useful, consider supporting its development:

Donate

License

Dual-licensed under MIT or Apache-2.0, at your option.

Acknowledgments

  • Sequoia-PGP — the modern OpenPGP implementation in Rust
  • Tauri — lightweight cross-platform app framework
  • OpenKeychain — the inspiration for this project
  • Svelte — the reactive UI framework

Made with care for journalists, activists, and anyone who needs simple encryption.

Top categories

Loading Svelte Themes