{"adoption": {"forks": 95, "observed_at": "2026-08-28T04:05:24.692166+00:00", "stars": 1704}, "canonical_url": "https://ross.abutalabs.com/products/baguette", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Headless control for Apple's Simulators — 3D models, taps, swipes, multi-finger gestures, 60 fps streaming, and a multi-device farm", "domain": ["mobile-development", "developer-tools", "testing"], "enriched": true, "function": ["cli", "http-server", "websocket", "video-processing", "developer-tools", "workflow-automation"], "health_score": 100, "homepage": "https://tddworks.github.io/baguette/", "language": "Swift", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["tddworks/baguette"], "name": "tddworks/baguette", "platform": ["cli"], "pushed_at": "2026-08-26T11:10:49+00:00", "repo": "tddworks/baguette", "stars": 1704, "tags": ["ios-simulator", "simulatorkit", "device-farm", "headless", "screen-streaming", "input-injection", "agent", "apple-silicon", "ios-26", "simulators", "automation", "macos", "web-server", "swift"], "topics": ["ios", "simulator", "streaming", "simulatorkit", "agent", "cli", "devicefarm"], "urls": [], "use_cases": ["control ios simulators headlessly from the command line", "stream simulator screen at 60 fps over websocket", "automate taps and swipes on ios simulator for testing", "run a multi-device ios simulator farm", "inspect accessibility tree of an ios app in simulator", "record simulator screen as mp4 in the browser", "pipe mac webcam into ios simulator camera", "drive ios simulator with ai agents"], "what_it_is": "Baguette is a Swift CLI and WebSocket server that provides headless control of iOS simulators without opening Xcode or Simulator.app. It supports booting devices, 60 fps screen streaming (MJPEG/H.264), host-side input injection (taps, swipes, multi-finger gestures, keyboard, hardware buttons), accessibility tree inspection, log tailing, screenshots, webcam piping, and a multi-device farm via a built-in web UI.", "when_to_avoid": ["you need to control physical iOS devices rather than simulators", "you're on Linux or Windows — it requires macOS 15+ and Xcode 26", "you rely on officially supported Apple APIs and can't accept private SimulatorKit symbol usage", "you need Android emulator control"], "when_to_choose": ["you need headless iOS simulator automation on macOS without Xcode UI", "you're building device farms or AI agent loops that drive simulators", "you need low-latency H.264/MJPEG screen streaming with input injection", "you want to inspect accessibility trees and logs programmatically"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/baguette", "repo": "tddworks/baguette", "role": "main", "score": 81}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.692166+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:37:36.046873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd380b7e289bf6a63d070dda845d444ed9f7a8fc5c73e9433e58ac35960f9355", "fetched_at": "2026-08-28T04:05:24.692166+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tddworks/baguette"}, {"content_hash": "2a5080e4e65807a155e8c5b3fdae2802b8801750e4e15c3c21f56001dbdc4c0b", "fetched_at": "2026-08-29T11:11:53.615000+00:00", "kind": "homepage", "missing": false, "url": "https://tddworks.github.io/baguette/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.692166+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:37:36.046873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd380b7e289bf6a63d070dda845d444ed9f7a8fc5c73e9433e58ac35960f9355", "fetched_at": "2026-08-28T04:05:24.692166+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tddworks/baguette"}, {"content_hash": "2a5080e4e65807a155e8c5b3fdae2802b8801750e4e15c3c21f56001dbdc4c0b", "fetched_at": "2026-08-29T11:11:53.615000+00:00", "kind": "homepage", "missing": false, "url": "https://tddworks.github.io/baguette/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:37:36.046873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd380b7e289bf6a63d070dda845d444ed9f7a8fc5c73e9433e58ac35960f9355", "fetched_at": "2026-08-28T04:05:24.692166+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tddworks/baguette"}, {"content_hash": "2a5080e4e65807a155e8c5b3fdae2802b8801750e4e15c3c21f56001dbdc4c0b", "fetched_at": "2026-08-29T11:11:53.615000+00:00", "kind": "homepage", "missing": false, "url": "https://tddworks.github.io/baguette/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.692166+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.692166+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.692166+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:37:36.046873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd380b7e289bf6a63d070dda845d444ed9f7a8fc5c73e9433e58ac35960f9355", "fetched_at": "2026-08-28T04:05:24.692166+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tddworks/baguette"}, {"content_hash": "2a5080e4e65807a155e8c5b3fdae2802b8801750e4e15c3c21f56001dbdc4c0b", "fetched_at": "2026-08-29T11:11:53.615000+00:00", "kind": "homepage", "missing": false, "url": "https://tddworks.github.io/baguette/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.692166+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.692166+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:37:36.046873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd380b7e289bf6a63d070dda845d444ed9f7a8fc5c73e9433e58ac35960f9355", "fetched_at": "2026-08-28T04:05:24.692166+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tddworks/baguette"}, {"content_hash": "2a5080e4e65807a155e8c5b3fdae2802b8801750e4e15c3c21f56001dbdc4c0b", "fetched_at": "2026-08-29T11:11:53.615000+00:00", "kind": "homepage", "missing": false, "url": "https://tddworks.github.io/baguette/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.692166+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.692166+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.692166+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:37:36.046873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd380b7e289bf6a63d070dda845d444ed9f7a8fc5c73e9433e58ac35960f9355", "fetched_at": "2026-08-28T04:05:24.692166+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tddworks/baguette"}, {"content_hash": "2a5080e4e65807a155e8c5b3fdae2802b8801750e4e15c3c21f56001dbdc4c0b", "fetched_at": "2026-08-29T11:11:53.615000+00:00", "kind": "homepage", "missing": false, "url": "https://tddworks.github.io/baguette/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.692166+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.692166+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:37:36.046873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd380b7e289bf6a63d070dda845d444ed9f7a8fc5c73e9433e58ac35960f9355", "fetched_at": "2026-08-28T04:05:24.692166+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tddworks/baguette"}, {"content_hash": "2a5080e4e65807a155e8c5b3fdae2802b8801750e4e15c3c21f56001dbdc4c0b", "fetched_at": "2026-08-29T11:11:53.615000+00:00", "kind": "homepage", "missing": false, "url": "https://tddworks.github.io/baguette/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:37:36.046873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd380b7e289bf6a63d070dda845d444ed9f7a8fc5c73e9433e58ac35960f9355", "fetched_at": "2026-08-28T04:05:24.692166+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tddworks/baguette"}, {"content_hash": "2a5080e4e65807a155e8c5b3fdae2802b8801750e4e15c3c21f56001dbdc4c0b", "fetched_at": "2026-08-29T11:11:53.615000+00:00", "kind": "homepage", "missing": false, "url": "https://tddworks.github.io/baguette/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:37:36.046873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd380b7e289bf6a63d070dda845d444ed9f7a8fc5c73e9433e58ac35960f9355", "fetched_at": "2026-08-28T04:05:24.692166+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tddworks/baguette"}, {"content_hash": "2a5080e4e65807a155e8c5b3fdae2802b8801750e4e15c3c21f56001dbdc4c0b", "fetched_at": "2026-08-29T11:11:53.615000+00:00", "kind": "homepage", "missing": false, "url": "https://tddworks.github.io/baguette/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:37:36.046873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cd380b7e289bf6a63d070dda845d444ed9f7a8fc5c73e9433e58ac35960f9355", "fetched_at": "2026-08-28T04:05:24.692166+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tddworks/baguette"}, {"content_hash": "2a5080e4e65807a155e8c5b3fdae2802b8801750e4e15c3c21f56001dbdc4c0b", "fetched_at": "2026-08-29T11:11:53.615000+00:00", "kind": "homepage", "missing": false, "url": "https://tddworks.github.io/baguette/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 8, "rhythm": 99}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 124, "days_push": 7, "days_rel": 9, "gap_med": 1.0, "n_releases_24m": 43}, "score": 81, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}