Skip to main content
The axilio CLI exposes phone control and platform operations to people, shell scripts, and coding agents. Human-readable tables are the default. Most commands also provide structured JSON output.

Install

On macOS, install the CLI with Homebrew:
Homebrew also installs the manual. Read it with man axilio.

Sign in

Use browser authentication for an interactive terminal:
For CI or another non-interactive environment, supply an organization-scoped API key through AXILIO_API_KEY. See Authentication.

Inspect a phone from the terminal

List the dedicated phones available to allocate, start a session, inspect the screen, and save a screenshot:
Replace ph_123 with an ID returned by axilio phones list. The exported AXILIO_SESSION selects the session for subsequent axilio phone commands. Unlike an SDK context manager, the CLI session remains active until you stop it, so always release the phone when you finish.

Explore a read-only task

Work out a mobile task one action at a time before turning it into an SDK script. This example opens X, searches for agentic infrastructure, and scrolls through the first few Top results without changing the account.

Before you start

  • Install the CLI above, run axilio login, and verify the setup with axilio doctor.
  • Use a dedicated phone where X is already installed and signed in.
  • Make sure you are authorized to inspect the signed-in account. This guide does not post, follow, like, message, or change settings.
Explore the available commands with axilio --help. Run axilio help --html for the complete installed reference, or man axilio on macOS and Linux.

Start a session

List dedicated phones that can be allocated now, then start a session on one and select it for the current shell:
Replace ph_123 with an ID from the first command. Every following axilio phone command uses AXILIO_SESSION automatically. In Bash or Zsh, the cleanup trap releases the phone if a later command fails or you exit the shell. PowerShell has no exit trap for an interactive session, so run cleanup yourself when you finish. cleanup clears AXILIO_SESSION only after the stop succeeds, so if a stop fails you can run it again.
The pre-existing demo below uses axilio phones mine, which remains a valid way to inspect all dedicated inventory. This guide uses axilio phones list because it filters the result to phones that can be allocated immediately.
The CLI saves session connection information locally. When several local sessions exist, use --session or AXILIO_SESSION to select the one a phone command should control.

Open X

Observe the launcher, open the app drawer, and tap X:
The swipe uses coordinates because opening the whole app drawer is a screen gesture, not a tappable element. These coordinates match the 488x1080 frame in the demo. Adjust them if observe reports a different screen size. The X tap uses a semantic target because one is available. X opens on the home timeline, where search is an icon. Open the search screen, focus the field, enter the query, and submit it:
The final observe verifies that X opened the Top results for the intended query before you continue.

Scroll through the top results

Run these commands up to three times. Observe after each swipe so you can check the screen before continuing:
This swipe also uses coordinates because it scrolls the whole results view.

Stop the session

Stop as soon as you finish. Keep the session ID for the recording, because cleanup clears AXILIO_SESSION:
Screen recording is enabled by default unless the session or workflow turns it off. Download the recording from the CLI once processing finishes:
--wait polls while the recording is still processing. Without --out the command prints the status and a short-lived URL instead. Or open Sessions, select the completed session, and use its recording when the status becomes ready. Python, Go, and REST lookup options are documented in Recordings.

Watch the demo

The original poster and recording still match the X interaction above. The inventory command shown in the recording is the supported phones mine variant described earlier.

Turn the exploration into code

Once the sequence is reliable, reproduce it with the Python or Go SDK. Keep semantic targets for taps, retain coordinate gestures only where the whole screen must move, observe after important transitions, and preserve guaranteed session cleanup.

Command map

Run axilio <command> --help for flags and examples. Run axilio help --html to open the self-contained browser manual installed with the CLI.

Structured output

Use -o json for scripting:
Most successful commands emit one JSON document. Two live commands use newline-delimited JSON because frames arrive over time:
  • axilio sessions trace <session-id> --follow -o json emits one object per frame and finishes with a trace_end summary.
  • axilio runs watch <run-id> -o json emits one object per frame and finishes with a watch_end summary.
axilio sessions start --phone-id <id> --export emits a shell assignment, not JSON. Bash and Zsh apply it with eval, PowerShell with Invoke-Expression. On Windows it prints PowerShell syntax by default; --shell posix, --shell powershell, or --shell cmd picks one explicitly. Progress, notes, and prompts go to standard error so standard output remains usable by scripts.

Source

The CLI is open source at github.com/axilioai/cli. Homebrew packages are published through axilioai/homebrew-tap. The install scripts are install.sh and install.ps1.

Next steps

SDK quickstart

Turn a proven CLI sequence into a Python or Go program.

Control reference

Compare CLI commands with the Python and Go driver methods.