Skip to content
Projects

tddworks/baguette has 2,279 GitHub stars and 132 forks. GitHot measured -1 stars in 24 hours and +7 in 7 days. Last checked 2026-11-10 01:29 UTC. Last push 2026-10-29.

How these counts are measured

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

Measured star growth

in 24h
-1
in 7 days
+7
in 15 days
Update delayed
in 1 month
Update delayed

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README.md

Original

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

https://github.com/user-attachments/assets/e904413f-16bb-4b3d-86d5-162333403cee

https://github.com/user-attachments/assets/c49c9f4b-0e4b-47ea-9272-3223b1ac7739

https://github.com/user-attachments/assets/65dc62ee-f0c7-48fb-9c57-5bd267c8c02f

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.

Explore related projects