Adds `mobile:sim:dev` / `sim:dev` to build, install, launch, and stream the iOS simulator in one command Updates mobile docs and serve-sim guidance with the new workflow and correct preview URL behavior Bumps `serve-sim` to a newer version
3.0 KiB
name, description
| name | description |
|---|---|
| serve-sim | Use when working with the OpenChamber iOS Simulator app without opening Xcode - boot/install/launch the Capacitor iOS app, start a browser stream, tap/type/gesture/rotate, inspect accessibility, or hand a simulator URL to the user. |
serve-sim
Use serve-sim to stream and control a booted Apple Simulator from the terminal. It captures the simulator framebuffer, serves a browser preview, and exposes CLI controls for taps, typing, gestures, hardware buttons, rotation, memory warnings, permissions, camera injection, and accessibility inspection.
OpenChamber Defaults
- Mobile package:
packages/mobile - iOS bundle id:
com.openchamber.app - Headless env wrapper:
packages/mobile/scripts/with-mobile-env.mjs - iOS simulator helper:
packages/mobile/scripts/ios-sim.mjs - Preferred scripts:
bun run mobile:build:ios:simulatorbun run mobile:sim:runbun run mobile:sim:servebun run mobile:sim:listbun run mobile:sim:killbun run mobile:sim:dev— foreground build + run + stream in one command (--no-buildto skip the build); intended for the user, agents should prefer the discrete scripts above
Workflow
-
Build the simulator app without opening Xcode:
bun run mobile:build:ios:simulator -
Boot a simulator if needed, install, and launch the app:
bun run mobile:sim:run -
Start the browser stream in detached JSON mode:
bun run mobile:sim:serveSurface the returned
urlto the user. It normally starts athttp://127.0.0.1:3100; always use theurlfrom the JSON output rather than assuming the port. -
Stop helpers when finished unless the user asks to keep them running:
bun run mobile:sim:kill
Direct CLI Controls
- Tap normalized coordinates:
bunx serve-sim tap 0.5 0.5 - Type focused text:
bunx serve-sim type "hello" - Hardware home:
bunx serve-sim button home - Rotate:
bunx serve-sim rotate portrait - List streams:
bunx serve-sim --list -q - Accessibility tree:
curl http://localhost:3100/ax
Run direct CLI commands from packages/mobile (the binary lives in that package; plain serve-sim inside with-mobile-env.mjs from elsewhere fails with command not found).
Coordinates are normalized 0..1, not pixels. Prefer tap for simple taps; do not emulate taps using separate gesture begin/end commands because that can register as long press.
Preconditions
- macOS host.
- Xcode installed; use
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developerifxcode-selectpoints at CommandLineTools. - Node 18+.
- At least one simulator can be booted with
xcrun simctl.
Anti-Patterns
- Do not open Xcode just to build/install/launch during agent work; use the scripts above.
- Do not parse human output from
serve-sim; use-qfor JSON. - Do not leave helper streams running unintentionally.
- Do not guess coordinates after accessibility lookup fails; report the missing target instead.