CableDrop

USB direct · nothing in the middle

Move files and text between your computer and an Android phone over one USB cable.

No network. No cloud. Nothing to install on the phone. Plug the cable in, open a page on the phone, and both directions work.

MIT licensed · macOS 12+, Windows 10+, Linux (GTK3) · Android 7+

The CableDrop menu bar panel: a connected Android phone at the top, four action cards, a save-location card, the recent transfers list, and a USB trust banner.

Files, both directions

Drag onto the panel or pick files to send. Browse the phone's storage and pull anything back.

Clipboard, both directions

Copy on the computer, tap to copy on the phone. Paste on the phone, it lands on the computer. A separate note slot never clobbers what you're using.

Real progress

Byte-weighted percentage for multi-file batches, elapsed time where adb gives no stream progress, a real percentage for phone uploads.

Two surfaces, one design language

The desktop panel and the phone page share the same colour tokens, radii and type scale — one stylesheet's worth of design decisions, applied to a 380×540 window and a 390×844 screen.

The CableDrop desktop panel in dark mode.
Desktop panel — a menu bar window, 380×540. Dark mode follows the system.
The CableDrop phone page, full page: header with the connected device, a USB trust strip, and cards for content from the computer, the computer clipboard, sending text back, uploading files, and browsing the computer's shared folder.
Phone page — the whole page at a 390×844 viewport. Any mobile browser, no install.

How it works

One Go binary. The cable is the whole transport.

What's in the box

Send and receive files

Drop files or whole folders on the panel; pushes land in the phone's Download folder. Pulls land in the shared folder on the computer.

Clipboard bridge

Both directions, including a dedicated note slot so sending text never overwrites the clipboard you're working from.

Phone file browser

The shared folder on the computer is a real file browser on the phone — subfolders, sizes, downloads included.

Honest progress

Byte-weighted percentages, elapsed time when adb offers nothing, and failures reported in words rather than error codes.

Real connection states

Not connected, connecting, cable in the wrong USB mode, adb missing, tunnel failed — each says what to do next.

Optional Android app

A ~845 KB WebView shell for when you want it to feel installed: real file picking, downloads into the Downloads app, a reconnect screen.

Light and dark

Both surfaces follow prefers-color-scheme. It is a media query, not a setting.

Portable build

macOS, Windows and Linux from one tree. Windows cross-compiles from a Mac; the Linux build needs GTK3 and WebKitGTK 4.1.

The Android app is optional

Everything above works in the phone's own browser — nothing to install. The APK is a small WebView shell around the very same page, for when you would rather tap an icon than a bookmark. It bundles no server of its own: plug the cable in exactly as before.

CableDrop running as an installed Android app: the connected header, the green USB-only strip, the clipboard card, the send-text card, the upload card and the file browser.
The CableDrop launcher icon: a blue rounded square with a white mark.

Launcher icon — the same artwork as everywhere else, drawn in code rather than shipped as bitmaps.

  • File picking that behaves. Uploads use the system picker, and downloads land in the Downloads app with non-ASCII names intact.
  • A reconnect screen. Cable out says so plainly instead of showing a WebView error.
  • A themed window. The window background and status bar follow the system light/dark setting, so a dark phone never flashes white on cold start.
Size
~845 KB — the platform WebView and nothing else
Range
Android 7.0+ (minSdk 24), targetSdk 36
Permissions
INTERNET alone, used only by the loopback tunnel
Build
make apk → dist/CableDrop.apk

Your data doesn't leave the cable

Every byte goes over the USB connection. No account, no server, no telemetry beyond what your package manager already knows. Nothing is installed on the phone — you open a page.

Download

Pick your platform. The desktop builds are ready to run; the Android app is optional.

Run it yourself

  1. Get adb. Install Android Platform Tools (brew install android-platform-tools), or drop the platform-tools folder next to the binary.
  2. Build.
    make app          # CableDrop.app — a menu bar app, no Dock icon
    open CableDrop.app
  3. Plug in the cable and set the phone's USB mode to File transfer / MTP. "Charging only" is invisible to adb.
  4. Open the panel from the menu bar, then open http://localhost:8765 on the phone. That's the whole phone UI.

make build · make app · make windows · make linux · make apk