{"id":49598613,"url":"https://github.com/crosspaste/crosspaste-desktop","last_synced_at":"2026-05-04T07:06:43.149Z","repository":{"id":251600487,"uuid":"719646468","full_name":"CrossPaste/crosspaste-desktop","owner":"CrossPaste","description":"Universal Pasteboard Across Devices","archived":false,"fork":false,"pushed_at":"2026-04-26T12:31:01.000Z","size":32783,"stargazers_count":1983,"open_issues_count":32,"forks_count":87,"subscribers_count":12,"default_branch":"main","last_synced_at":"2026-04-26T13:26:30.676Z","etag":null,"topics":["clipboard","clipboard-history","clipboard-manager","clips","compose-desktop","copy-paste","cross-platform","desktop-application","kotlin-multiplatform","paste","pasteboard","sync"],"latest_commit_sha":null,"homepage":"https://crosspaste.com","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CrossPaste.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"CrossPaste","buy_me_a_coffee":"guiyanakuau"}},"created_at":"2023-11-16T15:55:19.000Z","updated_at":"2026-04-26T11:56:35.000Z","dependencies_parsed_at":"2024-09-06T16:24:24.850Z","dependency_job_id":"963ec09e-8f04-426e-93c7-6a1cbe2642d3","html_url":"https://github.com/CrossPaste/crosspaste-desktop","commit_stats":null,"previous_names":["crosspaste/crosspaste-desktop"],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/CrossPaste/crosspaste-desktop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrossPaste%2Fcrosspaste-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrossPaste%2Fcrosspaste-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrossPaste%2Fcrosspaste-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrossPaste%2Fcrosspaste-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CrossPaste","download_url":"https://codeload.github.com/CrossPaste/crosspaste-desktop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrossPaste%2Fcrosspaste-desktop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32597988,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"online","status_checked_at":"2026-05-04T02:00:06.625Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clipboard","clipboard-history","clipboard-manager","clips","compose-desktop","copy-paste","cross-platform","desktop-application","kotlin-multiplatform","paste","pasteboard","sync"],"created_at":"2026-05-04T07:06:42.143Z","updated_at":"2026-05-04T07:06:43.142Z","avatar_url":"https://github.com/CrossPaste.png","language":"Kotlin","funding_links":["https://github.com/sponsors/CrossPaste","https://buymeacoffee.com/guiyanakuau"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n   \u003cimg src=\"doc/en/marketing.webp\" width=\"986px\" height=\"641px\" alt=\"poster\" /\u003e\n   \u003ch1\u003eCrossPaste: Universal Pasteboard Across Devices\u003c/h1\u003e\n   \u003cp\u003e\n      \u003cb\u003eCopy anything and paste it on any device, seamlessly\u003c/b\u003e\n      \u003cbr /\u003e\n      \u003cbr /\u003e\n      \u003ca href=\"https://github.com/CrossPaste/crosspaste-desktop/blob/main/README.zh-CN.md\"\u003e简体中文\u003c/a\u003e\n       ·\n      \u003ca href=\"https://crosspaste.com/en/\" target=\"_blank\"\u003eOfficial Website\u003c/a\u003e\n       ·\n      \u003ca href=\"https://deepwiki.com/CrossPaste/crosspaste-desktop\" target=\"_blank\"\u003eWiki\u003c/a\u003e\n       ·\n      \u003ca href=\"https://crosspaste.com/en/download\" target=\"_blank\"\u003eDownload\u003c/a\u003e\n      \u003cbr /\u003e\n   \u003c/p\u003e\n\n   [![Main CI Test](https://github.com/CrossPaste/crosspaste-desktop/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/CrossPaste/crosspaste-desktop/actions/workflows/ci.yml)\n   [![Build Release](https://github.com/CrossPaste/crosspaste-desktop/actions/workflows/build-release.yml/badge.svg)](https://github.com/CrossPaste/crosspaste-desktop/actions/workflows/build-release.yml)\n   ![Dependabot](https://img.shields.io/badge/Dependabot-enabled-2cbe4e.svg?logo=dependabot\u0026logoColor=white)\n   [![Compose-Multiplatform](https://img.shields.io/badge/UI-Compose%20Multiplatform-3a7af2?logo=jetpackcompose\u0026logoColor=white)](https://github.com/JetBrains/compose-multiplatform)\n   [![Sqlite](https://img.shields.io/badge/Database-Sqlite-39477F?logo=sqlite\u0026logoColor=white)](https://www.sqlite.org/)\n   ![Kotlin](https://img.shields.io/badge/Lang-Kotlin-0095D5.svg?logo=kotlin\u0026logoColor=white)\n   ![OS](https://img.shields.io/badge/OS-Windows%20%7C%20macOS%20%7C%20Linux-2cbe4e)\n   [![Download](https://img.shields.io/badge/Download-v2.0.0-2cbe4e?logo=download\u0026link=https://crosspaste.com/en/download)](https://crosspaste.com/en/download)\n   [![AGPL-3.0](https://img.shields.io/badge/License-AGPL%20v3-2cbe4e.svg)](https://github.com/CrossPaste/crosspaste-desktop/blob/main/LICENSE)\n   [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/CrossPaste/crosspaste-desktop)\n\n   \u003ca href=\"https://github.com/sponsors/CrossPaste\"\u003e\u003cimg src=\"https://img.shields.io/badge/sponsor-30363D?style=social\u0026logo=GitHub-Sponsors\u0026logoColor=#white\" height=\"30px\"\u003e\u003c/a\u003e\n   \u003cimg src=\"https://img.shields.io/github/stars/CrossPaste/crosspaste-desktop?style=social\" height=\"30px\"\u003e\n\u003c/div\u003e\n\n## ✨ Features\n\n- **🔄 Real-time Sharing**: Instantly share pasteboard content across devices, seamlessly.\n- **🖥️ Unified Cross-platform**: Consistent interface on Mac, Windows, and Linux. No need to change habits.\n- **📋 Rich Type Support**: Handle various pasteboard types: Text, Color, URL, HTML, RTF, Image, File.\n- **🔒 End-to-End Encryption**: Using asymmetric encryption to fully protect your data security.\n- **🌐 LAN-only Serverless**: Local storage, serverless architecture. Privacy protection, in your control.\n- **🧹 Smart Space Management**: Auto-cleanup options manage pasteboard storage without manual effort.\n- **🔍 Built-in OCR**: Extract text from images locally — no network calls, your screenshots never leave the device.\n- **🤖 MCP Server**: Expose your pasteboard history to AI assistants (Claude, etc.) via the Model Context Protocol.\n- **🌍 Chrome Extension**: Sync clipboard with the browser — copy from a web page on one device, paste on any other.\n\n## 🏗 Getting Started with Development\n\n1. clone the repository\n\n   ```bash\n   git clone https://github.com/CrossPaste/crosspaste-desktop.git\n   ```\n\n2. Compile and run the application\n\n   ```bash\n   cd crosspaste-desktop\n   ./gradlew app:run\n   ```\n   \nFirst start will download [JBR](https://github.com/JetBrains/JetBrainsRuntime) / gradle dependencies.\n\nIf you encounter the following error:\n```log\nFAILURE: Build failed with an exception.\n\n* What went wrong:\njava.net.SocketException: Connection reset\n\u003e java.net.SocketException: Connection reset\n```\nyou might need a VPN to download these dependencies.\n\nTo configure a proxy for gradle, add the following settings to [gradle.properties](./gradle.properties), and adjust the parameters to match your proxy configuration:\n```properties\nsystemProp.https.proxyHost=localhost\nsystemProp.https.proxyPort=8080\nsystemProp.https.proxyUser=userid\nsystemProp.https.proxyPassword=password\nsystemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost\n```\n\nAdditionally, a series of technical [blogs](https://crosspaste.com/en/blog/introduction) 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.\n\n### 🌍 Building the Chrome Extension\n\nThe Chrome extension lives in [`web/`](./web) and is built via Gradle. Node.js (\u003e= 18) is required — the `npmInstall` task will fetch dependencies on first build.\n\n1. Build the extension\n\n   ```bash\n   ./gradlew :web:build\n   ```\n\n   The unpacked extension is emitted to `web/dist/`.\n\n2. Load it into Chrome\n\n   - Open `chrome://extensions/`\n   - Enable **Developer mode** in the top-right corner\n   - Click **Load unpacked** and select the `web/dist/` directory\n\nThe 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.\n\n## 🗺️ Roadmap\nCrossPaste is continuously evolving! **v2.0** brings the Chrome extension into the sync mesh as a first-class platform. Here's what we're working on next:\n\n- [ ] **Command-line mode** — drive CrossPaste from your terminal and shell scripts\n- [ ] **Plugin system** — let the community extend CrossPaste with custom paste types and integrations\n\nThis is just a small part of our plans. Want to learn more details and long-term plans? Check out our [full roadmap](doc/en/Roadmap.md).\n\n## 🙋 FAQ\nHere are some [FAQs](doc/en/FQA.md) that have been collected. If you have other questions, please create an [issue](https://github.com/CrossPaste/crosspaste-desktop/issues/new/choose) to let us know.\n\n## 🤝 Support the project\n- **🌟 Star this repository**: This is the easiest way to support CrossPaste and costs nothing.\n- **🪲 Report bugs**: Report any bugs you find on the [issue tracker](https://github.com/CrossPaste/crosspaste-desktop/issues/new/choose).\n- **📖 Translate**: Help translate and polish CrossPaste into your [language](https://github.com/CrossPaste/crosspaste-desktop/tree/main/app/src/desktopMain/resources/i18n).\n- **📝 Contribute**: [Code](doc/en/Contributing.md), comment on issues, and any contributions that can help the project are welcome.\n- **💖 Sponsor**: Support financially via [GitHub Sponsors](https://github.com/sponsors/CrossPaste) to help with ongoing development and maintenance.\n\n## 📝 Contributors\n\u003ca href=\"https://github.com/CrossPaste/crosspaste-desktop/graphs/contributors\"\u003e\n   \u003cimg src=\"https://contrib.rocks/image?repo=CrossPaste/crosspaste-desktop\" /\u003e\n\u003c/a\u003e\n\n## 💖 Sponsors\n\u003cimg src=\"https://avatars.githubusercontent.com/u/27792976?s=60\u0026v=4\"/\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrosspaste%2Fcrosspaste-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrosspaste%2Fcrosspaste-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrosspaste%2Fcrosspaste-desktop/lists"}