Open Source · Remote.Adb

Develop on a remote box,
with your devices still local.

I moved my development to a remote Linux machine, but my Android phones and emulators stayed plugged into the workstation on my desk — where the remote adb can't reach them. Remote.Adb opens the SSH reverse tunnel that bridges the gap.


The project

Why I built it

I moved my day-to-day development to a remote Linux machine. My Android phones, though, are plugged into my local workstation over USB, and my emulators run there too. The remote machine's adb — and the IDE running on it — simply can't see any of them.

The fix is to run the adb server locally, where the devices are, and open an SSH reverse tunnel so the remote's adb connects back through it to that local server. I had this working as a pile of shell scripts, but it was fiddly to start, easy to get wrong, and did nothing for emulators.

Remote.Adb turns that workflow into a single app — tunnel, emulator management, and device listing in one place. It's a cross-platform desktop app with a matching console, built on .NET 10 and Avalonia. Early but usable, and MIT licensed.

What it does

Tunnel, emulators, and devices in one place

SSH reverse tunnel

Opens the reverse tunnel so the remote host's adb reaches your local adb server. Detects when the local adb server drops and reconnects automatically, and can come up with the app at launch.

Emulator management

List, start, and stop your Android Virtual Devices — and create, edit, or delete them — without dropping to the command line.

Device listing

Shows the devices adb currently sees, refreshed live while the page is open. Connecting to a device over WiFi is on the roadmap.

Requirements

What you'll need

Run Remote.Adb on the machine your devices are plugged into — typically your local workstation — next to the adb server. It drives the tools you already have rather than replacing them.

  • .NET 10 runtime — the builds are framework-dependent
  • Android SDK with adb and emulator (found via ANDROID_HOME or your platform default)
  • An OpenSSH client on your PATH
  • Key-based SSH to the remote host that works non-interactively — the tunnel won't answer a password or passphrase prompt
MIT License

Browse the source on GitHub

Built with .NET 10 and Avalonia, with all logic in a shared core that the desktop and console front-ends both drive. MIT licensed — issues and pull requests welcome.

View on GitHub