cloud or device, and it says where a run executes. A device is a machine you connected to the workspace. Its id is dvc_ plus 16 letters and digits. For how Pinework picks the place, see Cloud and your machine.
States
A device’s state is computed from its last heartbeat, not stored. It appears inliveness.status.
A phone or tablet (
ios, ipados, android) has liveness.kind set to controller. It has no status.
Fields
The environment field
Device
GET /api/v1/devices returns { "devices": [...] }. Each device has these fields.
string
required
The connection id, a UUID.
PATCH and DELETE take this value in the path.string
required
The durable device id,
dvc_…. It stays the same across reconnects.string
required
The name shown in the dashboard.
string
The machine’s hostname. Null when the device never sent one.
string
The OS, such as
darwin or linux. Null when unknown.string
The device manager version. Null when unknown.
integer
required
How many runs the device takes at once.
boolean
required
True when this is the workspace default device.
object
required
The computed state.
boolean
required
Legacy. True when
liveness.status is connected.boolean
required
True when
liveness.status is retired.string
The last heartbeat. Null before the first one.
string
required
The device counts as connected until this time.
object
required
Which harnesses and providers are installed and signed in on the device. For display.
string
When readiness was last checked. Null before the first check.
object
Whether the device is picking up runs, and why not. Null before the first report.
string
When you revoked this device as a remote controller. Null when not revoked.
string
required
ISO 8601 timestamp.
string
required
ISO 8601 timestamp.
Folder
A folder is a directory on a device that runs can work in. Its id isfs_ plus 16 letters and digits.
string
required
The folder id,
fs_….string
required
The folder’s name.
object
required
deviceId (the dvc_… id), rootPath (an absolute path) and bindingState (active or manual_rebind_required).string
required
active, disconnected or revoked.string
The repo this folder holds. A device run for that repo starts here. Null when not set.
string
required
ISO 8601 timestamp.
CLI
API
The PATCH body takes any of these keys, and no others:
displayName: 1 to 100 characters.hostname: 1 to 255 characters.maxConcurrentRuns: 1 to 10.isWorkspaceDefault:truemakes this the workspace default device.falsedoes nothing.remoteControlRevoked:truerevokes the device as a remote controller.falseclears that.
Errors
Some device and folder routes still answer with a plain
{ "error": "<message>" } body. Examples are “Device not found” with 404 and “Device not owned by the current user” with 403. Read the HTTP status first. For shared codes, see API conventions.
Limits
- Concurrent runs per device: 1 to 10, default 3.
- Heartbeat lease: 90 seconds. A device with no heartbeat for longer is
disconnected. - Retirement: 7 days with no heartbeat.
- Device display name: 100 characters. Hostname: 255 characters.
Cloud and your machine
How Pinework picks where a run executes.
Run on your Mac
Connect your Mac and give an agent a folder.
Run
The run object and its
environment field.Agent
Set an agent’s environment and default folder.