MCPcopy
hub / github.com/Sathvik-Rao/ClipCascade

github.com/Sathvik-Rao/ClipCascade @3.2.0 sqlite

repository ↗ · DeepWiki ↗ · release 3.2.0 ↗
1,378 symbols 3,716 edges 86 files 83 documented · 6%
README

ClipCascade Logo ClipCascade

ClipCascade is a lightweight, open-source utility that automatically syncs your clipboard across multiple devices—no manual input required. It ensures seamless sharing with robust end-to-end encryption, providing a secure and reliable clipboard experience across workstations.

No Server? No Problem! Instantly sync your clipboard using the Live Community Server at clipcascade.sathvik.devno setup needed. Just create an account and start sharing your clipboard across devices in seconds!

Docker Windows macOS Android Linux
Docker Windows macOS Android Linux
<img src="https://github.com/user-attachments/assets/0b7178fd-e40f-400c-9c6f-6ea9f4e5b800" alt="arch_design_p2s" width="360" height="300" />
<img src="https://github.com/user-attachments/assets/32366820-fc48-4849-914f-fe0474fa308a" alt="arch_design_p2p" width="360" height="300" />

📸 Screenshots

🪟 Desktop (Windows) 🍏 Desktop (macOS) 🤖📱 Mobile (Android) 🐧🖱️ Desktop (Linux_GUI) 🐧⌨️ Desktop (Linux_CLI)
Desktop (Windows) - 1 Desktop (macOS) - 1 Mobile (Android) - 1 Desktop (Linux_GUI) - 1 Desktop (Linux_CLI) - 1
Desktop (Windows) - 2 Desktop (macOS) - 2 Mobile (Android) - 2 Desktop (Linux_GUI) - 2 Desktop (Linux_CLI) - 2

✨ Features

  • 🚀 Instant Clipboard Sync – Clipboard content updates in real time across all connected devices. Just copy, and it’s there!
  • 🔒 Secure Authentication – Ensures only authorized users can sync clipboard data.
  • 🛡️ End-to-End Encryption – Protects clipboard content with advanced cryptographic security and hashing techniques.
  • 🔄 Dual Sync Modes:
  • ☁️ Server-Based Sync – Reliable cloud-based synchronization via a centralized server.
  • 🔗 Peer-to-Peer Sync – Direct device-to-device connection for ultra-low latency and minimal server dependency.
  • 💻 Cross-Platform Compatibility – Works seamlessly on Windows, macOS, Linux, and Android.
  • 📄📷📁 Universal Clipboard – Syncs text, images, and files effortlessly across devices.
  • 📦 Self-Hosting Option – Deploy your own secure instance using a Docker image or standalone JAR file.
  • 👥 Multi-User Support – Isolates clipboard data per user while enabling seamless syncing between personal devices.
  • 🌐 Web-Based Dashboard – Track clipboard activity and manage settings through an intuitive interface.
  • ⚙️ Customizable Preferences – Fine-tune sync settings for performance, security, and usability.
  • 🔔 Smart Update Notifications – Stay informed about new features, security patches, and enhancements.
Type Windows MacOS Linux GUI Linux CLI Android
Text
Image
Files

📥 Installation Guide

🦾 Self-Hosting ClipCascade on Bare Metal:

To deploy the ClipCascade server on any operating system that supports Java 21 or later, follow the steps outlined below.

  1. Download the Server JAR File

    Obtain the latest release of ClipCascade-Server-JRE_21.jar from the release page.

  2. Configure Environment Variables (Optional)

    The ClipCascade server supports various environment variables for customization. None of these variables are mandatory, but they can be configured as needed.

    For a comprehensive list of available environment variables, refer to the Advanced Details section.

    Variable Description Default Value Example
    CC_MAX_MESSAGE_SIZE_IN_MiB Defines the maximum allowed message size in MiB. Ignored if CC_P2P_ENABLED is set to true. 1 3
    CC_ALLOWED_ORIGINS Specifies the allowed CORS origins for secure cross-origin access. * https://clipcascade.example.com
    CC_P2P_ENABLED Enables or disables peer-to-peer mode. When enabled, CC_MAX_MESSAGE_SIZE_IN_MiB is ignored. false true
    CC_SIGNUP_ENABLED Allows or restricts user self-registration. false false
    CC_PORT Specifies the port on which the server listens for incoming connections. 8080 1234
  3. Start the Server
    Run the following command in the terminal to launch the ClipCascade server:

    bash java -jar ClipCascade-Server-JRE_21.jar

  4. Access the Server
    Once the server is running, you can access it via:

    http://localhost:8080

    • Default Credentials:
    • Username: admin
    • Password: admin123

Important: It is strongly recommended to change the default credentials immediately after the initial login.

For guidance on setting up a reverse proxy, refer to the Reverse Proxy Setup section.

➡️ Explore Advanced Details


🐳 Self-Hosting ClipCascade Using Docker:

Quick Installation (Single Command)

For users who prefer a one-liner, you can deploy ClipCascade instantly using:

docker run -d --name clipcascade -p 8080:8080 -e CC_MAX_MESSAGE_SIZE_IN_MiB=1 -v ./cc_users:/database sathvikrao/clipcascade

Detailed Installation Steps

To host ClipCascade on your server using Docker, follow these steps:

  1. Create a docker-compose.yml File

    Create a docker-compose.yml file with the following content, or download it from the release page:

    yaml services: clipcascade: image: sathvikrao/clipcascade:latest ports: - "8080:8080" # Expose the ClipCascade server on port 8080 restart: always # Automatically restart the container if it stops volumes: - ./cc_users:/database # Persistent storage for user data environment: - CC_MAX_MESSAGE_SIZE_IN_MiB=1 # Maximum message size in MiB (ignored if P2P mode is enabled) - CC_P2P_ENABLED=false # Enables or disables peer-to-peer(P2P) mode # - CC_ALLOWED_ORIGINS=https://clipcascade.example.com # Defines allowed CORS origins for security # - CC_SIGNUP_ENABLED=false # Enables or disables user self-registration

For additional .yml configuration files, visit ClipCascade Server Docker Configuration.

  1. Deploy the Docker Container

    Run the Docker container using Docker Compose:

    docker-compose up -d

  2. Access the Server
    Once the server is running, you can access it via:

    http://localhost:8080

    • Default Credentials:
    • Username: admin
    • Password: admin123

Important: It is strongly recommended to change the default credentials immediately after the initial login.

For guidance on setting up a reverse proxy, refer to the Reverse Proxy Setup section.

➡️ Explore Advanced Details

Web Page login Web Page home Web Page advance


🪟 Windows Desktop Application:

To install the ClipCascade Windows desktop application, follow these steps:

  1. Download the Installer
  2. Install the Application
    • Run the downloaded .msi installer and follow the on-screen instructions, and select the default installation path specified by the installer.
    • Startup is enabled by default; you can disable it in the Task Manager if desired.
  3. Launch and Configure
    • Open ClipCascade after installation and log in to start syncing your clipboard across devices.
    • When prompted, enter your server's IP address, port number, or domain name.
    • If encryption is enabled, ensure it is enabled on all devices.
    • In the Extra Config section, you can set a local clipboard size limit. By default, no limit is enforced (note: large file transfers may cause temporary unresponsiveness).
  4. Network Access Prompt (P2P Mode)

    • If the server is running in P2P mode, you will see a Windows security prompt asking, "Do you want to allow public and private networks to access this app?"

    win_network_prompt

    • This is because each client device acts as a peer in the network, requiring direct communication.
    • Click Allow to enable clipboard data syncing across your devices without the help of a server. The server is needed only for signaling and authentication.

Important Note: Since the application is not published or registered with Microsoft, you may see a warning suggesting that it could be unsafe. This is a standard precaution and does not indicate any issues with the software. You can choose t

Extension points exported contracts — how you extend this code

Timeout (Interface)
(no doc) [4 implementers]
ClipCascade_Server/ClipCascade_Backend/src/main/java/com/acme/clipcascade/model/Timeout.java
UserRepo (Interface)
(no doc)
ClipCascade_Server/ClipCascade_Backend/src/main/java/com/acme/clipcascade/repo/UserRepo.java
UserInfoRepo (Interface)
(no doc)
ClipCascade_Server/ClipCascade_Backend/src/main/java/com/acme/clipcascade/repo/UserInfoRepo.java

Core symbols most depended-on inside this repo

get
called by 158
ClipCascade_Desktop/src/utils/request_manager.py
setDataInAsyncStorage
called by 60
ClipCascade_Mobile/src/AsyncStorageManagement.js
mainloop
called by 32
ClipCascade_Desktop/src/cli/login.py
encode
called by 23
ClipCascade_Server/ClipCascade_Backend/src/main/java/com/acme/clipcascade/config/HashConfig.java
executeWithResponse
called by 20
ClipCascade_Server/ClipCascade_Backend/src/main/java/com/acme/clipcascade/utils/ResponseEntityUtil.java
conditionalExecuteOrError
called by 19
ClipCascade_Server/ClipCascade_Backend/src/main/java/com/acme/clipcascade/utils/ResponseEntityUtil.java
getDataFromAsyncStorage
called by 18
ClipCascade_Mobile/src/AsyncStorageManagement.js
close
called by 18
ClipCascade_Desktop/src/cli/login.py

Shape

Method 918
Function 339
Class 118
Interface 3

Languages

TypeScript52%
Java27%
Python21%

Modules by API surface

ClipCascade_Server/ClipCascade_Backend/src/main/resources/static/assets/js/bootstrap.bundle.min.js390 symbols
ClipCascade_Server/ClipCascade_Backend/src/main/resources/static/assets/js/stomp.umd.min.js117 symbols
ClipCascade_Server/ClipCascade_Backend/src/main/resources/static/assets/js/jquery-3.1.1.min.js85 symbols
ClipCascade_Server/ClipCascade_Backend/src/main/resources/static/assets/js/main.js55 symbols
ClipCascade_Desktop/src/p2p/p2p_manager.py50 symbols
ClipCascade_Server/ClipCascade_Backend/src/main/java/com/acme/clipcascade/config/ClipCascadeProperties.java45 symbols
ClipCascade_Server/ClipCascade_Backend/src/main/java/com/acme/clipcascade/controller/ClipCascadeController.java39 symbols
ClipCascade_Mobile/src/StartForegroundService.js37 symbols
ClipCascade_Server/ClipCascade_Backend/src/main/java/com/acme/clipcascade/model/UserInfo.java34 symbols
ClipCascade_Desktop/src/gui/tray.py27 symbols
ClipCascade_Desktop/src/cli/tray.py26 symbols
ClipCascade_Server/ClipCascade_Backend/src/main/java/com/acme/clipcascade/service/BruteForceProtectionService.java24 symbols

Dependencies from manifests, versioned

cn.apiclub.tool:simplecaptcha1.2.2 · 1×
com.github.oshi:oshi-core6.6.5 · 1×
com.h2database:h2
jakarta.validation:jakarta.validation-api
org.ehcache:ehcache
org.postgresql:postgresql
org.slf4j:slf4j-api
org.springframework.boot:spring-boot-starter
org.springframework.boot:spring-boot-starter-data-jpa
org.springframework.boot:spring-boot-starter-reactor-netty
org.springframework.boot:spring-boot-starter-security
org.springframework.boot:spring-boot-starter-test

Datastores touched

clipcascadeDatabase · 1 repos

For agents

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

⬇ download graph artifact