{"id":46476256,"url":"https://github.com/uniclipboard/uniclipboard","last_synced_at":"2026-05-31T09:02:34.314Z","repository":{"id":282494023,"uuid":"948019708","full_name":"UniClipboard/UniClipboard","owner":"UniClipboard","description":"Privacy-first, end-to-end encrypted clipboard sync across devices. 以隐私为先，端到端加密的跨设备剪贴板同步工具。","archived":false,"fork":false,"pushed_at":"2026-03-08T10:29:22.000Z","size":9984,"stargazers_count":17,"open_issues_count":23,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-03-08T10:33:18.235Z","etag":null,"topics":["clipboard-manager","clipboardsync","cross-platform","efficientnet","linux","macos","tauri-app","tauri2","tools","windows"],"latest_commit_sha":null,"homepage":"https://uniclipboard.app","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UniClipboard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-03-13T16:03:43.000Z","updated_at":"2026-03-06T16:55:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"3e95ff54-1662-4396-99bc-b4facd42cd7f","html_url":"https://github.com/UniClipboard/UniClipboard","commit_stats":null,"previous_names":["mkdir700/uniclipboard-desktop"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/UniClipboard/UniClipboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UniClipboard%2FUniClipboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UniClipboard%2FUniClipboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UniClipboard%2FUniClipboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UniClipboard%2FUniClipboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UniClipboard","download_url":"https://codeload.github.com/UniClipboard/UniClipboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UniClipboard%2FUniClipboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30372127,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T21:41:54.280Z","status":"online","status_checked_at":"2026-03-11T02:00:07.027Z","response_time":84,"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-manager","clipboardsync","cross-platform","efficientnet","linux","macos","tauri-app","tauri2","tools","windows"],"created_at":"2026-03-06T07:08:09.069Z","updated_at":"2026-05-31T09:02:34.305Z","avatar_url":"https://github.com/UniClipboard.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"![UniClipboard](https://socialify.git.ci/UniClipboard/UniClipboard/image?custom_description=A+privacy-first%2C+end-to-end+encrypted%2C+cross-device+clipboard+sync+built+with+Rust+and+Tauri.\u0026description=1\u0026font=KoHo\u0026forks=1\u0026issues=1\u0026name=1\u0026owner=1\u0026pattern=Floating+Cogs\u0026pulls=1\u0026stargazers=1\u0026theme=Auto)\n\n## Project Overview\n\nEnglish | [简体中文](./README_ZH.md)\n\n\u003e **Copy on one device. Paste on another — even across the internet.**\n\u003e\n\u003e No cloud account. No third-party servers. Your clipboard never leaves your devices in a form anyone else can read.\n\nUniClipboard is a **privacy-first**, cross-device clipboard synchronization tool.\nIt enables seamless and secure syncing of text, images, and files across multiple devices, whether on the same Wi-Fi or across different networks. Data is encrypted both in transit and at rest, and decrypted only on the user’s devices—neither servers nor the network layer can ever access plaintext data.\n\n![Image](https://github.com/user-attachments/assets/8d339467-5bbe-4afa-9235-1d26cbff82c9)\n\n\u003cp align=\"center\"\u003e\n  \u003cvideo src=\"https://github.com/user-attachments/assets/367c7f45-579a-49b7-bc96-9ccc25cf5ad0\" controls muted playsinline width=\"800\"\u003e\u003c/video\u003e\n  \u003cbr/\u003e\n  \u003cem\u003eDesktop ↔ desktop — real-time, bidirectional clipboard sync between two computers.\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003eMobile companion\u003c/strong\u003e — share a screenshot from your phone to your desktop. (click to expand)\u003c/summary\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cvideo src=\"https://github.com/user-attachments/assets/29f4bf5d-8996-4602-8784-067fb919c671\" controls muted playsinline width=\"800\"\u003e\u003c/video\u003e\n  \u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cbr/\u003e\n\n  \u003ca href=\"https://github.com/UniClipboard/UniClipboard/releases\"\u003e\n    \u003cimg\n      alt=\"Windows\"\n      src=\"https://img.shields.io/badge/-Windows-blue?style=flat-square\u0026logo=data:image/svg+xml;base64,PHN2ZyB0PSIxNzI2MzA1OTcxMDA2IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE1NDgiIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij48cGF0aCBkPSJNNTI3LjI3NTU1MTYxIDk2Ljk3MTAzMDEzdjM3My45OTIxMDY2N2g0OTQuNTEzNjE5NzVWMTUuMDI2NzU3NTN6TTUyNy4yNzU1NTE2MSA5MjguMzIzNTA4MTVsNDk0LjUxMzYxOTc1IDgwLjUyMDI4MDQ5di00NTUuNjc3NDcxNjFoLTQ5NC41MTM2MTk3NXpNNi42NzA0NTEzNiA0NzAuODMzNjgyOTdINDIyLjY3Njg1OTI1VjExMC41NjM2ODE5N2wtNDE4LjAwNjQwNzg5IDY5LjI1Nzc5NzUzek00LjY3MDQ1MTM2IDg0Ni43Njc1OTcwM0w0MjIuNjc2ODU5MjUgOTE0Ljg2MDMxMDEzVjU1My4xNjYzMTcwM0g0LjY3MDQ1MTM2eiIgcC1pZD0iMTU0OSIgZmlsbD0iI2ZmZmZmZiI+PC9wYXRoPjwvc3ZnPg==\"\n    /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/UniClipboard/UniClipboard/releases\"\u003e\n    \u003cimg\n      alt=\"MacOS\"\n      src=\"https://img.shields.io/badge/-MacOS-black?style=flat-square\u0026logo=apple\u0026logoColor=white\"\n    /\u003e\n  \u003c/a \u003e\n  \u003ca href=\"https://github.com/UniClipboard/UniClipboard/releases\"\u003e\n    \u003cimg\n      alt=\"Linux\"\n      src=\"https://img.shields.io/badge/-Linux-purple?style=flat-square\u0026logo=linux\u0026logoColor=white\"\n    /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"#mobile-companion-lan\"\u003e\n    \u003cimg\n      alt=\"iOS\"\n      src=\"https://img.shields.io/badge/-iOS%20(LAN)-lightgrey?style=flat-square\u0026logo=apple\u0026logoColor=white\"\n    /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"#mobile-companion-lan\"\u003e\n    \u003cimg\n      alt=\"Android\"\n      src=\"https://img.shields.io/badge/-Android%20(LAN)-3DDC84?style=flat-square\u0026logo=android\u0026logoColor=white\"\n    /\u003e\n  \u003c/a\u003e\n\n  \u003cdiv\u003e\n    \u003ca href=\"./LICENSE\"\u003e\n      \u003cimg\n        src=\"https://img.shields.io/github/license/UniClipboard/UniClipboard?style=flat-square\"\n      /\u003e\n    \u003c/a \u003e\n    \u003ca href=\"https://github.com/UniClipboard/UniClipboard/releases\"\u003e\n      \u003cimg\n        src=\"https://img.shields.io/github/v/release/UniClipboard/UniClipboard?include_prereleases\u0026style=flat-square\"\n      /\u003e\n    \u003c/a \u003e\n    \u003ca href=\"https://codecov.io/gh/UniClipboard/UniClipboard\" \u003e\n      \u003cimg src=\"https://codecov.io/gh/UniClipboard/UniClipboard/branch/main/graph/badge.svg?token=QZfjXOsQTp\"/\u003e\n    \u003c/a\u003e\n  \u003c/div\u003e\n\n\u003c/div\u003e\n\n\u003e [!WARNING]\n\u003e UniClipboard is currently under active development and may have unstable or missing features. Feel free to try it out and provide feedback!\n\n## Features\n\n- **Cross-platform**: First-class support on Windows, macOS, and Linux — your clipboard works wherever you do. iPhone and Android can join as a **companion** (see below).\n- **Cross-network sync**: Real-time sync on the same Wi-Fi, across different home/office networks, or across the internet, with automatic NAT traversal and encrypted relay fallback — not just LAN, and not bound to a single network. (Desktop ↔ desktop; mobile is a companion — LAN by default, or cross-network via a server node or Tailscale.)\n- **Mobile companion**: Pair an iPhone with the **UniClipboard iOS App** (now in [TestFlight public beta](https://testflight.apple.com/join/nyNQ8dQe)) — or stay on the bundled **iOS Shortcut** — and on Android install the **[UniClipboard Android client](https://github.com/UniClipboard/uc-android)** ([download APK](https://github.com/UniClipboard/uc-android/releases/latest)), a fork of [**SyncClipboard**](https://github.com/Jeric-X/SyncClipboard) and protocol-compatible with any other SyncClipboard client. Bidirectional clipboard exchange — on the LAN, or across networks via a server node or Tailscale. QR-code pairing, per-device credentials, rotate passwords without re-pairing.\n- **Encrypted spaces**: Devices join a shared \"space\" with one invitation code + passphrase — no cloud account, no email, just two devices agreeing to trust each other.\n- **Local full-text search**: Search your full history in milliseconds, even with tens of thousands of entries — and the index itself stays encrypted on disk.\n- **Text, images, and files**: Copy on one device, paste on another. Large files use streaming transfer so they don't have to fit in memory.\n- **Quick Panel**: Keyboard-shortcut overlay with inline preview for text, links, images, code, and files — designed to feel like part of the OS clipboard, not a separate app you context-switch into.\n- **Command-line tool**: A `uniclip` CLI mirrors the GUI flow and works headlessly — built for terminals, SSH sessions, scripts, and tmux workflows.\n- **Secure encryption**: XChaCha20-Poly1305 AEAD keeps data encrypted in transit and at rest — even the relay only sees ciphertext.\n- **Multi-device management**: Manage paired devices, presence, and per-device sync preferences. Revoke a lost device from any other paired one — sync stops including it immediately.\n\n## Installation\n\n### Download from Releases\n\nVisit the [GitHub Releases](https://github.com/UniClipboard/UniClipboard/releases) page to download the installation package for your operating system.\n\n### One-line install script (Linux / macOS)\n\nDon't want to pick a package by hand? One command does it:\n\n```bash\ncurl -fsSL https://uniclipboard.app/install.sh | bash\n```\n\nThe script detects OS and CPU automatically:\n\n- **macOS** — downloads `.app.tar.gz`, extracts it, and moves `UniClipboard.app` into `/Applications` (escalates with `sudo` if the directory isn't writable; pass `--prefix \"$HOME/Applications\"` for a user-level install).\n- **Linux** — with sudo, installs `.deb` via `apt` or `.rpm` via `dnf`/`yum`; otherwise falls back to AppImage in `~/.local/bin` with a `.desktop` entry (no root needed).\n\nCommon flags:\n\n```bash\n# Pin a specific version\ncurl -fsSL https://uniclipboard.app/install.sh | bash -s -- --version v0.9.0\n\n# Force AppImage (rootless even when sudo is available)\ncurl -fsSL https://uniclipboard.app/install.sh | bash -s -- --format appimage\n```\n\nUninstall with the matching script:\n\n```bash\n# Remove the app only, keep data and config\ncurl -fsSL https://raw.githubusercontent.com/UniClipboard/UniClipboard/main/scripts/uninstall.sh | bash\n\n# Full wipe — also removes data directories, config, and cache\ncurl -fsSL https://raw.githubusercontent.com/UniClipboard/UniClipboard/main/scripts/uninstall.sh | bash -s -- --purge\n\n# Preview what would be removed without deleting anything\ncurl -fsSL https://raw.githubusercontent.com/UniClipboard/UniClipboard/main/scripts/uninstall.sh | bash -s -- --dry-run\n```\n\n\u003e Update behavior matches the manual download paths below: `.deb` / `.rpm` installs are not picked up by the in-app updater — re-run the script or use your system package manager. AppImage on Linux and `.app` on macOS continue to update from inside the app.\n\n### Linux\n\nEach release ships `.deb`, `.rpm`, and `.AppImage` artifacts for both `x86_64` and `aarch64` (where supported).\n\n**Fedora / RHEL / openSUSE — via COPR (recommended, auto-updating)**\n\n```bash\nsudo dnf copr enable mkdir700/uniclipboard-alpha   # alpha channel; or mkdir700/uniclipboard for stable\nsudo dnf install uniclipboard\n```\n\nAfter enabling, `sudo dnf upgrade` will pick up new releases automatically.\n\n**Or download a single .rpm / .deb / AppImage from the Releases page:**\n\n```bash\n# Debian / Ubuntu\nsudo dpkg -i uniclipboard_\u003cversion\u003e_amd64.deb\nsudo apt-get install -f                                 # resolve missing deps if any\n\n# Fedora / RHEL / openSUSE (one-shot, no COPR)\nsudo dnf install ./UniClipboard-\u003cversion\u003e-1.x86_64.rpm\n\n# AppImage (any distro)\nchmod +x UniClipboard_\u003cversion\u003e_amd64.AppImage\n./UniClipboard_\u003cversion\u003e_amd64.AppImage\n```\n\n\u003e Packaged installs (COPR / one-shot rpm / deb) do not auto-update from inside the app — use `dnf upgrade` / `apt upgrade` against your package source. The AppImage is what the in-app updater uses on Linux.\n\n### Homebrew (macOS)\n\nOn macOS, install via the official tap [`UniClipboard/homebrew-tap`](https://github.com/UniClipboard/homebrew-tap):\n\n```bash\nbrew tap UniClipboard/tap\n\n# Desktop app (.app bundle)\nbrew install --cask uniclipboard\n\n# CLI only — installs the `uniclip` command\nbrew install uniclipboard\n```\n\nOr install in a single command without tapping first:\n\n```bash\nbrew install --cask UniClipboard/tap/uniclipboard   # GUI\nbrew install UniClipboard/tap/uniclipboard          # CLI\n```\n\nThe cask and the formula can coexist — install both if you want the GUI plus the `uniclip` command.\n\n### Build from Source\n\n```bash\n# Clone the repository (`--recurse-submodules` pulls the iroh-blobs fork\n# under src-tauri/vendor/iroh-blobs/; without it `cargo build` fails).\ngit clone --recurse-submodules https://github.com/UniClipboard/UniClipboard.git\ncd UniClipboard\n\n# Install dependencies\nbun install\n\n# Start development mode\nbun tauri dev\n\n# Build application\nbun tauri build\n```\n\n## Usage\n\n### First Device (Create a Space)\n\n1. Launch the app and choose **Create a Space**\n2. Set an encryption passphrase — this protects all data inside the space\n3. Done. Copied content is stored encrypted in this space.\n\n### Adding More Devices (Join via Invitation)\n\n1. On an existing device, open the **Devices** page and **generate an invitation code** (short-lived, valid for several minutes)\n2. On the new device, choose **Join an existing space**, enter the invitation code together with the space passphrase\n3. Once verified, the device joins and syncing starts automatically.\n\n\u003e Already set up and want to move to another space? Use **Switch space** from the Devices page (or `uniclip switch-space` from the CLI) — your local clipboard history is re-encrypted and migrated.\n\n### Pair a Mobile Device (companion) \u003ca id=\"mobile-companion-lan\"\u003e\u003c/a\u003e\n\nThe **UniClipboard iOS App is now in [TestFlight public beta](https://testflight.apple.com/join/nyNQ8dQe)**. On Android, install the **[UniClipboard Android client](https://github.com/UniClipboard/uc-android)** — a fork of [SyncClipboard](https://github.com/Jeric-X/SyncClipboard) that ships APKs in [releases](https://github.com/UniClipboard/uc-android/releases/latest); any other SyncClipboard-compatible client also works. Either way, the phone joins as an **HTTP companion** — the desktop daemon exposes a small SyncClipboard-compatible HTTP service, and the phone reads/writes the clipboard against it (on the LAN by default, or across networks via a server node or Tailscale).\n\n1. On the desktop, open **Devices → Mobile sync**, enable it, and pick the LAN IPv4 the phone will reach (don't print `0.0.0.0` / `Auto` onto a phone screen).\n2. Click **Add device** to generate a QR code with the listener URL, username, and one-time password.\n3. **iPhone** — install **TestFlight** from the App Store, then open `https://testflight.apple.com/join/nyNQ8dQe` to accept the invite and install the **UniClipboard iOS App**; enter the desktop's URL + credentials in the app. The bundled iOS Shortcut (installed by scanning the QR) still works as a fallback.\n   \u003e ⚠️ If TestFlight shows a certificate error, or the **Install** button spins because TestFlight can't reach App Store Connect, **temporarily disable your proxy / VPN client** (Loon, Surge, Clash, etc. — including global rules, TUN, HTTPS decryption / MitM) so TestFlight goes direct. Re-enable it after the app is installed.\n4. **Android** — install the [**UniClipboard Android client**](https://github.com/UniClipboard/uc-android) (APK in [releases](https://github.com/UniClipboard/uc-android/releases/latest)), or use any other SyncClipboard-compatible client, and enter the same URL and credentials.\n5. Copy on either side; the other side picks it up over Wi-Fi.\n\nLimitations (today):\n\n- **Not P2P** — mobile doesn't NAT-hole-punch or go through the relay; it's a plain HTTP client. It works on the LAN out of the box, and reaches across networks via a self-hosted server node (public HTTPS) or a Tailscale / VPN overlay.\n- **Plain HTTP + Basic Auth at the listener** — put it behind a TLS reverse proxy (e.g. a server node) for HTTPS; native listener TLS is planned for v2. Only expose the bare listener on networks you trust.\n- **Mobile is not a space peer** — it doesn't get a node ID and can't read the encrypted history database; it only exchanges the current clipboard.\n- **iOS has no silent background sync** — iOS doesn't grant apps a general-purpose background clipboard hook, so the iOS app receives/sends only while it's in the foreground (or via notification tap). This is a platform restriction, not a missing feature; even WeChat's keyboard can only sync clipboard at the moment it's invoked. See [FAQ — iOS background sync](https://www.uniclipboard.app/docs/faq#why-cant-the-ios-app-sync-clipboard-silently-in-the-background-like-the-desktop).\n\nSee the [Mobile sync guide](https://www.uniclipboard.app/docs/guides/mobile-sync) for the full setup flow, or the [headless server node guide](https://www.uniclipboard.app/docs/guides/self-host-server-node) to reach your phone over HTTPS from any network.\n\n### Main Pages\n\n- **Dashboard** — Clipboard history with full-text search and detailed preview\n- **Quick Panel** — Keyboard-shortcut overlay for fast clipboard access\n- **Devices** — Manage paired desktops and mobile clients, presence, invitation codes, QR pairing, switch spaces\n- **Settings** — General, sync, security, network, storage, and search-index options\n\n## Advanced Features\n\n### How it Works\n\n```mermaid\nflowchart LR\n  subgraph A[\"Device A (your laptop)\"]\n    direction TB\n    CC[\"Ctrl+C\"] --\u003e EA[\"encrypt\u003cbr/\u003e(your key)\"]\n  end\n  subgraph B[\"Device B (your desktop)\"]\n    direction TB\n    DB[\"decrypt\u003cbr/\u003e(your key)\"] --\u003e CV[\"Ctrl+V\"]\n  end\n  EA --\u003e|\"P2P hole-punch\"| DB\n  EA -.-\u003e|\"falls back\"| R[\"Relay\u003cbr/\u003e(sees only\u003cbr/\u003eencrypted bytes)\"]\n  R -.-\u003e DB\n```\n\n- **Pairing**: Devices exchange a public key once, locally — no cloud account, no email.\n- **Transport**: Direct connection when devices can reach each other (same Wi-Fi or via NAT hole-punching across home/office networks); falls back to an encrypted relay otherwise.\n- **Encryption**: Payload encryption is independent of the transport — even a malicious relay only sees ciphertext.\n- **Storage**: Local history is encrypted at rest, and the search index is encrypted too.\n- **Resilience**: Connections recover automatically after Wi-Fi switches, sleep/wake, or brief disconnects — no re-pairing required.\n\n### Command-line Tool\n\nThe `uniclip` CLI mirrors the GUI flow and works headlessly (e.g. on servers):\n\n```bash\nuniclip init                    # Create a new encrypted space on this device\nuniclip invite                  # Generate a short-lived invitation code\nuniclip join \u003ccode\u003e             # Join an existing space\nuniclip members                 # List paired devices and presence\nuniclip send \"hello\"            # Send clipboard content to other devices\nuniclip watch                   # Stream incoming clipboard events\nuniclip switch-space            # Move this device to another space\nuniclip status / start / stop   # Daemon lifecycle\n```\n\n### Privacy \u0026 Security\n\n**What we collect** — Anonymous telemetry to help improve the app — never your clipboard content or any of your personal data. You can turn it off anytime in **Settings**, and we fully respect that choice.\n\n**What a relay can see** — Encrypted bytes and connection metadata (source / destination peer IDs). It can't decrypt your content, ever.\n\n**What's stored on disk** — An encrypted SQLite database, plus a search index designed so full-text search works without exposing plaintext.\n\n**If you lose a device** — Revoke it from any other paired device. Future syncs will exclude it immediately.\n\n**You can audit it** — Every line, including the cryptography, lives on GitHub. Trust the code, not the marketing.\n\n#### Cryptography details\n\n- **End-to-end encryption**: Data is encrypted in transit between devices and remains encrypted at rest in local storage.\n- **XChaCha20-Poly1305 AEAD** — modern authenticated encryption.\n  - 24-byte random nonce effectively eliminates nonce-reuse risk\n  - 32-byte (256-bit) encryption key\n  - Provides ciphertext integrity and authenticity verification\n- **Argon2id key derivation** — securely derives encryption keys from your passphrase.\n  - Memory cost: 128 MB · Iterations: 3 · Parallelism: 4 threads\n  - Resistant to GPU / ASIC cracking attacks\n- **Layered key architecture**:\n  - MasterKey encrypts clipboard content\n  - Key Encryption Key (KEK) is derived from your passphrase via Argon2id\n  - KEK is stored in the system keyring (macOS Keychain, Windows Credential Manager, Linux Secret Service)\n  - MasterKey is encrypted and stored in a KeySlot file\n- **Per-space isolation**: Each space has its own MasterKey; switching to another space re-encrypts local history under the new space's MasterKey.\n- **Device authorization**: Precise control over each paired device's access permissions.\n\n## FAQ\n\n**Why not just use iCloud Universal Clipboard?**\nIf you only use Apple devices, don't need history, and fully trust Apple's closed-source end-to-end encryption — iCloud is fine. The moment you add a Windows or Linux machine, want a searchable history, or want to verify the encryption yourself, you need something else.\n\n**Why not a self-hosted clipboard sync (e.g. ClipCascade)?**\nSelf-hosted means you have to run a server. UniClipboard works out of the box — direct P2P first, encrypted relay only as a fallback. You never have to operate any infrastructure.\n\n**Does it work fully offline / LAN-only?**\nYes. Devices on the same Wi-Fi connect directly without going through the relay. Even if the relay is unreachable, devices on the same network keep syncing.\n\n**Where does my clipboard history actually live?**\nOnly on your devices. Local storage is encrypted at rest with a key that never leaves the device's system keyring. No UniClipboard server ever receives or stores your clipboard content.\n\n**Is there a mobile app?**\nOn iOS, yes — the **UniClipboard iOS App is now in TestFlight public beta**. Install TestFlight from the App Store, then open [testflight.apple.com/join/nyNQ8dQe](https://testflight.apple.com/join/nyNQ8dQe) to accept the invite and install the build. On Android, install the [**UniClipboard Android client**](https://github.com/UniClipboard/uc-android) — a fork of [SyncClipboard](https://github.com/Jeric-X/SyncClipboard) with APKs in [releases](https://github.com/UniClipboard/uc-android/releases/latest); any other SyncClipboard-compatible client also works. Either way, mobile runs as an **HTTP companion**: the desktop daemon exposes a SyncClipboard-compatible HTTP endpoint and the phone talks to it with a base URL + Basic Auth. It's bidirectional; on the LAN out of the box, or across networks via a server node (public HTTPS) or Tailscale. Mobile itself does no NAT traversal or relay. The bundled iOS Shortcut still works as a fallback. See the [Pair a Mobile Device](#mobile-companion-lan) section above.\n\n## Contributing\n\nContributions of all kinds are welcome! Please read [CONTRIBUTING.md](./CONTRIBUTING.md) for the full development setup, branching strategy, commit conventions, and PR process.\n\nQuick start:\n\n1. Fork this repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes following the project's [commit conventions](./CONTRIBUTING.md#commit-conventions)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request against the `main` branch\n\n## License\n\nThis project is licensed under the AGPL-3.0 License - see the [LICENSE](./LICENSE) file for details.\n\n## Acknowledgments\n\n- [Tauri](https://tauri.app) - Cross-platform application framework\n- [React](https://react.dev) - Frontend UI development framework\n- [Rust](https://www.rust-lang.org) - Safe and efficient backend implementation language\n- [iroh](https://www.iroh.computer) - QUIC-based P2P networking that powers cross-network direct connections and blob transfer\n- [Tokio](https://tokio.rs) - Asynchronous runtime that drives every networking and I/O path\n- [shadcn/ui](https://ui.shadcn.com) - Composable component recipes built on Radix UI\n- [Radix UI](https://www.radix-ui.com) - Unstyled, accessible primitives behind the desktop interface\n- [Tailwind CSS](https://tailwindcss.com) - Utility-first styling for the entire UI\n- [SQLite](https://www.sqlite.org) - Embedded database that stores clipboard history locally\n\n---\n\n**Have questions or suggestions?** [Create an Issue](https://github.com/UniClipboard/UniClipboard/issues/new) or contact us to discuss!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funiclipboard%2Funiclipboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funiclipboard%2Funiclipboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funiclipboard%2Funiclipboard/lists"}