macOS 14+ · Open Source · MIT

Your Android device hub,
in the Mac menu bar.

Launch AVDs, monitor real devices, and troubleshoot faster — without opening Terminal. EmuHub gives you one-click control over every emulator and connected handset, right from your menu bar.

What you'd usually type
$ emulator -avd Pixel_7_API_34 -no-snapshot-load▍
$ adb devices -l
→ Now: click. done.
EmuHub
⌥⌘X
Running · 2
live
Pixel 7 API 34
emulator-5554 · booted
Pixel 8 Pro
Android 14 · USB
USB
Available · 4
Pixel Tablet API 34
tablet · x86_64
Wear OS Round API 33
wearable · arm64
Android TV 1080p API 33
television · x86_64
refresh · 5sv1.4.2
MITOpen Source · MIT
swiftBuilt with SwiftUI
sdkAndroid SDK tools
macOSMenuBarExtra API
wipNotarization roadmap
// 01 · Capabilities

A small app
that replaces eight commands.

Each feature exists to remove one specific friction in the Android-on-Mac workflow. Nothing more. Definitely nothing less.

01

Every AVD, one click away

Lists all configured Android Virtual Devices with the correct icon for phone, tablet, TV, Wear OS, and Automotive — then launches them in a single click. Stop cleanly via adb emu kill when you're done.

phonetablettvwearauto
02

Real devices, real names

Detects USB and Wi-Fi devices automatically. Resolves real model names — Pixel, Galaxy — via adb shell getprop, then caches the result so refreshes stay fast.

03

⌥⌘X. Anywhere.

Global hotkey opens or closes the popover from any app. Lives in the menu bar — never in your dock, never in your way.

04

Status that means something

Authorized, unauthorized, offline — each state shown with a clear label and an actionable next step. No guessing what adb is doing under the hood.

05

Read-only by design

Physical devices show in the UI but can't be stopped or wiped from EmuHub. Real hardware deserves real protection from a button misclick.

06

Wi-Fi devices, deduplicated

When the same handset shows up over both ADB wireless and emulator serial, EmuHub collapses them into a single row. No more phantom duplicates.

07

Custom launch flags

Pass any emulator flag you'd type at the terminal — -no-snapshot-load, -gpu host, -wipe-data, anything — and EmuHub uses them on every launch.

08

Quiet updates

In-app checker compares your installed version against the latest GitHub Release. One link, one click, one new build. No background services.

// 02 · Workflow

Three clicks. Zero terminal.

The flow you already have in your head — except none of it requires typing a command or remembering which window has the emulator process.

01

Open from the menu bar

Click the EmuHub icon or hit ⌥⌘X. The popover slides down with your full device inventory.

⌥⌘X
02

Pick an AVD or device

Every emulator profile is listed with the right icon. Running devices and connected hardware show separately.

Pixel 7 API 34
Wear OS Round API 33
03

Act instantly

Launch boots the emulator. Stop sends a clean adb emu kill. Connected hardware updates live in the same view.

Launch→booted in 4s
// 03 · Who uses it

Built for the
in-between moments.

Case 01
Daily development

Stop fighting the emulator window stack

Switch between four AVD profiles, your physical Pixel, and your QA team's Galaxy without ever leaving Xcode or Android Studio. EmuHub stays one shortcut away.

Pixel 7 API 34 · Galaxy Tab API 33 · Wear OS · Auto
Case 02
QA regression sweeps

See every device, every state, at a glance

Spot the unauthorized handset, the offline cable, the wireless device that dropped out — without rerunning adb devices every two minutes. Refresh runs itself on a 3–60 second cadence.

auto-refresh · authorized / offline / unauthorized · USB + Wi-Fi
Case 03
Workshops & demos

One menu bar click in front of a room

Standing in front of a class or recording a screencast? Don't fumble in Terminal. Click. The AVD boots. The audience sees the friendly UI, not your shell history.

live demos · DevRel · classroom · screencasts
// 04 · Requirements

What it needs.
Not much.

If you already build for Android on macOS, you have everything you need. EmuHub wraps the SDK tools you already trust — it doesn't replace them.

~ — zsh
# after dragging EmuHub.app to /Applications
sudo xattr -dr com.apple.quarantine \
/Applications/EmuHub.app
▍
macOS
14.0 Sonoma+
Required for MenuBarExtra + Launch at Login
Android SDK
Auto-detected
Default path: ~/Library/Android/sdk
adb
platform-tools
Ships inside the Android SDK
emulator
SDK emulator
Ships inside the Android SDK
Physical devices
Optional
USB or Wi-Fi (Android 11+ wireless debugging)
Disk space
< 20 MB
EmuHub itself is tiny — SDK lives elsewhere
// 05 · Questions

The ones we hear first.

EmuHub is built via GitHub Actions and is currently not notarized. macOS quarantines unsigned apps by default — that's the warning. Run sudo xattr -dr com.apple.quarantine /Applications/EmuHub.app once after install and the warning goes away. Notarization is on the roadmap.
Only the global version of the hotkey needs it — the one that triggers from any app while EmuHub is in the background. Toggle EmuHub on under System Settings → Privacy & Security → Accessibility. The shortcut still works locally to dismiss an already-open popover without that permission.
Unlock the device. You'll see a USB debugging prompt asking whether to trust this computer. Tap Allow (optionally check 'always allow from this computer'). EmuHub picks up the change on the next auto-refresh tick.
Over USB: try a different cable — most cheap cables are charge-only. Over Wi-Fi: check the device is on the same network and wireless debugging is still active in Developer Options. As a last resort, run adb kill-server in Terminal once and EmuHub will re-detect.
No — EmuHub is macOS-only. It's built on SwiftUI and the MenuBarExtra API, both of which are Apple platform technologies. There are no plans to port.
No. EmuHub assumes the SDK is already installed (typically by Android Studio) at ~/Library/Android/sdk and uses adb and emulator from inside that SDK. If yours lives elsewhere, point EmuHub at the right path in Settings.
Deliberately, no. Physical devices are read-only in the UI — Launch and Stop only exist for emulators. The decision is intentional: it prevents accidental destructive actions against real hardware.
It's MIT-licensed, open source, and free. The catch is that it's also not notarized yet, so you need to clear the quarantine attribute once. That's the entire catch.
// 06 · Get it

Take it for a spin.
It's free.

Download the latest release, drag EmuHub.app to Applications, and you're one menu bar click away from the workflow you should have had years ago.

v1.2.3·MIT License