MCPcopy Index your code
hub / github.com/decentpaste/decentpaste

github.com/decentpaste/decentpaste @v0.8.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.8.1 ↗ · + Follow
524 symbols 1,101 edges 81 files 140 documented · 27%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

DecentPaste

Universal Clipboard for Every Device — A cross-platform clipboard sharing app that works like Apple's Universal Clipboard, but for all platforms.

Stable License Built with Tauri libp2p

🆕 New Release — Actively developed with community feedback. Share your ideas!

DecentPaste Screenshot

What is DecentPaste?

DecentPaste lets you seamlessly share your clipboard between all your devices over your local network. Copy on your laptop, paste on your phone. No cloud servers, no accounts, no subscriptions — just secure, peer-to-peer clipboard sync.

Key Features

  • Cross-Platform — Works on Windows, macOS, Linux, Android, and iOS
  • Decentralized — No central server; devices connect directly via P2P
  • Auto-Discovery — Devices find each other automatically on your local network
  • End-to-End Encrypted — AES-256-GCM encryption; only paired devices can read your clipboard
  • Secure Pairing — 6-digit PIN verification with X25519 key exchange
  • Lightweight — Small binary size (~15MB) thanks to Tauri
  • Open Source — Apache 2.0 licensed

How It Works

  1. Discovery: Devices find each other using mDNS
  2. Pairing: One-time secure pairing with PIN verification establishes a shared secret
  3. Sync: Clipboard changes are encrypted and broadcast to paired devices
  4. Receive: Paired devices decrypt and update their clipboard automatically

Installation

Pre-built Binaries

Download the latest release for your platform:

Platform Download
Windows DecentPaste-x.x.x-windows
macOS DecentPaste-x.x.x-macos
Linux DecentPaste-x.x.x-linux
Android DecentPaste-x.x.x-android
iOS Coming soon

Build from Source

Prerequisites: - Rust (1.70+) - Node.js (18+) - Yarn - Platform-specific requirements for Tauri

# Clone the repository
git clone https://github.com/decentpaste/decentpaste.git
cd decentpaste/decentpaste-app

# Install dependencies
yarn install

# Run in development mode
yarn tauri dev

# Build for production
yarn tauri build

Usage

Getting Started

  1. Install DecentPaste on two or more devices
  2. Ensure devices are on the same local network (Wi-Fi/LAN)
  3. Open the app — devices will discover each other automatically
  4. Pair devices using the 6-digit PIN (out-of-band MITM protection)
  5. Copy on one device, paste on another!

Pairing Devices

  1. On Device A: Go to Devices → Click Pair next to the discovered device
  2. On Device B: Accept the pairing request
  3. Both devices display a 6-digit PIN — verify they match
  4. Confirm on Device A
  5. Done! Devices are now paired and will sync automatically

Mobile Usage

On Android/iOS, clipboard access is restricted for privacy. To share content:

Direct share: Select text in any app → Share → Choose DecentPaste Sent directly to paired devices — no clipboard involved.

Note: Keep the app open on both devices during pairing (background connections are not supported).

Security

📖 Read the full Security Documentation →

Includes architecture diagrams, threat model, and vulnerability reporting.

DecentPaste is designed with security as a priority:

Layer Technology Purpose
Key Exchange X25519 ECDH Shared secrets derived, never transmitted
Encryption AES-256-GCM Authenticated encryption for clipboard
Storage Hardware-backed (TEE/Keychain) Platform-native secure key storage
Transport libp2p Noise Encrypted P2P connections

Key security properties: - Local-only: Data never leaves your network (mDNS discovery) - Zero-knowledge pairing: 6-digit PIN + ECDH key exchange - Per-peer encryption: Each device pair has a unique key - Auto-lock: Vault locks after configurable inactivity

Tech Stack

Component Technology
App Framework Tauri v2
Backend Rust
Frontend TypeScript + Tailwind CSS v4
Networking libp2p (mDNS, gossipsub, request-response)
Encryption aes-gcm, x25519-dalek

Development

Running Two Instances (Testing)

# Terminal 1 - desktop
cd decentpaste-app
yarn tauri dev

# Terminal 2 - android
yarn tauri android dev

# Terminal 3 - iOS
yarn tauri ios dev

Architecture Documentation

See ARCHITECTURE.md for detailed technical documentation.

Project Status

DecentPaste — actively developed.

Aspect Status
Core functionality ✅ Reliable for daily use
Cryptography ✅ (X25519 ECDH, AES-256-GCM, Argon2id)
Privacy ✅ Local-only — data never leaves your network
Security ✅ Hardware-backed storage (TEE/Keychain) with PIN fallback
Active Development 🚀 New features shipping regularly

The local-only design (mDNS) significantly limits the attack surface compared to cloud-based alternatives. Security issues? Open an issue — I respond promptly.

Roadmap

  • [ ] Image and file clipboard support
  • [ ] Internet relay for cross-network sync (leverages libp2p Kademlia DHT)
  • [x] Hardware-backed vault security (TEE/Secure Enclave/Keychain)
  • [x] Zeroization: Keys cleared from memory on lock
  • [x] Encrypted vault storage
  • [x] Persistent clipboard history
  • [x] System tray improvements

Contributing

Contributions are welcome! Please read our contributing guidelines before submitting PRs.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'use conventional commits')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the Apache License 2.0 — see the LICENSE file for details.

Trademark

"DecentPaste" and the DecentPaste logo are trademarks. See TRADEMARK.md for usage guidelines.

Note: The Apache 2.0 license grants rights to the code but does not grant rights to use the DecentPaste trademarks or logos.

Acknowledgments

  • Tauri — For the amazing cross-platform framework
  • libp2p — For decentralized networking
  • RustCrypto — For cryptographic primitives

Star History

Star History Chart


DecentPaste — Your clipboard, everywhere.

GitHub · Issues · Releases

Extension points exported contracts — how you extend this code

DecentshareExt (Interface)
Extensions to [`tauri::App`], [`tauri::AppHandle`] and [`tauri::Window`] to access the decentshare APIs. [1 implementers]
decentpaste-app/tauri-plugin-decentshare/src/lib.rs
DecentsecretExt (Interface)
Extensions to [`tauri::App`], [`tauri::AppHandle`] and [`tauri::Window`] to access the decentsecret APIs. [1 implementers]
decentpaste-app/tauri-plugin-decentsecret/src/lib.rs
Toast (Interface)
(no doc)
decentpaste-app/src/state/store.ts
PendingShareResponse (Interface)
(no doc)
decentpaste-app/tauri-plugin-decentshare/guest-js/index.ts
RetrieveSecretResponse (Interface)
* Response from retrieving a secret.
decentpaste-app/tauri-plugin-decentsecret/guest-js/index.ts
AppState (Interface)
(no doc)
decentpaste-app/src/state/store.ts
SecretStorageStatus (Interface)
(no doc)
decentpaste-app/tauri-plugin-decentsecret/guest-js/index.ts
ConnectionSummary (Interface)
(no doc)
decentpaste-app/src/api/commands.ts

Core symbols most depended-on inside this repo

set
called by 107
decentpaste-app/src/state/store.ts
icon
called by 85
decentpaste-app/src/components/icons.ts
get
called by 75
decentpaste-app/src/state/store.ts
addToast
called by 48
decentpaste-app/src/state/store.ts
getErrorMessage
called by 21
decentpaste-app/src/utils/error.ts
subscribe
called by 19
decentpaste-app/src/state/store.ts
on
called by 15
decentpaste-app/src/api/events.ts
update
called by 14
decentpaste-app/src/state/store.ts

Shape

Method 219
Function 192
Class 69
Interface 30
Enum 14

Languages

Rust48%
TypeScript44%
Kotlin8%

Modules by API surface

website/script.js50 symbols
decentpaste-app/src/app.ts45 symbols
decentpaste-app/src-tauri/src/commands.rs41 symbols
decentpaste-app/src/api/commands.ts39 symbols
decentpaste-app/src-tauri/src/vault/manager.rs31 symbols
decentpaste-app/src/state/store.ts20 symbols
decentpaste-app/src/api/types.ts16 symbols
website/scripts/build.js15 symbols
decentpaste-app/tauri-plugin-decentsecret/android/src/main/java/DecentsecretPlugin.kt14 symbols
decentpaste-app/src-tauri/src/state.rs14 symbols
decentpaste-app/src-tauri/src/vault/storage.rs13 symbols
decentpaste-app/src-tauri/src/network/protocol.rs13 symbols

For agents

$ claude mcp add decentpaste \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact