Repolode
callstackincubator

callstackincubator/simlock

A control plane that leases iOS simulators, Android emulators and phones to parallel coding agents so they stop sharing one device.

Stars
612
Forks
30
Open issues
47
Last commit
24 hours ago

What is it?

Simlock is a control plane for running several coding agents at once against mobile targets. Each agent requests a device, receives one that is already booted and checked, and keeps exclusive use of it until the lease is released. Requests that arrive when the machine is full are queued, and devices that nobody is using are cleaned up.

It covers iOS simulators, Android emulators and enrolled phones. The project is installed from npm and driven from a CLI, with commands such as doctor for environment checks and lease for requesting a device by platform and model. A single Mac is the starting point; additional Macs and Linux machines can be added behind a gateway that exposes one URL for the whole fleet.

The documentation covers agent setup, running the worker daemon on the machine that owns the devices, the gateway, and a full reference of commands, configuration keys, events and errors.

Key features

  • 01Leases iOS simulators, Android emulators and enrolled phones to individual agents.
  • 02Gives each agent exclusive use of a device until it is released.
  • 03Creates new devices when none are free and queues requests when the machine is full.
  • 04Cleans up devices that are no longer in use.
  • 05Scales from one Mac to a fleet of Macs and Linux machines behind a gateway.

Use cases

  • Running several coding agents in parallel that each need to test a mobile app.
  • Sharing a Mac's simulators across a team's automated mobile development workflows.
  • Pooling simulators and emulators across multiple machines behind one endpoint.

Quick start

  1. 1

    Install simlock globally with npm

    npm i -g simlock
  2. 2

    Check your machine setup with the doctor command

    simlock doctor
  3. 3

    Lease an iPhone 16 simulator

    simlock lease --platform ios --device "iPhone 16"

Things to know

  • Documentation is hosted on an external website rather than in the repository.
  • Designed to run on a Mac for iOS simulators, so iOS support requires macOS.

In collections

Topics

#ios-simulator#android-emulator#agents#mobile-testing#device-farm#typescript#emulators#simulators

FAQ

What is simlock?
A control plane that leases iOS simulators, Android emulators and phones to parallel coding agents so they stop sharing one device. Simlock is a control plane for running several coding agents at once against mobile targets. Each agent requests a device, receives one that is already booted and checked, and keeps exclusive use of it until the lease is released. Requests that arrive when the machine is full are queued, and devices that nobody is using are cleaned up.
Is simlock free to use? What license does it have?
simlock is open source under the MIT license. Check the license terms before using it in commercial products.
Is simlock still maintained?
Actively maintained. The last commit to simlock was on Nov 6, 2026.
What can I use simlock for?
Running several coding agents in parallel that each need to test a mobile app. Sharing a Mac's simulators across a team's automated mobile development workflows. Pooling simulators and emulators across multiple machines behind one endpoint.
How do I install simlock?
Install simlock globally with npm: npm i -g simlock Check your machine setup with the doctor command: simlock doctor Lease an iPhone 16 simulator: simlock lease --platform ios --device "iPhone 16"
Where can I get simlock?
The source code and installation instructions are on GitHub: https://github.com/callstackincubator/simlock

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects