phonebase, and the same program runs from a checkout: corepack pnpm cli <command> during development, or the phonebase entry point after corepack pnpm build. See installation for the details.
Bad input never crashes the CLI: it prints the usage block and exits 2, and that includes a flag used on a command that does not read it. phonebase --help lists every command; phonebase <command> --help prints that one command’s arguments, flags and an example. Both come from the same table this page is generated from, so the terminal and this page cannot disagree.
Commands
Global options
These apply wherever they make sense rather than to one command.
Authentication: run
phonebase login once and the CLI stores an API key for that --server in the system keychain. PHONEBASE_API_KEY overrides the stored key, which is what CI and scripts use; PHONEBASE_DEV_TOKEN is sent only to a control plane on your own machine (a loopback --server).
phonebase apps
Inspect phone app inventory, refresh it, and recover an original request. Install approved apps through the managed app store.phonebase apps library capabilities
phonebase apps library check
phonebase apps library refresh
phonebase apps library refresh-status
phonebase apps library refresh-results
phonebase apps library request
phonebase login
Log in from this terminal: approve the request in the console and the CLI stores a new API key for your organization in the system keychain. Run it again whenever you need a new key.phonebase whoami
Show the organization, key id, scopes and expiry of the key this CLI sends, and where that key came from.phonebase logout
Revoke the key phonebase login stored and remove it from this machine. A key in PHONEBASE_API_KEY is left alone. Keys can also be deleted on the console’s Keys page.phonebase devices
List every device your org can see, with its status and capabilities.phonebase acquire
Claim exclusive use of a device and print the lease it returns.phonebase renew
Push a lease’s expiry back before it runs out, keeping the same lease id. A lease that expires mid-session strands whatever you were doing, so renew it rather than acquiring again.phonebase release
Give a device back by the lease id acquire returned.phonebase tap
Tap one point on a device.phonebase swipe
Drag from one point to another on a device: scroll a list, pull a sheet down, page sideways.phonebase long-press
Press and hold one point on a device, for the context menus and drag handles a tap never opens.phonebase type
Type text into whatever input the device has focused. Focus it first: this types, it does not aim.phonebase key
Press one of the phone’s own keys on a device: home, back, enter, delete, app_switch, power, volume_up, volume_down.phonebase open
Launch an app on a device by its OS-level id, instead of tapping through a home screen to find it.phonebase screenshot
Capture a device’s screen and write the image to a file.phonebase ui
Print the device’s UI tree, the text-and-elements view a screenshot cannot give you. The tree goes to stdout and its metadata to stderr, so redirecting the output leaves a clean file.phonebase doctor
Check this machine: node version, device rows, the credential in use and control-plane reachability.phonebase rows
Read and edit the device rows file a control plane running on this machine serves (a local rig, not the hosted fleet).phonebase rows list
phonebase rows add
phonebase rows remove