Skip to content
SkilledDragonEngineering Intelligence
MinilabKeylessOctober 13, 2026 · re-run October 14, 2026

agent-device passed 7 upstream CI gates at our pin, and doctor still says warn

We pinned agent-device 0.21.27 and ran seven upstream CI gates plus doctor, devices and the typed client with no keys. CI passed; doctor reported warn with no hard blockers.

By David Discua

Measured in the lab

7
upstream gates
712 s
upstream job
4
lab tests passed
  • upstream pnpm gates pass at the pin
  • doctor success, status warn, no hard blockers
  • devices and typed client return success
  • evidence manifest written for doctor, devices, client

From reports/gate.json · run on October 14, 2026. agent-device@0.21.27, upstream pin 1658d637d64f; CI run 38521651624 on ubuntu; local evidence on macOS; web lane skipped

How it is wired

doctor, devicesdriverecordAgentagent-deviceCLI, MCP, Node APIDevicelinux, localEvidencemanifest + sha256

01/03Your agent calls agent-device by CLI, MCP or the typed Node client.

agent-device gives coding agents a CLI, an MCP server and a typed Node API for driving iOS, Android, HarmonyOS, TV, web, macOS and Linux targets. We pinned agent-device@0.21.27, ran seven gates from upstream's own CI at commit 1658d637d64f, and collected doctor, devices and typed-client output as sha256-stamped evidence, all with no keys. Every CI job that ran passed, and doctor still returned warn because the machine had no phone tooling.

The catch

The keyless lane drives the device a CI runner has, which is a Linux desktop on ubuntu and simulators or the macOS desktop on a Mac. It does not touch a real phone. doctor --json reported success: true with status warn and the summary "No hard blockers found, but warnings need attention." The warnings are missing adb, hdc and Apple tools. To test Android or iOS hardware you install adb or Xcode and re-run doctor until the device checks pass.

The local evidence in our report came from a Mac. The full Linux evidence (doctor.json, devices.json, client.json and manifest.json with .sha256 sidecars) is an artifact of the CI lab job, and those files are gitignored. The optional web lane, which downloads a browser backend through web setup, runs only on manual dispatch, and it was skipped in this run. At the pin, upstream's src/ has no dedicated telemetry opt-out variable, so the lab sets DO_NOT_TRACK=1 and DISABLE_TELEMETRY=1 and relies on the web backend staying out of the default path.

What we ran (keyless)

bun install --frozen-lockfile
DISABLE_TELEMETRY=1 DO_NOT_TRACK=1 bun test --max-concurrency=1
DISABLE_TELEMETRY=1 DO_NOT_TRACK=1 bun run collect
bash scripts/upstream-ci.sh           # needs network, pnpm 11.17.0, Node 24.13

scripts/upstream-ci.sh runs pnpm install --frozen-lockfile and then these gates, copied from upstream's .github/workflows/ci.yml: typecheck, build, bundle-owner-files, unit-ci, tmpdir-leaks, integration-node and concurrency-torture.

From reports/gate.json, run on October 14, 2026, for lab commit a9c64f0 and CI run 38521651624:

CheckResult
Lab bun tests (CI)4 passed, 0 failed, 3.09 s
doctor --jsonsuccess, status warn
devices --jsonsuccess
Typed client (devices.list())success
Evidence manifesttool version 0.21.27, 3 files
CI lab jobsuccess, 15 s
CI upstream job (7 gates)success, 712 s
CI security jobsuccess, 20 s
CI web-lane jobskipped

On the ubuntu runner, the README records one device, with platform: "linux", id: "local", target: "desktop" and booted: true.

How it is wired

agent-device sits between the agent and a device you control. The agent runs doctor first, then devices, then drives the target through the CLI, the MCP server or createAgentDeviceClient, and closes the session in teardown. bun run collect writes each result with its sha256, byte size, tool version and timestamp into out/evidence/manifest.json. The lab skill device-evidence asks the agent to cite those evidence paths in its final report, because "a bare screenshot is not verification."

Minilab (open source)

Upstream is callstack/agent-device: 5,016 stars, MIT, TypeScript, as of October 14, 2026. Run bun run collect on your own machine and read out/evidence/manifest.json, then install adb or Xcode and re-run doctor to see which warnings clear.

Run it yourself

SkilledDragonCorp/minilab-agent-device-evidence

Clone, install and run the report with no API keys. The numbers above are what that run writes.

bun install --frozen-lockfile && bun test --max-concurrency=1 && bun run collect

SkilledDragon is not affiliated with Callstack or the agent-device project. Numbers are from our own keyless lab run; re-run the report before relying on them. Marks belong to their owners.

All labs