📈 GH Trending Explorer 🎲 Surprise me

← all repos

entropyconquers / simfleet

git clone https://github.com/entropyconquers/simfleet.git v0.1.1 · 22d ago

One control plane for parallel React Native work on macOS: slimmed iOS simulators & Android emulators, live dashboard, leased Metro ports, shared native build cache, and Claude Code / Codex device attribution.

—
stars, 24h
—
stars, 7 days
+122
stars, 30 days · #1,917
122
★ total
4
forks · 3 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguageTypeScript
LicenseMIT
Created2026-09-25 (25d ago)
Last push22d ago
Watchers0
OwnerUser

GitHub topics

Links

README excerpt
simfleet 
 One control plane for parallel React Native work on macOS. 
 Slimmed iOS simulators and Android emulators, a live browser dashboard, leased Metro ports, 
 a shared native build cache, and per-agent device attribution for Claude Code and Codex.
 Documentation ·
 Quickstart ·
 API reference 
https://github.com/user-attachments/assets/96422e28-f5a8-400b-b8d9-9a2530fa1eda
---
Running several branches of a React Native app at once usually means five simulators eating 4 GB each,
Metro servers fighting over port 8081, native rebuilds every time you switch environments, and coding
agents stepping on each other's devices. simfleet turns that into one managed fleet:
- **Always slim.** Every iOS simulator is trimmed with SimSlim
 (about 3.8 GB → 1.3 GB) and every Android emulator with
 avdslim (`-lowram`, host GPU, ~45 background packages
 disabled). Devices booted any other way (Xcode, Android Studio, `simctl`) are slimmed automatically.
- **One live dashboard.** Every booted device streams into a browser wall you can drive directly: iOS
 over MJPEG, Android as hardware H.264 through scrcpy's device
 server with real touch down/move/up (15–80 ms input-to-frame on an M-series Mac).
- **Lanes, not port juggling.** A lane is one worktree on one device with one leased Metro port from the
 environment's range. Lanes refuse to steal a device, worktree, or port.
- **Native builds once.** An Expo `buildCacheProvider` fingerprints native inputs (JS excluded) and
 single-flights misses, so ten agents on JS-only branches share one build, and switching
 staging/production never rebuilds native.
- **Know which agent is where.** Every CLI call from a Claude Code or Codex session is attributed to the
 device it touches; sessions can claim devices. A menu-bar icon shows who is driving what.
## Requirements
- macOS, Bun ≥ 1.1
- iOS: Xcode, plus `brew install mobai-app/tap/simslim baguette watchman`
- Android: the Android SDK (platform-tools and emulator, via `ANDROID_HOME` or
 `~/Library/Android/sdk`), plus
 `brew tap kdbhalala/avdslim https://github.com/kdbhalala/avdslim.git && brew install avdslim scrcpy`
Each platform is optional; `simfleet status` and the dashboard report what is missing.
## Quick start
 [code] 
Then, in another terminal (or from an agent):
 [code] 
Android works the same way with AVD names:
 [code] 
## Using the dashboard
Open http://127.0.0.1:8790 (or click the menu-bar icon). The wall shows every simulator and emulator
with state, memory footprint, slim status, lane, and attached agents. Open a device to control it:
click to tap, drag to swipe, scroll to scroll, press Enter to send keystrokes and
 Esc to release. The inspector has lifecycle actions, hardware buttons, text entry, deep links,
and lane controls. The page follows the system light/dark theme, is keyboard and screen-reader
accessible, and reloads itself when the dashboard is upgraded.
The menu-bar icon starts with `simfleet serve` (disable with `--no-tray` or `SIM_FLEET_TRAY=0`