tddworks

tddworks/baguette

Swift Apache-2.0 Mobile

Headless iOS Simulator manager/farm + host-side input injection for iOS 26 — taps, swipes, multi-finger gestures, and 60 fps streaming

1.5k stars
80 forks
active
GitHub +51 / week

1.5k

Stars

80

Forks

10

Open issues

7

Contributors

v0.1.78 09 Jul 2026

AI Analysis

Baguette is a headless iOS Simulator manager and control platform that enables remote operation of iOS simulators via a web UI, supporting 60 fps video streaming, multi-touch gestures, system input injection, and hardware button simulation—all without opening Xcode. It serves iOS test automation engineers, device farm operators, and CI/CD pipeline builders who need programmatic simulator control; it is not a general-purpose iOS development tool for casual developers.

Mobile Developer Tool Discovery value: 6/10
Documentation 8/10
Activity 9/10
Community 7/10
Code quality 7/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

ios-simulator headless-automation device-farm video-streaming host-input-injection
Actively maintained Well documented Niche/specialized use case Apache-2.0 licensed Production ready
Deep Analysis · Based on README and public signals
2w ago

Swift CLI for headless iOS simulator control with 60fps streaming and hardware input injection

Baguette is a headless iOS simulator manager and input controller written in Swift, launched in May 2026. It provides 60 fps screen streaming, multi-touch gesture injection, unified log streaming, accessibility tree inspection, and as of version 0.1.72, webcam-to-simulator camera bridging. Designed for test automation, CI/CD farms, and simulator-based development workflows where GUI access is impractical. Adoption not verified at scale, but technical scope and rapid iteration signal serious engineering intent.

Origin

Created May 1, 2026, by tddworks as a single-purpose tool. The project emerged in the iOS 26 / Xcode 26 era and targets SimulatorKit private APIs. Rapid release cadence (0.1.72 shipped with camera feature) suggests active development in response to early user feedback or internal use cases.

Growth

Gained 38 stars in the 7 days prior to June 29, 2026. At 1,452 total stars, it sits below facebook/idb (5160), danielpaulus/go-ios (2129), and LocationSimulator (3016), but above Shopify/tophat (1053). Growth trajectory is steeper than typical research projects but modest in absolute terms. Recent activity (last push June 24, 2026) and versioning cadence suggest either active internal use or early-adopter community feedback driving iteration.

In production

Adoption not verified. No explicit case studies, enterprise mentions, or public company deployments in README. Availability via Homebrew suggests some confidence in stability and distribution readiness. Private symbol dependencies on SimulatorKit make this inherently fragile across Xcode versions, which may limit production adoption to organizations that can tolerate updates tied to Apple releases. Camera feature shipping at 0.1.72 suggests either rapid iteration based on user requests or internal exploration; lack of changelog detail prevents certainty.

Code analysis
Architecture

Based on README: layered architecture (Domain / Infrastructure / App) with bounded contexts. Input, Screen, Accessibility, LogStream, Chromes, DeviceHost, Subprocess, CameraCapture, VideoCapture, CameraFrameSink, SimulatorInjection, and Cameras described as external ports. Web UI in JavaScript SDK wrapping a Simulator instance. Likely uses SimulatorKit private APIs via Swift 6.1 bindings. Frame streaming supports MJPEG and H.264/AVCC; input injection uses IOHIDDigitizerDispatch for iOS 26 streaming-touch path and Mach messaging for device orientation. Camera feature injects VirtualCamera.dylib (vendored from SimCam) via DYLD_INSERT_LIBRARIES into simulator-launched apps, pumping frames through shared-memory ring buffer.

Tests

README explicitly documents 460+ Swift Testing cases with auto-generated MockXxx fakes for all external ports. TDD non-negotiable is stated design principle. swift test requires no simulator. This level of documented coverage is unusual and suggests genuine test investment; however, no codecov badge or percentage disclosed in README itself.

Maintenance

Last push June 24, 2026 (5 days before analysis date). CI badge present and linked. Apache-2.0 licensed. Requires macOS 15+, Xcode 26, Swift 6.1 — tightly coupled to recent OS/toolchain versions, suggesting either very new platform requirements or active tracking of bleeding-edge dependencies. No evidence of backport or compatibility mode. Brew formula available (homebrew distribution). Status: actively maintained, not stagnant.

Honest verdict

ADOPT IF: you are building a headless iOS simulator farm, need 60fps remote control of simulators, are comfortable with Swift-only deployment, have CI/CD infrastructure that tolerates macOS/Xcode pinning, and value a modern architecture (TDD, mock-injected ports). AVOID IF: you need long-term API stability (private SimulatorKit symbols break with each Xcode), require multi-platform control (physical devices, tvOS simulators), or operate under organizations where bleeding-edge 0.1.x versions are considered production unfit. MONITOR IF: you ship simulator-centric test infrastructure and want to evaluate whether Baguette's ergonomics and 60fps streaming justify migration from idb; watch for 1.0 release and adoption announcements from recognized CI/CD vendors.

Independent dimensions

Mainstream potential

3/10

Technical importance

7/10

Adoption evidence

2/10

Risks
  • Dependency on private SimulatorKit APIs means breaking changes are guaranteed with each Xcode release; no official API contract exists to protect forward compatibility.
  • Adoption not verified at production scale; unclear whether early growth reflects genuine use or exploratory interest.
  • Swift + macOS + Xcode 26 + iOS 26 tight coupling limits portability and retroactive support; existing iOS 25 workflows may not adopt.
  • Camera feature (0.1.72) adds complexity (dylib injection, DYLD_INSERT_LIBRARIES, shared-memory ring buffers); injection-based approach is inherently fragile across app configurations and may not work in all testing scenarios.
  • Web UI and JavaScript SDK are undocumented in README; no clarity on browser compatibility, accessibility, or security model for remote simulator access.
Prediction

Likely to remain a specialized tool for simulator farms and TDD-heavy teams willing to track Xcode versions closely. Mainstream adoption improbable due to API fragility; technical quality and niche fit suggest sustainable but modest user base (hundreds to low thousands). 1.0 release and explicit stability guarantees would signal confidence; absence suggests either very new project or pre-release culture.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Swift
67.4%
JavaScript
21.4%
HTML
6.1%
Objective-C
2.4%
CSS
2.1%
Shell
0.5%
Makefile
0%

Information

Language
Swift
License
Apache-2.0
Last updated
1d ago
Created
2mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

EvanBacon

EvanBacon/serve-sim

serve-sim exposes iOS Simulators as interactive web services via MJPEG...

2.3k TypeScript Mobile
facebook

facebook/idb

idb is a command-line interface for automating iOS simulators and devices,...

5.2k Swift Mobile
danielpaulus

danielpaulus/go-ios

go-ios is a cross-platform CLI tool and Go library that enables automation of...

2.2k Go Mobile
Schlaubischlump

Schlaubischlump/LocationSimulator

LocationSimulator is a macOS application that spoofs device locations for iOS,...

3k Swift Dev Tools
conorluddy

conorluddy/ios-simulator-skill

A Python skill for Claude Code that optimizes iOS app development by wrapping...

1.1k Python Mobile
vs. alternatives
facebook/idb

idb (5160 stars) is the established standard for iOS simulator/device automation, multi-platform (Python/C++), mature, and backed by Meta. Baguette targets similar use cases but is Swift-native, simpler CLI surface, and emphasizes 60fps streaming + web UI. idb is broader (Xcode simulation, physical device support); Baguette is narrower but possibly more ergonomic for simulator-only farms.

danielpaulus/go-ios

go-ios (2129 stars) emphasizes physical iOS device control over simulators. Baguette is simulator-exclusive but offers richer real-time interactivity (streaming, gestures, camera). Complementary rather than directly competitive.

Shopify/tophat

tophat (1053 stars) is Swift-based simulator orchestration for testing. Baguette appears more focused on interactive control and farms; tophat likely more test-harness oriented. Adoption gap suggests tophat filled a specific niche Baguette has not yet claimed.

EvanBacon/serve-sim

serve-sim (2102 stars, TypeScript) offers web-based iOS simulator control. Similar positioning to Baguette but different tech stack (TS vs. Swift). serve-sim has higher star count; Baguette's 60fps stream and gesture fidelity may differ in implementation quality, but README does not provide enough detail to assess parity.

Schlaubischlump/LocationSimulator

LocationSimulator (3016 stars) is simulator location spoofing. Orthogonal to Baguette's scope. Both use SimulatorKit but solve different problems.