The Mobile Emulator tab
Mirror an Android emulator or iOS simulator inside a workspace tab, drive it with touch and keyboard, and let an agent drive it too.
On this page
The Mobile Emulator tab is a live mirror of a virtual device inside your workspace. Keep it beside the sessions and terminals you already use, with the same touch, keyboard, and rotate controls as the device window, plus the option to hand the device to a coding agent.
What you need
For Android on any supported desktop platform:
- Install Android Studio or the command-line tools.
- Install
platform-tools, which provides adb, and the emulator package. - Create at least one virtual device in Android Studio’s Device Manager.
- Glueprint looks for the SDK at
ANDROID_HOME, thenANDROID_SDK_ROOT, then the standard install path for your OS. If it still cannot find the SDK, set it in Settings > General > Mobile emulator.
For iOS on macOS only:
- Install Xcode with Simulator and the command line tools.
- Nothing else. The streaming helper ships inside Glueprint, so there is no first-run download and no Node.js requirement.
Open the tab
Open the add menu in the workspace tab bar and choose Mobile Emulator. A workspace can have one emulator tab. The tab persists across restarts and keeps running while you work in another tab.
Pick and boot a device
Open the device menu to see Android and iOS devices grouped by platform, with running devices first. Glueprint can adopt a device you started yourself.
The status chip moves through Stopped, Booting, Connecting, and Connected. Power off asks before shutting down the device. When you quit Glueprint, a device you started outside Glueprint is left running.
Touch, keyboard and paste
Click the screen to tap. Drag across it to swipe. Click once to give the screen the keyboard; a focus ring shows when it has focus.
| Key | What happens | Where it goes |
|---|---|---|
Printable ASCII, space through ~ | Types the character | Virtual device |
| Enter | Presses Enter | Virtual device |
| Backspace | Presses Backspace | Virtual device |
| Escape | Releases screen focus | Glueprint |
| Cmd+V or Ctrl+V | Pastes supported text | Virtual device |
| Other Cmd, Ctrl, or Alt chords | Uses the normal app shortcut | Glueprint |
| Tab or Shift+Tab | Moves focus out of the screen | Glueprint |
| Arrows, Home, End, PageUp, PageDown, Delete, Insert, or function keys | Not captured | Glueprint |
| Input during IME composition | Not captured | Nowhere |
| Non-ASCII characters | Not captured | Nowhere |
Cmd and Ctrl shortcuts stay with Glueprint so Cmd+W, the command palette, copy, and other app commands keep working. Tab lets you leave the surface without a pointer. Arrow and function keys are not sent because the device input paths do not share a useful mapping for them. Press Escape to hand the keyboard back to the app.
Paste with Cmd+V or Ctrl+V. Line breaks become Enter presses. Both platforms accept printable ASCII only: an accented letter, emoji, or tab rejects the whole paste, and Glueprint names the unsupported character instead of typing half the text.
Rotate
The toolbar rotate button steps through all four orientations, and the device frame re-fits to the pane. If reduced motion is enabled in your OS, the change is instant.
Grab, annotate and mark up
The three tools next to Rotate work the way the browser tab’s do, but on a device screen instead of a web page.
- Grab reads the device’s accessibility tree, outlines the element under your pointer and, on click, copies its description to the clipboard: role, label, identifier, bounds, and a ready-to-use
gp_emulator_tappoint an agent can act on. PressCto copy without clicking,Sto copy a screenshot of just that element, andEscapeto leave. - Annotate lets you click elements and leave a comment on each. Pins mark them on the screen, the tray collects them, and Send to hands the whole list to a session in this worktree as markdown (or Copy all puts it on the clipboard).
- Markup freezes a screenshot of the device, gives you pen, highlighter, arrow, shapes and text, and Copy Markup puts the annotated image on the clipboard for pasting into a session.
While Grab or Annotate is on, clicks go to the tool rather than the device. The tree is read when a tool turns on and after each pick; use Refresh in the strip above the screen if the app has moved on. On Android the tree comes from uiautomator, so the first read can take a second or two.
Agent tools
An agent in any coding session on this host can use the emulator tools. There is nothing to install or enable.
| Tool | What it does | Asks first |
|---|---|---|
gp_emulator_list | Lists available virtual devices and their state. | No |
gp_emulator_boot | Boots a selected virtual device. | Yes |
gp_emulator_shutdown | Powers off a running virtual device. | Yes |
gp_emulator_tap | Taps normalized screen coordinates. | No |
gp_emulator_swipe | Swipes through normalized screen points. | No |
gp_emulator_type | Types printable ASCII into the focused field. | No |
gp_emulator_button | Presses home, back, or recents. | No |
gp_emulator_rotate | Sets one of the four orientations. | No |
gp_emulator_screenshot | Captures the current screen. | No |
gp_emulator_ax | Reads the accessibility view hierarchy. | No |
gp_emulator_logcat | Reads recent Android log output. | No |
gp_emulator_install | Installs an APK from the project. | Yes |
gp_emulator_launch | Launches an installed app. | No |
Boot, shutdown, and install ask for your approval every time. The rest run without a prompt because their effect is confined to the virtual device. See the built-in MCP server for the wider tool policy.
Settings
The Android SDK location row overrides ANDROID_HOME, ANDROID_SDK_ROOT, and the standard install path. Leave it empty to auto-detect. An open emulator tab re-checks availability as soon as you save.
A change takes effect immediately for detection, the device list, booting, and controls. If a device is already mirroring, restart Glueprint for the new SDK location to reach that live mirror. A headless host running the daemon reads this setting at startup only.
What it does not do
- It does not appear in the web portal or mobile app in this release.
- It does not run a virtual device on another machine.
- It does not replace the device window for controls the mirror cannot express, including multi-touch, sensors, and camera input.
Troubleshooting
The tab says Mobile Emulator is not set up. Use Copy diagnostics and read the badges. Each badge names the missing piece and the path Glueprint checked.
No devices appear in the menu. Create a virtual device in Android Studio’s Device Manager, or check that xcrun simctl list devices prints a simulator.
The picture is a slideshow instead of video. Some Linux webviews cannot decode H.264 in the page. The tab falls back to about two frames a second; touch and typing still work.
iOS typing does nothing while taps work. Recent Xcode versions can route simulator keyboard input through a window that must be frontmost. Type through the Simulator window, or report the issue with the diagnostics attached.
iOS streaming stops working after an Xcode change. The streaming helper loads Xcode’s SimulatorKit framework. Run sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer, then start the stream again.
Windows does nothing when I boot. Check the SDK location setting, especially if your user folder has a space in it.