BridgeLink is a production-ready CLI tool that exposes your local Android devices remotely via the NativeBridge platform, making them accessible from anywhere with secure tunneling powered by bore.
- ๐ One-Command Setup - Install and configure in seconds
- ๐ฑ Multi-Device Support - Manage multiple Android devices simultaneously
- ๐ก WiFi Connection Support - Connect devices wirelessly via WiFi (no USB cable needed!)
- ๐ Secure Tunneling - API key-based authentication via NativeBridge
- ๐ Remote Access - Access devices from anywhere in the world
- ๐ค Auto-Installation - Automatically installs bore tunnel and ADB
- ๐ป Cross-Platform - Works on macOS, Linux, and Windows
- ๐ Background Management - Tunnels run in the background as daemons
- ๐ Automatic Health Monitoring - Auto-detects and deactivates disconnected devices (1s polling - fast!)
- ๐ Auto-Activation - Devices automatically reconnect when plugged back in (1s polling - fast!)
- ๐ Device Tracking - Track device state and connection URLs in real-time
- โ Input Validation - Validates device serials via ADB before backend calls
- ๐ฏ Smart Activation - Intelligently reactivates existing devices
- ๐ก๏ธ Platform-Aware Detection - Different health checks for physical devices vs emulators
- ๐ USB & WiFi Support - Seamlessly handles both USB and wireless connections
Choose your preferred installation method:
# Add the BridgeLink tap
brew tap AutoFlowLabs/tap
# Install BridgeLink
brew install bridgelink
# Run setup to install required tools (ADB, bore)
bridgelink setupmacOS / Linux
# Create virtual environment
python3 -m venv bridgelink-env
# Activate virtual environment
source bridgelink-env/bin/activate
# Install BridgeLink
pip install bridgelink
# Run setup
bridgelink setupWindows (Command Prompt)
# Create virtual environment
python -m venv bridgelink-env
# Activate virtual environment
bridgelink-env\Scripts\activate.bat
# Install BridgeLink
pip install bridgelink
# Run setup
bridgelink setupWindows (PowerShell)
# Create virtual environment
python -m venv bridgelink-env
# Activate virtual environment
bridgelink-env\Scripts\Activate.ps1
# If you get an execution policy error, run:
# Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# Install BridgeLink
pip install bridgelink
# Run setup
bridgelink setupNote: Remember to activate the virtual environment each time you open a new terminal session before using BridgeLink.
If you prefer to install globally (not recommended due to potential dependency conflicts):
# Linux/macOS
pip install bridgelink
# Or with sudo if permission denied:
sudo pip install bridgelink
# Windows (run terminal as Administrator)
pip install bridgelinkAfter installation, run setup:
bridgelink setupThis automatically installs required tools:
- bore - Tunnel binary for your platform (macOS, Linux, Windows)
- ADB - Android Debug Bridge from Google
After installation, follow these steps:
Get your API key from NativeBridge Dashboard:
macOS / Linux:
export NB_API_KEY='Nb-kNGB.your-api-key-here'Windows (Command Prompt):
set NB_API_KEY=Nb-kNGB.your-api-key-hereWindows (PowerShell):
$env:NB_API_KEY="Nb-kNGB.your-api-key-here"Option A: USB Connection (Default) Connect your Android device via USB and enable USB debugging.
Option B: WiFi Connection (Wireless)
- Connect your Android device via USB first
- Ensure both device and computer are on the same WiFi network
- Use the
--wififlag when adding the device (see below)
USB Connection:
bridgelink devices add <device-serial>WiFi Connection:
bridgelink devices add <device-serial> --wifiAfter WiFi setup completes, you can disconnect the USB cable. The device will remain accessible via WiFi!
Option A: Via ADB Command Line
adb connect bridgelink.nativebridge.io:15750Option B: Via NativeBridge Dashboard Visit the BridgeLink Dashboard to:
- ๐ View all your registered devices
- ๐ฎ Start remote device sessions
- ๐ฅ๏ธ Control devices directly from your browser
- ๐ Monitor device status in real-time
Dashboard URL: https://nativebridge.io/dashboard/bridgelink (Development: https://trust-me-bro.nativebridge.io/dashboard/bridgelink)
# Add device(s)
bridgelink devices add <serial> # USB connection
bridgelink devices add <serial> --wifi # WiFi connection (USB required initially)
bridgelink devices add <serial1> <serial2> # Multiple devices
bridgelink devices add <serial> --auto-activate # Enable auto-activation
bridgelink devices add <serial> --wifi --auto-activate # WiFi + auto-activation
# Activate existing device
bridgelink devices activate <serial> # Works with both USB and WiFi devices
# List all devices
bridgelink devices list
# Deactivate device (keeps registration)
bridgelink devices deactivate <serial>
bridgelink devices deactivate # Deactivate ALL active devices (with confirmation)
bridgelink devices deactivate --all # Deactivate ALL active devices
# Remove device completely
bridgelink devices remove <serial>
# Auto-activation management
bridgelink devices set-auto-activate <serial> on # Enable auto-activation
bridgelink devices set-auto-activate <serial> off # Disable auto-activation# Check tunnel status
bridgelink daemon status
# View tunnel logs
bridgelink daemon logs <serial>
# Stop tunnel(s)
bridgelink daemon stop <serial> # Stop specific tunnel
bridgelink daemon stop # Stop ALL tunnels (with confirmation)
bridgelink daemon stop --all # Stop ALL tunnels
# Clean up dead tunnels
bridgelink daemon cleanup# Run interactive setup (installs bore, ADB, configures API key)
bridgelink setup
# Install both bore and ADB (non-interactive)
bridgelink install
# Install only bore
bridgelink install --bore-only
# Install only ADB
bridgelink install --adb-onlyBridgeLink supports wireless ADB connections via WiFi, allowing you to use your devices without USB cables!
-
Initial Setup (USB Required):
- Connect device via USB
- Run:
bridgelink devices add <serial> --wifi - BridgeLink will:
- Enable TCP/IP mode on the device (port 5555)
- Get the device's WiFi IP address
- Connect via WiFi (
adb connect <ip>:5555) - Create tunnel using WiFi connection
-
After Setup:
- Disconnect the USB cable
- Device remains connected via WiFi
- Tunnel continues working wirelessly
- Access remotely via BridgeLink URL
- Device and computer must be on the same WiFi network
- WiFi must be enabled on the Android device
- USB connection required only for initial setup
# Initial setup (USB connected)
bridgelink devices add 1d752b81 --wifi
# Output:
# ๐ก Setting up WiFi connection...
# Step 1/3: Enabling TCP/IP mode on device...
# โ TCP/IP mode enabled on port 5555
# Step 2/3: Getting device IP address...
# โ Device IP address: 192.168.1.15
# Step 3/3: Connecting to device via WiFi...
# โ Connected via WiFi: 192.168.1.15:5555
#
# ๐ก You can now disconnect the USB cable!
# Now disconnect USB - device stays connected via WiFi!
# Tunnel URL: bridgelink.nativebridge.io:15750You can connect multiple devices via WiFi simultaneously:
# Add first device via WiFi
bridgelink devices add device1_serial --wifi
# Add second device via WiFi
bridgelink devices add device2_serial --wifi
# List all devices
bridgelink devices list
# Shows both devices with WiFi connections (IP:5555 format)Combine WiFi with auto-activation for ultimate convenience:
bridgelink devices add <serial> --wifi --auto-activateNow your device will:
- โ Connect wirelessly via WiFi
- โ Auto-deactivate when disconnected from WiFi
- โ Auto-activate when reconnected to WiFi
- โ No USB cable needed after initial setup
- Reboot: If you restart the device, it will reset to USB mode. You'll need to run the WiFi setup again (USB cable +
--wififlag). - Network: Device and computer must remain on the same WiFi network
- Battery: WiFi ADB consumes more battery than USB ADB
- Performance: WiFi connection may have slightly higher latency than USB
Device not connecting?
# Check device IP manually
adb shell ip route | grep src
# Try manual connection
adb connect <device-ip>:5555
# Verify connection
adb devicesConnection lost?
- Ensure device hasn't gone to sleep (keep screen on during setup)
- Check both devices are on same WiFi network
- Try reconnecting:
adb connect <ip>:5555
BridgeLink includes two automatic background monitors that work together to provide a fully automated device lifecycle:
Watches for disconnections and automatically deactivates devices
- Auto-Start: When you add the first device, a background daemon automatically starts
- Continuous Monitoring: Checks device connectivity every 1 second (fast!)
- Smart Detection:
- Physical Devices: Must be in "device" state (strict)
- Emulators: Can be in "device" or "offline" state (lenient)
- Auto-Cleanup: When devices disconnect, automatically:
- Stops the tunnel
- Updates backend state to "inactive"
- No stale connections!
- Auto-Stop: When all devices are deactivated, the daemon automatically stops
Watches for reconnections and automatically activates devices with auto-activation enabled
- Auto-Start: When you enable auto-activation for a device, the connection monitor starts
- Continuous Watching: Checks for newly connected devices every 1 second (fast!)
- Smart Activation: When a device reconnects:
- Checks if device has
auto_activateenabled in backend - Verifies device is currently inactive
- Automatically creates tunnel and activates device
- Checks if device has
- Zero Manual Intervention: Once enabled, devices reconnect automatically when plugged back in
โ No Manual Monitoring - Everything happens automatically โ Lightning Fast Detection - Disconnects/reconnects detected within 1 second! โ Clean State - No stale tunnels or active states โ Zero Maintenance - Daemons manage themselves โ Opt-in Auto-Reconnect - Enable per device as needed
# 1. Add a device with auto-activation enabled
$ bridgelink devices add emulator-5554 --auto-activate
๐ Starting background health monitor...
โ
Health monitor started
๐ Starting auto-activation connection monitor...
โ
Connection monitor started
๐ก Health monitoring is active - disconnected devices will be auto-deactivated
๐ Auto-activation ENABLED - device will auto-reconnect when plugged back in
# 2. Device gets physically disconnected
# (Health monitor automatically detects and deactivates)
# Logs to ~/.bridgelink/monitor.log:
# โ ๏ธ Device emulator-5554 is unhealthy: Device disconnected
# Stopping tunnel...
# Updating backend state to inactive...
# โ
Device emulator-5554 deactivated successfully
# 3. Device gets reconnected (USB plugged back in)
# (Connection monitor automatically detects and activates)
# Logs to ~/.bridgelink/connection_monitor.log:
# ๐ Detected 1 newly connected device(s)
# ๐ Auto-activating device: emulator-5554
# Setting up ADB TCP mode...
# Creating bore tunnel...
# Tunnel URL: bridgelink.nativebridge.io:15751
# โ
Device emulator-5554 auto-activated successfully
#
# โ No manual intervention needed!Health Monitor:
- PID File:
~/.bridgelink/monitor.pid - Log File:
~/.bridgelink/monitor.log - State File:
~/.bridgelink/health_monitor.json
Connection Monitor:
- PID File:
~/.bridgelink/connection_monitor.pid - Log File:
~/.bridgelink/connection_monitor.log
For complete documentation, visit the GitHub repository.
Key Guides:
- Security Guide - Security best practices
โ ๏ธ READ FIRST - Auto-Activation Feature - Detailed auto-activation guide ๐
- Complete Command Reference - All commands with examples
- Architecture - System architecture and data flow
- Deployment Guide - Backend setup and deployment
- Local Testing - Test before PyPI release
- PyPI Release - Publishing guide
After registering a device with BridgeLink, you can manage it through the NativeBridge Dashboard.
Device Management:
- ๐ View all your BridgeLink devices in one place
- โ See device status (active/inactive)
- ๐ View tunnel URLs for each device
- ๐ฑ Check comprehensive device details:
- Hardware: Model, manufacturer, CPU, RAM, storage
- Display: Resolution, density (DPI)
- Software: Android version, SDK, security patch
- Connection: Tunnel URL, device type (USB/WiFi)
Remote Sessions:
- ๐ฎ Start remote device sessions directly from the browser
- ๐ฅ๏ธ Control devices remotely without ADB command line
- ๐ฑ๏ธ Click, swipe, and interact with your device
- ๐ธ Take screenshots and record sessions
- ๐ Real-time device mirroring
Monitoring:
- ๐ Monitor device connection status
- โฑ๏ธ View device uptime and availability
- ๐ Track device usage and sessions
Production:
https://nativebridge.io/dashboard/bridgelink
Development:
https://trust-me-bro.nativebridge.io/dashboard/bridgelink
Note: The dashboard URL is automatically shown when you add or activate a device. Look for the ๐ icon in the CLI output!
-
Register Device:
bridgelink devices add <device-serial>
-
Device Appears in Dashboard:
- Automatically registered in your NativeBridge account
- Visible at the dashboard URL
-
Start Remote Session:
- Click on your device in the dashboard
- Click "Start Session"
- Control device from your browser!
Web-Based Testing:
- Test your app without installing ADB
- Share device access with team members
- Demo apps remotely in meetings
Remote Debugging:
- Debug issues on physical devices from anywhere
- No need for VPN or complex network setup
- Instant access through secure tunnel
Device Management:
- Centralized view of all your test devices
- Quick access to device information
- Easy activation/deactivation
| Variable | Description | Default |
|---|---|---|
NB_API_KEY |
NativeBridge API key | Required |
NB_API_URL |
Backend API URL | https://dev.api.nativebridge.io |
BORE_SERVER |
Bore tunnel server | bridgelink.nativebridge.io |
BridgeLink stores configuration in ~/.bridgelink/:
tunnels.json- Tunnel statetunnel_<serial>.log- Individual tunnel logs
- โ ADB Validation - Device serials validated before backend calls
- โ API Key Auth - Secure authentication for all operations
- โ User Isolation - Each user only sees their own devices
- โ HTTPS - Encrypted communication with backend
- Email: support@nativebridge.io
- Issues: https://github.com/AutoFlowLabs/bridgelink/issues
- Docs: https://docs.nativebridge.io/bridgelink
- API Key: https://nativebridge.io/dashboard/api-keys
- bore - Fast, simple TCP tunnel
- ADB - Android Debug Bridge by Google
- Click - Python CLI framework
- FastAPI - Modern Python web framework
MIT License - see LICENSE file for details.
Made with โค๏ธ by the NativeBridge team