sorrentolab/device-farm — explained in plain English
Analysis updated 2026-05-18
Let multiple coding agents or CI jobs share one Mac's simulators without conflicts.
Retry a test run automatically when its device drops mid session.
Watch live, low frame rate screens of all connected devices from a dashboard.
Drop in the dfarm CLI as a replacement for maestro test in existing scripts.
| sorrentolab/device-farm | 0xkinno/astraea | 0xkinno/halcyon | |
|---|---|---|---|
| Stars | 0 | 0 | 0 |
| Language | TypeScript | TypeScript | TypeScript |
| Setup difficulty | hard | hard | hard |
| Complexity | 4/5 | 4/5 | 4/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires a Mac with connected simulators or devices, Docker for Postgres and Inngest, and mise as the toolchain manager.
device-farm is a shared scheduler for iOS simulators, Android emulators, and physical devices connected to a single Mac. Instead of every automated test or coding agent grabbing its own simulator and colliding with everyone else, all of them submit their work to one shared queue, and device-farm hands out devices one job at a time. If a device disconnects partway through a run, the job is automatically retried on a different available device rather than just failing. It gives you three ways to interact with it: a web dashboard that shows live, low frame rate screens of each connected device along with the queue and a history of past runs, a command line tool called dfarm that acts as a drop in replacement for the maestro test command so existing scripts and agents can switch over easily, and a REST API that exposes the same functionality over HTTP for other tools to call. Under the hood, scheduling a device to a job happens as a single database transaction so two jobs cannot grab the same device at once, and a background system retries failed scheduling attempts. Two separate mechanisms watch for a device dropping out mid run: the agent notices within a few seconds if a device disappears, and the server separately notices if an entire agent goes quiet for about a minute. Either way, the job is marked as having lost its device and gets rescheduled onto another one. To get started you install a toolchain manager called mise, then run one command to install dependencies and another to start the local database, background job system, web dashboard, and device agent together. A separate command compiles and installs the dfarm command line tool. The project is explicit about its current limits: there is no authentication, so anyone on the same network can see the dashboard and submit jobs, and it currently supports only a single Mac at a time.
A shared local scheduler that queues test runs across a Mac's iOS simulators, Android emulators, and physical devices, retrying on device drops.
Mainly TypeScript. The stack also includes TypeScript, Next.js, Postgres.
The README does not state license terms.
Setup difficulty is rated hard, with roughly 1h+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
double-check against the repo, no cap.