Catalog
The six backend kinds phonebase registers, grouped by how input reaches the device, with what each one can actually be asked to do. This describes the platform rather than your fleet — the counts are the only part that depends on what you own.
Three things are deliberately not on these cards. Unit price lives on the website and is linked rather than copied, because a copy is a second source of truth for money. Boot time and action round-trip latency are not shown at all: the first has no instrumentation anywhere in the API, and the second has raw material whose sample does not yet clear its size gate. A number that cannot be verified is removed from the page rather than invented or promised.
Every capability field comes from the backend's own descriptor in phonebase-api, cited per card. Three fields a reader might expect — unit price and the two latency figures — are absent by decision, not by oversight.
Fidelity tier: software
3 backend kindsInput is injected inside the operating system. Pixel-exact capture and a structural UI tree, because the backend is running on the device itself.
adb_cloud
Facility Android reached over the device gateway's per-device adb byte stream. Same adb-family primitives as a local device, tunnel transport.
- Fidelity tier
softwareInput is injected inside the OS.- Operating system
android- Tap
- Supported
- Swipe
- Supported. A long press is sent as a zero-distance swipe, so its receipt records
swipewith identical from and to. - Text input
nativeOS-level text injection.- Pressable keys
- home
- back
- enter
- delete
- app_switch
- power
- volume_up
- volume_down
- Open an app
intentLaunched by app id through the OS.- Observation
framebufferPixel-exact capture from the OS.- UI tree
uiautomator- Frame binding
- Actions can bind to an observed frame, and a binding older than 5,000 ms is refused as stale.
- Coordinate grid
- 1000 × 1000Normalized. Callers never speak device pixels.
1 in your fleet, 1 reporting Online. Online reports reachability, not whether one is free to lease.
Pricing · on the website, which is where the rates are maintained.
phonebase-api src/registry.ts:160
adb_real
A physical Android handset on adb. Input is injected inside the OS.
- Fidelity tier
softwareInput is injected inside the OS.- Operating system
android- Tap
- Supported
- Swipe
- Supported. A long press is sent as a zero-distance swipe, so its receipt records
swipewith identical from and to. - Text input
nativeOS-level text injection.- Pressable keys
- home
- back
- enter
- delete
- app_switch
- power
- volume_up
- volume_down
- Open an app
intentLaunched by app id through the OS.- Observation
framebufferPixel-exact capture from the OS.- UI tree
uiautomator- Frame binding
- Actions can bind to an observed frame, and a binding older than 5,000 ms is refused as stale.
- Coordinate grid
- 1000 × 1000Normalized. Callers never speak device pixels.
2 in your fleet, 1 reporting Online. Online reports reachability, not whether one is free to lease.
Pricing · on the website, which is where the rates are maintained.
phonebase-api src/registry.ts:157
emulator
An Android emulator on adb. The same descriptor as a real handset — adb injects events inside the OS on both.
- Fidelity tier
softwareInput is injected inside the OS.- Operating system
android- Tap
- Supported
- Swipe
- Supported. A long press is sent as a zero-distance swipe, so its receipt records
swipewith identical from and to. - Text input
nativeOS-level text injection.- Pressable keys
- home
- back
- enter
- delete
- app_switch
- power
- volume_up
- volume_down
- Open an app
intentLaunched by app id through the OS.- Observation
framebufferPixel-exact capture from the OS.- UI tree
uiautomator- Frame binding
- Actions can bind to an observed frame, and a binding older than 5,000 ms is refused as stale.
- Coordinate grid
- 1000 × 1000Normalized. Callers never speak device pixels.
1 in your fleet, 0 reporting Online. Online reports reachability, not whether one is free to lease.
Pricing · on the website, which is where the rates are maintained.
phonebase-api src/registry.ts:156
Fidelity tier: physical
1 backend kindA mechanical actuator touches a real screen. Nothing is installed on the device, so there is no UI tree to read and observation is a photograph.
robot_hand
A mechanical actuator touching a real iPhone, driven over the VisualRemote HTTP contract. Camera frames only, and zero software footprint on the device.
- Fidelity tier
physicalA mechanical actuator touches a real screen, leaving no footprint on the device.- Operating system
ios- Tap
- Supported
- Swipe
- Supported. A long press is sent as a zero-distance swipe, so its receipt records
swipewith identical from and to. - Text input
- Not supported — this backend has no text-injection channel.
- Pressable keys
- Not supported — this backend has no key channel.
- Open an app
- Not supported — this backend has no app-launch channel.
- Observation
cameraA photograph of the physical screen.- UI tree
- Not supported — this backend has no structural view of the screen.
- Frame binding
- Actions can bind to an observed frame, and a binding older than 5,000 ms is refused as stale.
- Coordinate grid
- 1000 × 1000Normalized. Callers never speak device pixels.
- Physical abilities
hover— Hover over a point without touching the screen: not availablepressDepth— Vary press depth beyond the calibrated default: not availablequeueControl— Inspect or reorder the arm's queued motions: not available
Declared per ability so a caller can branch without probing. All three are false today across every arm — the remote contract has no per-request carrier for them yet.
2 in your fleet, 1 reporting Online. Online reports reachability, not whether one is free to lease.
Pricing · on the website, which is where the rates are maintained.
phonebase-api src/registry.ts:162
Planned
2 backend kindsRegistered in the API's backend kinds with no adapter behind them. A device resolving to one of these fails with backend_not_implemented.
esp32_hid
PlannedA HID dongle presenting as a hardware keyboard and mouse.
Registered with no adapter. The registry's own note reads “HID dongle: actions only, no observations”, so a device on this kind could act but not be observed — but nothing implements it today, and no descriptor in the API declares the hid tier at all.
No capabilities are listed for this kind, and that is not an empty table — there is no descriptor to read them from. What it will be able to do is decided when its adapter is written.
Not available to lease.
Pricing · on the website, which is where the rates are maintained.
phonebase-api src/registry.ts:164
byod_portal
PlannedCustomer-enrolled devices, brought by the customer rather than housed in a facility.
A name in BACKEND_KINDS with no adapter descriptor behind it. Resolving a device to this kind fails loudly with backend_not_implemented rather than misbehaving quietly.
No capabilities are listed for this kind, and that is not an empty table — there is no descriptor to read them from. What it will be able to do is decided when its adapter is written.
Not available to lease.
Pricing · on the website, which is where the rates are maintained.
phonebase-api src/registry.ts:165