New Persistent assistants now work in governed, cross-host teams. See what changed

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, then ANDROID_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.

KeyWhat happensWhere it goes
Printable ASCII, space through ~Types the characterVirtual device
EnterPresses EnterVirtual device
BackspacePresses BackspaceVirtual device
EscapeReleases screen focusGlueprint
Cmd+V or Ctrl+VPastes supported textVirtual device
Other Cmd, Ctrl, or Alt chordsUses the normal app shortcutGlueprint
Tab or Shift+TabMoves focus out of the screenGlueprint
Arrows, Home, End, PageUp, PageDown, Delete, Insert, or function keysNot capturedGlueprint
Input during IME compositionNot capturedNowhere
Non-ASCII charactersNot capturedNowhere

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_tap point an agent can act on. Press C to copy without clicking, S to copy a screenshot of just that element, and Escape to 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.

ToolWhat it doesAsks first
gp_emulator_listLists available virtual devices and their state.No
gp_emulator_bootBoots a selected virtual device.Yes
gp_emulator_shutdownPowers off a running virtual device.Yes
gp_emulator_tapTaps normalized screen coordinates.No
gp_emulator_swipeSwipes through normalized screen points.No
gp_emulator_typeTypes printable ASCII into the focused field.No
gp_emulator_buttonPresses home, back, or recents.No
gp_emulator_rotateSets one of the four orientations.No
gp_emulator_screenshotCaptures the current screen.No
gp_emulator_axReads the accessibility view hierarchy.No
gp_emulator_logcatReads recent Android log output.No
gp_emulator_installInstalls an APK from the project.Yes
gp_emulator_launchLaunches 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.