Skip to content

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.

Data source
Fixture control— not product UI. Switches which state this screen is rendering.

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 kinds

Input 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 swipe with 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 swipe with 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 swipe with 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 kind

A 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 swipe with 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 available
    • pressDepth Vary press depth beyond the calibrated default: not available
    • queueControl 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 kinds

Registered 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

    Planned

    A 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

    Planned

    Customer-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