baguette v0.x · iOS 26
WORKS ON iOS 26.4 NEW

Headless
iOS Simulators.
Served fresh. — bon appétit.

A single Swift CLI that boots simulators headlessly, streams their screens at 60 fps, and injects taps, swipes & multi-finger gestures through SimulatorKit's 9-arg HID path — the only one iOS 26 still honours. With a built-in web UI and a multi-device farm dashboard.

View on GitHub →
60fps
Stream Rate
9arg
HID Signature
110+
Tests
0dylib
Injection
26.4
iOS Tested
Built for iOS 26

One CLI. Everything you'd reach for.

Boot, stream, control, snapshot — without ever opening Simulator.app.

01STREAMING

60 fps. MJPEG or H.264.

Stream over stdout or WebSocket. Tunable bitrate, fps and scale at runtime. AVCC seeded with JPEG so canvases paint instantly.

02INPUT

Real gestures. No injection.

Taps, swipes, scroll, streaming multi-finger touches, home/lock — all on the only HID path iOS 26 still honours.

03DEVICE FARM

Every simulator, one page.

Wall, Grid or List. Click any tile to focus — same canvas, full rate, full input. Cheap thumbnails, no re-encode.

Quickstart

Three commands. Then you're streaming.

Apple Silicon + Xcode 26.

1.

Install via Homebrew

One tap, no Xcode project setup, no build toolchain.

2.

Start the web UI

Local server on port 8421. Lists every simulator, lets you boot/shutdown and stream.

3.

Open the farm

Every booted simulator side-by-side. Click any tile to focus with full-quality streaming and gesture input.

~/projects · zsh
$ brew install tddworks/tap/baguette ==> Installing baguette from tddworks/tap ==> Pouring baguette--0.x.arm64_sequoia.bottle.tar.gz 🍺 /opt/homebrew/Cellar/baguette/0.x: 12 files, 4.2MB $ baguette serve [baguette] listening on http://127.0.0.1:8421/simulators $ open http://localhost:8421/farm