Sharing the clipboard between your Android phone and your computers
  • Kotlin 76.6%
  • Go 18.4%
  • Shell 3.7%
  • Nix 1.3%
Find a file
github-actions[bot] c14d0adbc9
Merge pull request #29 from labi-le/dependabot/gradle/androidx.appcompat-appcompat-1.8.0
chore(deps): bump androidx.appcompat:appcompat from 1.7.1 to 1.8.0
2026-08-22 00:16:17 +00:00
.github ci: take the node 24 actions, basic gradle cache 2026-08-07 16:22:36 +03:00
app chore(deps): bump androidx.appcompat:appcompat from 1.7.1 to 1.8.0 2026-08-22 00:12:44 +00:00
background-clipboard fix(build): pin agp 8.6.1 and the gradle 8.9 wrapper 2026-07-27 11:19:44 +03:00
belphegor@adf0338619 release: v0.1.5 — track core v3.7.5 2026-08-21 07:39:39 +00:00
glue feat(ui): expand settings, add background auto-reconnect, refine HIG surface 2026-07-13 20:40:47 +03:00
gradle/wrapper ci: let the gradle wrapper follow nixpkgs, not dependabot 2026-07-27 18:44:48 +03:00
scripts ci: fail apk.sh when the nix gradle drifts from the wrapper 2026-07-27 18:47:36 +03:00
.gitignore Android clipboard-sync client for belphegor 2026-07-12 18:23:15 +03:00
.gitmodules Android clipboard-sync client for belphegor 2026-07-12 18:23:15 +03:00
AGENTS.md ci: fail apk.sh when the nix gradle drifts from the wrapper 2026-07-27 18:47:36 +03:00
build.gradle.kts chore(build): track the nix gradle with the wrapper, take agp 8.13.2 2026-07-27 18:36:18 +03:00
DESIGN.md service: add a switch to hide the notification 2026-08-14 22:19:34 +03:00
go.work Android clipboard-sync client for belphegor 2026-07-12 18:23:15 +03:00
go.work.sum Android clipboard-sync client for belphegor 2026-07-12 18:23:15 +03:00
gradle.properties Android clipboard-sync client for belphegor 2026-07-12 18:23:15 +03:00
gradlew chore(deps): bump gradle-wrapper from 8.14.4 to 8.14.5 2026-07-27 15:38:12 +00:00
gradlew.bat chore(deps): bump gradle-wrapper from 8.14.4 to 8.14.5 2026-07-27 15:38:12 +00:00
LICENSE docs: add Apache-2.0 LICENSE and NOTICE (references the belphegor core) 2026-07-12 19:06:27 +03:00
NOTICE docs: add Apache-2.0 LICENSE and NOTICE (references the belphegor core) 2026-07-12 19:06:27 +03:00
README.md feat(ui): adopt Apple-HIG design language 2026-07-13 01:30:20 +03:00
settings.gradle.kts Android clipboard-sync client for belphegor 2026-07-12 18:23:15 +03:00
shell.nix Android clipboard-sync client for belphegor 2026-07-12 18:23:15 +03:00

belphegor-mobile

Android client for belphegor — share the clipboard between your Android phone and your computers over the local network.

The phone runs the same belphegor core as the desktop app, compiled to a native library with gomobile, so it is a first-class peer: copy on your laptop, paste on your phone, and back. No cloud, no account — everything stays on your LAN.

Features

  • P2P over the LAN — direct QUIC/TLS 1.3 connections to your desktop peers; nothing leaves your network.
  • Encrypted — a shared secret gates the mesh (must match the desktop --secret).
  • Auto-discovery — finds belphegor peers on the same Wi-Fi automatically, or add them by ip:port.
  • Text & images — clipboard text and images sync both ways.
  • Foreground service — keeps syncing while the app is open, and can restart on boot.
  • In-app updates — checks GitHub Releases and offers a one-tap download & install.
  • Wire-compatible with desktop belphegor by construction (same core).

Requirements

  • Android 8.0 (API 26) or newer.
  • A computer running belphegor on the same Wi-Fi / LAN.
  • Background sync (while the app is not in focus) additionally needs the LSPosed module — see Background sync.

Install

Download the latest APK from the Releases page:

APK For
belphegor.apk real phones (arm64 / armv7)
belphegor-x86_64.apk emulators / Waydroid (x86_64)
belphegor-background-clipboard.apk the optional LSPosed module (see below)

Enable install unknown apps for your browser or file manager, then open the APK.

Releases built without a signing key ship as *-unsigned.apk and must be signed before they can be installed.

Setup

  1. Open the app and go to the Settings tab.
  2. Set a Shared secret matching your desktop belphegor --secret. Leave it empty for an open LAN, where anyone on the network can connect. Changes are saved as you type and apply the next time sync starts.
  3. Optionally set a Device name, listen port, transport (QUIC by default, or TCP), and turn on LAN auto-discovery.
  4. Back on the Dashboard tab, flip the sync switch on.

On the same network the app discovers your desktop peers automatically; you can also add one manually as ip:port with the + button on the Nodes tab. Copy something on any device and it shows up on the others.

Background sync (LSPosed)

Android 10+ blocks apps from reading or writing the clipboard while they are not in the foreground. Without a workaround, belphegor-mobile only syncs while its window is open.

The optional Belphegor Background Clipboard LSPosed module lifts that restriction for belphegor only: it hooks the framework clipboard guard (ClipboardService.clipboardAccessAllowed) inside system_server and force-allows calls made on the app's behalf, so sync keeps working in the background. It targets belphegor's package and nothing else.

Requirements: a rooted device (Magisk / KernelSU) with LSPosed (Zygisk), Android 10+.

Install:

  1. Install the module — either from the app (Settings → BACKGROUND → Install background module) or the belphegor-background-clipboard.apk from Releases.
  2. Open LSPosed Manager → Modules, enable Belphegor Background Clipboard, and set its scope to System Framework (the android / system_server process).
  3. Reboot (a soft reboot is enough).

Without root + LSPosed the module does nothing and is not required — foreground sync still works.

Build from source

Needs the Android SDK + NDK, Go, and gomobile. A reproducible toolchain is provided via shell.nix:

git submodule update --init          # fetch the belphegor core (./belphegor)
nix-shell                            # Go + Android SDK/NDK + gomobile
scripts/build-aar.sh                 # build the native core -> app/libs/belphegor.aar
./gradlew :app:assembleDebug :background-clipboard:assembleDebug

The belphegor core is vendored as a git submodule under ./belphegor; the Android-specific glue (the gomobile facade, LAN discovery and the node helpers) lives in ./glue and is overlaid onto it at build time by scripts/build-aar.sh, so the core stays a clean cross-platform project.

License

Apache License 2.0 — the same license as the belphegor core it is built on. See also NOTICE.