Set up Android Backstage

01

Prepare your phone

02

Connect your agent

03

Test the connection

What you need

On your phone

Android 11 or newer, Wi-Fi for the first setup, and permission to turn on Developer options.

For your agent

A relay address and the relay owner’s API key. Local clients also need Node.js 20 or newer.

If Android access is ready in Backstage, skip to agent setup.

Prepare your phone

  1. Install Android Backstage.

    Open this page on your phone and download the app. Open the APK and allow installation from your browser if Android asks.

    Download Android app ↓

    1.1.0-alpha3 · Android 11+

  2. Open Backstage and allow notifications.

    The notification lets you enter Android’s pairing code without closing its settings screen.

  3. Set up Android access.

    In Backstage, open Android access and follow its link to Developer options. Turn on Wireless debugging, then choose Pair device with pairing code.

    No Developer options? In Settings → About phone, tap Build number seven times and enter your phone PIN. Your phone may place Build number under Software information.

  4. Enter Android’s 6-digit code in Backstage’s notification.

    Keep the pairing-code screen open while you do this. If notifications are unavailable, use split screen to show Backstage beside Settings. Return to Backstage when pairing finishes.

Android’s 6-digit code enables access on the phone. Use the separate Backstage link code to connect your agent.

Choose your agent

Test the connection

Enable the Backstage tools in your agent, then send this:

Use Android Backstage on the device named phone. Read ro.product.model with a background command. Do not open or touch the main screen.

A working connection returns your phone’s model. If it fails, use the matching fix below.

Manage connections

“Codex on this computer” identifies a client installation. It does not identify one model, task, or conversation. All tasks using that client share its phone permission.

Pair clients separately

Pair ChatGPT Work, Cursor Cloud, and each computer separately. Pause or remove one in the phone app without cutting off the others.

Control access from the phone

Use the client’s card to rename, pause, allow, limit, or remove it. The short app-testing permission is limited; it does not allow full shell or arbitrary taps.

The relay dashboard shows connected devices and encrypted request traffic. Phone permissions stay in the phone app.

Downloads

Android app

1.1.0-alpha3

Download APK
Agent kit

CLI, setup helper, MCP configs, plugins and skills

Download ZIP
Setup guide
Download guide

File checksums · Source on GitHub ↗ · GitHub repository access required.

Troubleshooting

I don’t see Wireless debugging

Connect the phone to Wi-Fi and enable Developer options. Android 11+ is required. Work-managed phones may disable this setting; ask the device owner or administrator.

The Android code expires or no notification appears

Allow Backstage notifications, open a new “Pair device with pairing code” screen, and leave it open. Enter its fresh six digits in the Backstage notification. Split screen is an alternative. This is not your agent’s Backstage link code.

The Backstage link code doesn’t connect

Keep the pairing command running on the client. Use the relay address that command shows and its current link code. Review the connection in the phone app and tap Connect assistant. If the command expired, start pairing again to get a fresh code.

It was working, then disconnected

Open Backstage on the same phone and check its access status. Resume access if paused. After a reboot or if Android stopped the helper, connect to Wi-Fi and turn Wireless debugging back on. Also check that the relay host and tunnel are running. A short network interruption normally reconnects automatically.

ChatGPT says the connection is blocked

Check that your account or workspace allows Developer mode and custom plugins. The server must use the exact public HTTPS MCP address. Ask the relay owner for a fresh approval code. If your workspace policy blocks custom tools, its administrator must allow them.

My agent has no Android tools

Check the config file location for your chosen agent, restart or refresh its MCP servers, and enable Android Backstage. The Node and CLI paths must point to files on the machine running that client. A local path on your laptop will not work inside a cloud VM.

The relay dashboard asks for a key

Use the relay account API key. It is not an Android pairing code, Backstage link code, or ChatGPT approval code. The owner can find the original key in the relay’s private first-api-key.txt file. Keep it private. The dashboard keeps the key in memory only and forgets it when you close or reload the page.

A request timed out — should I repeat it?

Check its job state in the dashboard. If the outcome is “unknown,” the phone may already have done the action. Check the result before repeating a write, send, install, or purchase.

Host your own relay

The relay forwards encrypted requests between a phone and a paired client. It needs a stable HTTPS address, Node.js 20+, and a persistent data folder.

  1. Get the source repository with your GitHub account. The repository is currently private.
  2. Run the relay on your server:
    RELAY_DATA_DIR=/var/lib/backstage node relay/server.mjs
    Save the account API key printed on first start. Keep the data folder private and backed up.
  3. Put HTTPS in front of the relay with Cloudflare Tunnel or your reverse proxy. Point it at the relay’s port, 18421. Use your own stable domain.
  4. Use your HTTPS address and account key with the agent kit. Keep the relay running using your server’s service manager.
The relay at relay.android-backstage.com runs on the owner’s computer. Phone access needs that computer online.

For ChatGPT Work, also run the separate trusted Work gateway and pair it with the phone. See the Work host guide. For Docker, storage and backups, see deployment docs.

Permissions

Full access lets a client run commands as Android’s shell user. Only grant it to clients you trust.

Local and cloud-VM clients encrypt commands and results before sending them to the relay. The relay can see device names, client IDs, timing, sizes and delivery states, but cannot read those commands.

ChatGPT Work uses a trusted gateway on the relay host. That gateway decrypts phone results and sends them to ChatGPT over HTTPS. Cloudflare handles that HTTPS traffic.