Swift Apache-2.0

baguette

Headless control for Apple's Simulators — 3D models, taps, swipes, multi-finger gestures, 60 fps streaming, and a multi-device farm

T

tddworks

Dernière activité 28 sept. 2026
tddworks/baguette

2,1 k

étoiles

120

forks

6

issues ouvertes

agentclidevicefarmiossimulatorsimulatorkitstreaming

Ce README est souvent en anglais.

Baguette

Baguette

Bon appétit.

Headless iOS Simulator manager + host-side input injection for iOS 26.

CI Coverage Latest release License Swift 6.2 macOS 15+ Xcode 26

A single Swift CLI — baguette — plus a self-contained web UI that gives you full headless control of an iOS simulator without opening Xcode or Simulator.app. Boot devices, stream their screens at 60 fps, dispatch taps, swipes, multi-finger and system gestures, keyboard and hardware buttons, read the accessibility tree, tail the unified log, take screenshots and recordings, and feed the simulator a camera, a location, motion and a slower network — on iOS 26 and later, where the 5-argument HID call idb and AXe rely on stopped working.

Demo

demo.mp4
device-farm-demo.mp4
Recording.at.2026-05-04.13.20.02.2.mov

The raw clip lives at assets/demo.mp4 — drag it into a GitHub web edit of this README to upload as a CDN-hosted video and replace the line above with the auto-generated URL.

Install

brew install baguette

Apple Silicon with Xcode 26 — baguette links the private SimulatorKit / CoreSimulator frameworks that ship with Xcode. If Homebrew complains about Rosetta, see Troubleshooting.

Quick start

baguette serve                          # web UI at http://127.0.0.1:8421/simulators
open http://localhost:8421/farm         # every booted simulator side by side

baguette list
baguette boot --udid <UDID>
baguette tap  --udid <UDID> --x 219 --y 478 --width 438 --height 954
baguette describe-ui --udid <UDID>      # what's on screen, frames in device points

# an App Store-sized screenshot, and a 10-second clip at the same size
baguette screenshot --udid <UDID> --size appstore-6.9 --output hero.png
baguette record     --udid <UDID> --size appstore-6.9 --duration 10 --output demo.mp4

Coordinates are device points, and --width / --height are the screen size in points (baguette chrome layout --udid <UDID> tells you). For a long-lived session, pipe JSON gestures into baguette input — see the wire protocol.

What it covers

Area What you can do
Touches & gestures Tap, swipe, pinch, pan, streamed one- and two-finger touches, home-indicator and pull-down system gestures → touches, double-tap
Buttons & keyboard Home, lock, volume, action, Watch crown; keystrokes, typed text, paste and clipboard sync → buttons, keyboard, paste
Screen capture Screenshots, recordings, frame streams to stdout, one output-size vocabulary, 3D device renders → screenshot, stream, recording, capture-size, 3d-rendering
Accessibility The on-screen AX tree as JSON, hit-testing, a hover inspector in the browser → accessibility, ax-inspector, ax-hit-test-sweep
Logs Live unified log, filtered by level, predicate or bundle id → logs
Web UI Focus-mode page with bezel, a multi-device farm, a JS SDK for your own page → device-farm, chrome-bezel, baguette-sdk, serve routes
Device lifecycle Boot, shut down, repair input after Xcode 27's Device Hub → boot, device-hub
Device settings Orientation, appearance, contrast, text size, status bar, shake → orientation, interface, status-bar, shake
Simulated world Mac webcam or a file as the camera, GPS and routes, CoreMotion, network conditioning → camera, location, motion, network
Apps & files Deep links and URL schemes, drag-and-drop app install and Photos → deep-links, file-upload
Other screens CarPlay and paired Watch, iPhone Duo and its hinge, a physical iPhone (preview) → companion-screens, iphone-duo, hinge, device-twin
Plugins Add panels and commands from a trusted bakery; they run as subprocesses → plugins

More

Docs index · Commands · Wire protocol · Serve routes · Architecture · Contributing · Changelog

License

Apache License 2.0 — see LICENSE.

Projets similaires

Give your AI agent eyes and hands on iOS Simulator and Android emulator/devices.

Swiftaccessibilityai-agentsai-development
Llycorp-jp
1,4 k étoiles94

idb is a flexible command line interface for automating iOS simulators and devices

Swift
Ffacebook
5,3 k étoiles506

A macOS app to control the Xcode Simulator.

Swiftmacossimctlsimulator
Ttwostraws
6,1 k étoiles320