Simlock is a free, open-source control plane from Callstack that hands out mobile test devices to coding agents running in parallel. When several agents work on the same app on one Mac, they all see the same simulators and can install builds over each other, erase a device mid-test or shut it down. Simlock gives each agent a lease instead: an iOS simulator, Android emulator or enrolled physical phone that is booted, checked and reserved for that agent until it is released.
If a matching device is free, the agent gets it immediately; if none is free, Simlock creates one up to the machine's capacity, and when the machine is full the request waits in a queue. Released devices are wiped before the next agent gets them, and a lease expires on its own after its time to live if an agent crashes without releasing it. Simlock works by agreement rather than enforcement: it does not hide other devices or block xcrun simctl, so agents must be told to use only the device a lease hands them.
Agents can lease devices through the simlock CLI, an MCP server with four tools (list, lease, release and status), an HTTP API for agents on other machines, or a Node.js client library. A background daemon starts on demand on the machine that owns the devices, and operators get a web console showing devices, leases and the queue. When one machine is not enough, a gateway can join several Mac and Linux workers behind a single URL, with workers connecting out to the gateway so they need no open inbound port.
Simlock is released under the MIT license and installs with npm (npm i -g simlock); simlock doctor checks the machine. It needs Node.js 22.13 or later, plus Xcode for iOS devices or the Android SDK for Android devices. Physical phones must be enrolled by an admin before they can be leased. Version 0.4.0 was released on October 30, 2026, and the project is still pre-1.0.
