- Official ChatGPT tunnel. The phone polls OpenAI's Secure MCP Tunnel over HTTPS: no open port, no public address and no relay of ours in between.
- Runs on the phone. The MCP server and everything it drives live on the device. A computer and ADB are only needed if you want an agent on a computer.
- Automation that outlives the conversation. Ask once; the phone keeps doing it on a schedule or on events. The root edition does it from a backend that starts at boot, with no app involved.
- Exactly the access you grant. No extra remote permission layer, no telemetry, open source (Apache-2.0).
How agents connect
Two ways to connect, side by side:
What an agent can do
Every tool carries MCP safety annotations (readOnlyHint, destructiveHint, openWorldHint), so
clients such as ChatGPT ask you to confirm actions that change things.
Automation that keeps running without the AI
Ask an agent once and the phone keeps doing it. Automations are saved on the device and run without the agent, a computer or an open conversation.
An agent saves one with automation → save:
{
"name": "Morning check",
"enabled": true,
"trigger": {
"type": "rrule",
"rrule": "DTSTART:20261014T080000\nRRULE:FREQ=DAILY",
"timezone": "Asia/Shanghai"
},
"action": {
"type": "sequence",
"children": [
{"type": "call", "tool": "android", "action": "launch",
"args": {"operation": "package", "package_name": "com.android.settings"}},
{"type": "delay", "duration_ms": 3000},
{"type": "call", "tool": "visual", "action": "element",
"args": {"operation": "tap", "by": "text", "value": "Network & internet"}}
]
}
}
Choose your edition
DroidBridge comes in two editions:
- DroidBridge is an app that runs everything itself. It works on an ordinary phone and gains the shell identity when Shizuku is running.
- The root edition is a root module. Its backend runs as root on its own, starts at boot and keeps running whatever happens to any app. It installs the DroidBridge Root app, which shows the backend's state and settings but runs nothing itself.
Both editions can run on one phone: DroidBridge serves local MCP on port 8765 and the root edition on port 8766.
In DroidBridge, the Execution & access page walks you through each switch with a button that opens the right system page, and tells you when something is already covered by Shizuku.
Requirements
- Android 13 to 17 on an arm64-v8a device. The DroidBridge app also ships x86_64 libraries, so it runs on x86_64 emulators; the root edition is arm64-v8a only.
- For ChatGPT: a plan with web developer mode (Plus or higher), a Secure MCP Tunnel and a Runtime API key from the OpenAI platform.
- Optional: Shizuku, Magisk, KernelSU or APatch for the root edition.
Install
DroidBridge
- Download
droidbridge-<version>-arm64-v8a.apkfrom the latest release (tagapk-v<version>) and install it. The name is historical: this one APK carries both the arm64-v8a and the x86_64 libraries. - Open DroidBridge. The first-run guide asks which agent you use and walks through permissions.
The release ships a SHA256SUMS.txt and a signed release.json; the app's Updates page uses
the signature to verify its own updates.
Root edition
- Download
droidbridge-magisk-<version>.zipfrom the newestmagisk-vrelease. - Install it in Magisk, KernelSU or APatch. Installing it also installs the DroidBridge Root app.
- Reboot, then open DroidBridge Root.
Module updates are offered by your root manager.
Connect ChatGPT
- On platform.openai.com create a Secure MCP Tunnel, and an API key allowed to use it.
- In DroidBridge open Agent connection → ChatGPT connection, paste the Tunnel ID and the key, and turn the tunnel on. The key is never shown again: DroidBridge encrypts it with the Android Keystore, and the root edition keeps it readable by root only.
- On a computer browser, turn on Developer mode in ChatGPT security settings (it is still rolling out to Plus accounts). Then on ChatGPT plugins tap Add → Create MCP app, connect it through your tunnel with Authentication set to None. The app page has links to both.
- Ask ChatGPT to use DroidBridge. The first call shows up in the app.
Connect a local agent
-
In the app open Agent connection → Local MCP, turn it on and copy the token.
-
Point your MCP client at
http://127.0.0.1:8765/mcp(root edition:8766) withAuthorization: Bearer <token>. From a computer, forward the port first:adb forward tcp:8765 tcp:8765
Screenshots
Security and privacy
- Everything runs on the phone. DroidBridge has no server of its own and sends no telemetry.
- An agent gets exactly the access you granted on the device; there is no extra remote permission layer to misconfigure. Only connect agents you trust with that access.
- The ChatGPT tunnel speaks only to
api.openai.comover TLS with a pinned WebPKI root store. - The local MCP endpoint listens on loopback only and requires its bearer token.
- Text that the system
inputcommand cannot type (for example Chinese or emoji) is pasted through the clipboard: the clip is marked sensitive and your previous clipboard is restored.
Please report vulnerabilities privately as described in SECURITY.md.
Build from source
Building needs the pinned toolchain (JDK 17, Android SDK 37, NDK 29, Rust 1.98) and is currently scripted for Windows with PowerShell 7:
./gradlew :standalone:assembleDebug :root-frontend:assembleDebugMagiskModule
The exact versions, the libpcap step and the toolchain check are in CONTRIBUTING.md.
Community
Questions, device reports and release news: join the Telegram group. Bugs are best filed as GitHub issues.
Acknowledgements
Thanks to Mike (@mikex8593-ai) for patient, detailed device testing and reports on a Pixel, a Fold and a Chromebook. They led to the fix for expired request records that made the store unwritable, the fix for tasks left running after a store write failure, the review that found the MCP concurrency bug, the x86_64 build ChromeOS needs, and the update failure diagnostics.
Support the project
DroidBridge is built and maintained in spare time. If it is useful to you, you can support it on Ko-fi. Bug reports and device reports help just as much.
License
DroidBridge is licensed under the Apache License 2.0. Third-party components and their licenses are listed in THIRD_PARTY_NOTICES.txt.
DroidBridge is an independent project and is not affiliated with or endorsed by OpenAI, Anthropic, Google, Magisk or Shizuku. Product names are trademarks of their respective owners.