← Back to research
CLI

Workcell

A FIFO queue for the Macs, phones, GPUs, and rigs that coding agents share.

Resource queue example

Pause the queue example to read a state, or restart it and announce the release and automatic handoff.

Agent A is running. Agents B and C are waiting in FIFO order. Agent D is running on a different resource.

Three agents share one Mac in FIFO order. A GPU job runs at the same time.

One device, one owner

Agents are easy to multiply. Hardware is not. Two builds can target the same Mac; two tests can reset the same phone; two jobs can claim the same GPU. One command can change the resource underneath another, and a green check may belong to the wrong run.

Workcell gives each resource a first-in, first-out queue. One command owns it. Callers using --wait line up in order; callers without it receive a busy result immediately. When the owner exits, the next waiting command starts automatically. Jobs for other resources keep moving.

The reservation follows the process

The resource host owns the queue and operating-system lock. The launched process inherits that lock, so killing its wrapper cannot hand the device to a second job while the first is still running. The reservation ends when the owning processes release it.

Checked-in project commands supply consistent resource keys. Workcell rejects attempts to reacquire the same key and nested requests in an inverted order, catching deadlocks before a job waits indefinitely. Structured status gives an agent the current owner, its queue position, and the run’s log path.

Install and use

curl -fsSL https://workcell-137.pages.dev/install.sh | sh

or tell your agent

install https://workcell-137.pages.dev/llms.txt

Prefer the project wrapper. For direct use with an established resource key:

workcell run macos-xcode --wait --json -- xcodebuild test
  • macos-xcode is the resource key. Matching keys take turns; different keys run independently.
  • --wait waits in line until the command can run. Omit it to return immediately when the resource is busy.
  • --json returns structured output. Includes the owner, queue position, log path, and a command for waiting.