crosspaste-desktop

mcp
Security Audit
Fail
Health Pass
  • License — License: AGPL-3.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 2518 GitHub stars
Code Fail
  • fs module — File system access in .github/scripts/checkDuplicateJars.js
  • rm -rf — Recursive force deletion command in .github/scripts/package_appimage.sh
  • child_process — Shell command execution capability in .github/scripts/processJarFiles.js
  • execSync — Synchronous shell command execution in .github/scripts/processJarFiles.js
  • fs.rmSync — Destructive file system operation in .github/scripts/processJarFiles.js
  • fs module — File system access in .github/scripts/processJarFiles.js
  • fs.rmSync — Destructive file system operation in .github/scripts/rewriteConveyorConf.js
  • fs module — File system access in .github/scripts/rewriteConveyorConf.js
  • process.env — Environment variable access in .github/scripts/validateAndUpdateVersion.js
  • rm -rf — Recursive force deletion command in .github/workflows/build-beta-linux.yml
  • network request — Outbound network request in .github/workflows/build-beta-linux.yml
  • rm -rf — Recursive force deletion command in .github/workflows/build-release.yml
  • network request — Outbound network request in .github/workflows/build-release.yml
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Cross-device clipboard sync for macOS, Windows & Linux — end-to-end encrypted, LAN-only, no cloud. OCR, CLI and MCP server built in.

README.md
poster

CrossPaste: Universal Pasteboard Across Devices

Copy anything and paste it on any device, seamlessly

简体中文 · Official Website · Wiki · Download · Video

CrossPaste%2Fcrosspaste-desktop | Trendshift
CrossPaste%2Fcrosspaste-desktop | Trendshift

Main CI Test
Build Release
Dependabot
Compose-Multiplatform
Sqlite
Kotlin
OS
Download
AGPL-3.0
Ask DeepWiki


✨ Features

  • 🔄 Real-time Sharing: Instantly share pasteboard content across devices, seamlessly.
  • 🖥️ Unified Cross-platform: Consistent interface on Mac, Windows, and Linux. No need to change habits.
  • 📋 Rich Type Support: Handle various pasteboard types: Text, Color, URL, HTML, RTF, Image, File.
  • 🔒 End-to-End Encryption: Using asymmetric encryption to fully protect your data security.
  • 🌐 LAN-only Serverless: Local storage, serverless architecture. Privacy protection, in your control.
  • 🧹 Smart Space Management: Auto-cleanup options manage pasteboard storage without manual effort.
  • 🔍 Built-in OCR: Extract text from images locally — no network calls, your screenshots never leave the device.
  • 🤖 MCP Server: Expose your pasteboard history to AI assistants (Claude, etc.) via the Model Context Protocol.
  • 🌍 Chrome Extension: Sync clipboard with the browser — copy on a web page, paste on any device.
  • ⌨️ Command-Line: Copy, paste, and search your history from the terminal and scripts. See the CLI guide.

🏗 Getting Started with Development

  1. clone the repository

    git clone https://github.com/CrossPaste/crosspaste-desktop.git
    
  2. Compile and run the application

    cd crosspaste-desktop
    ./gradlew app:run
    

First start will download JBR / gradle dependencies.

If you encounter the following error:

FAILURE: Build failed with an exception.

* What went wrong:
java.net.SocketException: Connection reset
> java.net.SocketException: Connection reset

you might need a VPN to download these dependencies.

To configure a proxy for gradle, add the following settings to gradle.properties, and adjust the parameters to match your proxy configuration:

systemProp.https.proxyHost=localhost
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=userid
systemProp.https.proxyPassword=password
systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost

Additionally, a series of technical blogs about CrossPaste is being published (approximately one article per week). If you're interested in developing cross-platform applications, you're welcome to read them.

🌍 Building the Chrome Extension

The Chrome extension lives in web/ and is built via Gradle. Node.js (>= 18) is required — the npmInstall task will fetch dependencies on first build.

  1. Build the extension

    ./gradlew :web:build
    

    The unpacked extension is emitted to web/dist/.

  2. Load it into Chrome

    • Open chrome://extensions/
    • Enable Developer mode in the top-right corner
    • Click Load unpacked and select the web/dist/ directory

The extension auto-discovers a CrossPaste desktop app running on the same machine and syncs clipboard content with it. To iterate on extension code, run npm run dev inside web/ for a fast Vite dev loop, then reload the extension in Chrome. The extension imports a Kotlin/JS core library produced by ./gradlew :core:jsBrowserProductionLibraryDistribution (also run as part of :web:build) — re-run that task whenever you change core/ sources.

🗺️ Roadmap

CrossPaste is continuously evolving! v2.2 brings a full command-line mode — copy, paste, and search your history straight from the terminal. Here's what we're working on next:

  • Plugin system — let the community extend CrossPaste with custom paste types and integrations

This is just a small part of our plans. Want to learn more details and long-term plans? Check out our full roadmap.

🙋 FAQ

Here are some FAQs that have been collected. If you have other questions, please create an issue to let us know.

🤝 Support the project

  • 🌟 Star this repository: This is the easiest way to support CrossPaste and costs nothing.
  • 🪲 Report bugs: Report any bugs you find on the issue tracker.
  • 📖 Translate: Help translate and polish CrossPaste into your language.
  • 📝 Contribute: Code, comment on issues, and any contributions that can help the project are welcome.
  • 💖 Sponsor: Support financially via GitHub Sponsors to help with ongoing development and maintenance.

📝 Contributors

guiyanakuang amir1376 Blushyes emmanuel-ferdman Fldicoahkiin swording-k sunxiang0918 

💖 Sponsors

liaokai Jaepil.Choi 

Reviews (0)

No results found