Real-time, secure clipboard synchronization between any devices (Android, macOS, iOS, etc.)
Hypo enables seamless clipboard synchronization between any devices. Copy on one device, paste on anotherβinstantly. Supports AndroidβAndroid, macOSβmacOS, AndroidβmacOS, and other cross-platform combinations.
- π Real-time Sync: Sub-second clipboard updates across devices
- π E2E Encrypted: AES-256-GCM encryption, your data never exposed
- π‘ Dual Transport: LAN-first for speed, cloud fallback for mobility
- π Multi-Format: Text, links, images (β€10MB), and files (β€10MB)
- π Clipboard History: Search and restore past clipboard items (macOS)
- π Rich Notifications: Preview content before pasting
- π¨ Native UI: SwiftUI on macOS, Material 3 on Android
- π Battery Optimized: Auto-idles WebSocket when screen is off (Android)
βββββββββββββββββββ LAN (mDNS) ββββββββββββββββββββ
β macOS Client βββββββββββββββββββββββββββββββΊβ Android Client β
β (Swift/SwiftUI)β β (Kotlin/Compose) β
ββββββββββ¬βββββββββ ββββββββββ¬ββββββββββ
β β
β Cloud Fallback (WebSocket) β
ββββββββββββββββββββββ¬ββββββββββββββββββββββββββββ
β
βββββββββββΌβββββββββββ
β Backend Relay β
β (Rust/Actix-web) β
β + Redis β
ββββββββββββββββββββββ
See: docs/architecture.mermaid for detailed component diagram
- macOS: macOS 13+ with Xcode 15+
- Android: HyperOS 3+ (or Android 8+) device
- Backend (optional for cloud sync): Docker or Rust 1.75+
π Complete Installation Guide: See docs/USER_GUIDE.md#installation for detailed setup instructions for all platforms.
Quick Links:
- macOS: Download from GitHub Releases or build from source
- Android: Download APK from GitHub Releases or build from source
For development setup, see Development Setup below.
| Document | Description |
|---|---|
docs/architecture.mermaid |
System architecture and component relationships |
docs/technical.md |
Technical specifications and implementation details |
docs/USER_GUIDE.md |
Complete user guide including installation |
docs/TROUBLESHOOTING.md |
Common issues and solutions |
tasks.md |
Development roadmap and task breakdown |
changelog.md |
Version history and project status summary |
hypo/
βββ macos/ # Swift/SwiftUI macOS client
βββ android/ # Kotlin/Compose Android client
βββ backend/ # Rust backend relay server
βββ docs/ # Architecture and specifications
βββ tasks/ # Development tasks and planning
βββ tests/ # Cross-platform integration tests
# Build both platforms at once
./scripts/build-all.sh
# Build Android only
./scripts/build-android.sh
# Build macOS only
./scripts/build-macos.sh# Navigate to macOS project
cd macos
# Open the Swift Package workspace in Xcode
xed HypoApp.xcworkspace # or: open HypoApp.xcworkspace
# Set your development team in Signing & Capabilities
# Build and run (βR)Requirements:
- macOS 13+ (Ventura or later)
- Xcode 15+
- Swift 6
Quick Start (Automated Build):
# 1. Install prerequisites
brew install openjdk@17
# 2. Set up Android SDK (one-time setup)
./scripts/setup-android-sdk.sh
# 3. Build APK (automated script handles environment)
./scripts/build-android.sh
# 4. Install on connected device
$ANDROID_SDK_ROOT/platform-tools/adb install -r android/app/build/outputs/apk/debug/app-debug.apkManual Build (Advanced):
# Configure environment
export JAVA_HOME="/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home"
export ANDROID_SDK_ROOT="$(pwd)/.android-sdk"
export GRADLE_USER_HOME="$(pwd)/.gradle"
# Build
cd android
./gradlew assembleDebug --stacktraceOutput: android/app/build/outputs/apk/debug/app-debug.apk (~41MB)
Requirements:
- Java: OpenJDK 17
- Android SDK: API 34 (via setup script or Android Studio)
- Kotlin: 1.9.22 (via Gradle wrapper 8.7)
- Build Time: ~4-6 seconds (incremental), ~15 seconds (clean)
π Detailed Instructions: See android/README.md for:
- Complete build instructions
- Xiaomi/HyperOS device setup
- Troubleshooting common issues
- Development tips
Note: The repository omits the binary
gradle-wrapper.jarin favour of a base64-encoded copy. The providedgradlewscripts reconstruct the official Gradle 8.7 wrapper JAR automatically the first time you run them, keeping the tree free of binaries while preserving reproducible builds.
Production Server: https://hypo.fly.dev (deployed on Fly.io)
Local Development:
# Navigate to backend project
cd backend
# Install dependencies and build
cargo build --release
# Run with Redis (Docker)
docker-compose up -d redis
cargo run --release
# Or run everything with Docker
docker-compose upServer Endpoints:
- Health:
GET /health- Server status and uptime - Metrics:
GET /metrics- Prometheus metrics - WebSocket:
WS /ws- Real-time message relay (requiresX-Device-IdandX-Device-Platformheaders) - Pairing:
POST /pairing/code- Create pairing code - Pairing:
POST /pairing/claim- Claim pairing code
Requirements:
- Rust 1.83+ (for local development)
- Redis 7+ (embedded in production Docker image, or Docker for local)
- Fly.io CLI (for deployment)
Testing Server:
# Test all server functions
./tests/test-server-all.shThe current toolchain compiles cleanly in this repository. To reproduce the latest verification run:
# macOS Swift package build (from repo root)
cd macos
swift build
# Backend relay (from repo root)
cd backend
cargo build
# Android unit tests (requires Android SDK + JDK 17)
./scripts/setup-android-sdk.sh # downloads command-line tools + platform 34 into .android-sdk/
export ANDROID_SDK_ROOT="$(pwd)/.android-sdk"
export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64" # adjust for your platform
cd android
./gradlew test --console=plainThe helper script scripts/setup-android-sdk.sh fetches the Android command-
line tools and installs platform 34 + Build Tools 34.0.0 in .android-sdk/. If
you already have an SDK installed, set ANDROID_SDK_ROOT to that location and
skip the script. Unit tests require JDK 17; set JAVA_HOME accordingly before
invoking Gradle.
Hypo takes security seriously:
- End-to-End Encryption: All clipboard data encrypted with AES-256-GCM
- Device Pairing: ECDH key exchange via QR code (LAN) or secure relay (cloud)
- Certificate Pinning: Prevents MITM attacks on cloud relay
- No Data Storage: Backend relay never stores clipboard content
- Key Rotation: Automatic 30-day key rotation with backward compatibility
Threat Model: See docs/technical.md#security-design
Security Status: Production-ready implementation with:
- β End-to-end encryption (AES-256-GCM)
- β Certificate pinning (prevents MITM attacks)
- β Device pairing with signature verification
- β Key rotation (pairing-time forward secrecy)
- β No data storage on backend (privacy by design)
| Sprint | Timeline | Milestone |
|---|---|---|
| Sprint 1 | Weeks 1-2 | Foundation & Architecture β |
| Sprint 2 | Weeks 3-4 | Core Sync Engine β |
| Sprint 3 | Weeks 5-6 | Transport Layer (LAN + Cloud) β |
| Sprint 4 | Weeks 7-8 | Content Type Handling (Text, Images, Files) β |
| Sprint 5 | Weeks 9-10 | User Interface Polish β |
| Sprint 6 | Weeks 11-12 | Device Pairing (QR + Remote) β |
| Sprint 7 | Weeks 13-14 | Testing & Optimization β |
| Sprint 8 | Weeks 15-16 | Polish & Deployment β |
| Sprint 9+ | Weeks 17+ | Production Release & Future Features |
Detailed Tasks: See tasks.md
Phase: Production Release β
Version: v1.0.6
Progress: 100%
Last Updated: December 5, 2025
Recent Milestones:
- β v1.0.6 Released (Dec 13, 2025): Nonce Reuse Fix for Dual-Send Transport
- β
v1.0.5 Released (Dec 5, 2025): Text Selection Context Menu & Clipboard Processing Improvements
- Android text selection context menu: "Copy to Hypo" appears first in menu
- Force immediate clipboard processing for context menu selections
- Fixed Android history item copying (FileProvider for images/files)
- Improved duplicate detection: items move to top when copied
- Universal "Copied to clipboard" toast for all item types
- Reduced logging verbosity across all platforms
- macOS UI improvements: hover tooltips, better connection status display
- β
v1.0.4 Released (Dec 4, 2025): Code Quality & Storage Optimization
- Size constants consolidation (single source of truth)
- Fixed gzip compression format compatibility
- macOS local file storage optimization (pointer-only storage)
- β
v1.0.3 Released (Dec 4, 2025): Temp File Management & Performance Improvements
- Automatic temp file cleanup (30s delay, clipboard change detection)
- Size limit checks (50MB copy, 10MB sync) with user notifications
- Android lazy loading for large content (prevents crashes)
- Fixed macOS encryption encoding (base64 strings for Android compatibility)
- β
v1.0.2 Released (Dec 3, 2025): Build & Release Improvements
- macOS app signing for free distribution (ad-hoc signing)
- Automatic release notes generation
- Android build optimizations (faster CI/CD builds)
- Improved backend deployment workflow
- macOS notification improvements (remote-only, better formatting)
- Notification permission management in Settings
- β Production-Ready: All critical bugs resolved, system fully operational
- β
Backend Server Deployed: Production server at
https://hypo.fly.dev - β LAN Auto-Discovery Pairing: Tap-to-pair flow with automatic key exchange fully functional
- β Device-Agnostic Pairing: Any device can pair with any other device (AndroidβAndroid, macOSβmacOS, AndroidβmacOS)
- β Clipboard Sync: Bidirectional synchronization verified end-to-end (LAN + Cloud)
- β Battery Optimization: 60-80% battery drain reduction when screen off
- β Automated CI/CD: Complete GitHub Actions workflow for builds and releases
- β Comprehensive Documentation: All docs consolidated and up-to-date
Server Status:
- Production:
https://hypo.fly.devβ (operational, all endpoints tested) - WebSocket:
wss://hypo.fly.dev/wsβ (ready for client connections) - Health:
/healthendpoint responding (~50ms) - Metrics: Prometheus metrics available at
/metrics - Infrastructure: Auto-scaling, zero-downtime deploys
Full Status: See changelog.md for version history and project status
# macOS: Run unit tests
cd macos
swift test
# Android: Run unit tests (after provisioning the SDK + JDK 17)
cd android
./gradlew testDebugUnitTest --tests "*CryptoServiceTest" --tests "*SyncCoordinatorTest"
# Backend: Run unit tests
cd backend
cargo test# Test all backend server endpoints and functions
./tests/test-server-all.sh
# Test with local server (if running locally)
USE_LOCAL=true ./tests/test-server-all.shThe server test script validates:
- β Health endpoint
- β Metrics endpoint (Prometheus format)
- β Pairing code creation and claim
- β WebSocket endpoint validation
- β Error handling (404 responses)
- β CORS headers
# Comprehensive sync testing (macOS + Android)
./tests/test-sync.sh
# Automated clipboard sync test (emulator)
./tests/test-clipboard-sync-emulator-auto.sh
# Pairing and sync flow
./tests/test-sync.shTest Coverage Target: 80% for clients, 90% for backend
Test Status:
- β Backend: All unit and integration tests passing (32/32 tests)
- β LAN sync: Verified end-to-end
- β Cloud sync: Verified end-to-end
- β Backend routing: Verified correct message delivery
- β Android LAN server: Binary frame delivery verified
| Metric | Target | Status |
|---|---|---|
| LAN Sync Latency (P95) | < 500ms | β Achieved (measured ~200-400ms) |
| Cloud Sync Latency (P95) | < 3s | β Achieved (measured ~1-2s) |
| Memory Usage (macOS) | < 50MB | β Achieved (~35-45MB typical) |
| Memory Usage (Android) | < 30MB | β Achieved (~20-25MB typical) |
| Battery Drain (Android) | < 2% per day | β Achieved (screen-off optimization: 60-80% reduction) |
| Server Uptime | > 99.9% | β Achieved (36+ days continuous uptime) |
| Server Response Time | < 100ms | β Achieved (health endpoint: ~50ms) |
Note: Project currently in solo development phase. Contribution guidelines will be added before public beta.
MIT License - See LICENSE for details
- Inspired by Apple's Universal Clipboard
- Built for the Xiaomi/HyperOS community
- Powered by open-source technologies
- Issues: GitHub Issues (coming soon)
- Discussions: GitHub Discussions (coming soon)
This project is in production release phase. The system is fully functional and has been extensively tested. All critical bugs have been resolved. Ready for distribution.
Current Version: v1.0.6
Stability: Production-ready
Next Milestone: Public beta testing and future feature development
Built with β€οΈ for seamless cross-platform workflows