//Guide
Watch and replay what your agent did
When an agent works a phone for you, you need to see what it did. Axilio gives every phone session three views: the screen live while it runs, a recording you can replay after it ends, and a step-by-step trace of every call with its timing, output, errors and cost.
They work the same for a script you run yourself and for a workflow run, and recording and the trace are on by default.
Updated October 6, 2026.
Three views of one session
The screen now, the screen afterwards, and what ran in between.
1.0OverviewWatch it live
Every session you start returns a viewer URL for its screen. Here, a watch-only one.
2.0Live viewfrom axilio import PhoneLiveViewOptionsfrom axilio.platform import Clientclient = Client() # reads AXILIO_API_KEY# Anyone with the URL can watch the screen; the server blocks input.allocation = client.phones.allocate(phone_type="android",phone_id="ph_123",live_view=PhoneLiveViewOptions(view_only=True),)try:print(allocation.live_view_url)input("Press Enter to release the phone...")finally:client.phones.deallocate(allocation.phone_id)
Embed it in your app
The viewer is a chrome-less page you can put in an iframe, on a dark, light or transparent background, with an optional phone frame.
Share it with care
A viewer URL works for anyone who has it. Make it view-only, or require sign-in to your organization for links inside your team.
It ends with the session
The URL stops working when the session ends. After that, the recording and the trace take over.
Replay the screen
Look up a session's recording, or wait for it to finish processing and download the MP4.
3.0Recordingaxilio sessions recording sess_123 # status and a time-limited linkaxilio sessions recording sess_123 --wait --out session.mp4 # wait, then download
One lookup for every session
Recordings are keyed by session ID, so the same lookup works for workflow runs and sessions you start yourself.
In step with the trace
In the dashboard, playback stays in sync with the Timeline and Console: pick a step and the video jumps to that moment.
Ready, pending or expired
A recording is ready once its upload finishes. An expired one is outside your organization's retention window.
Read the step-by-step trace
What ran, in what order, how long each step took, what it printed and what it cost.
4.0Tracefrom axilio.platform import Clientclient = Client() # reads AXILIO_API_KEYtelemetry = client.telemetry("sess_123")# Where the time and money went: total time, calls, billed cost.summary = telemetry.summary()print(summary.total_ms, summary.call_count, summary.billed_cost_microdollars)# Every operation, how long it took, and what it was billed.for item in telemetry.trace().spans:print(item.frame.name, item.duration_ms, item.billed_cost_microdollars)
Timeline
Each operation is a bar: when it started, how long it ran, and which call caused it.
Console
The session's output and errors, on the same timeline as its steps.
Cost per call
Billed cost joins each SDK call and model call where available, in microdollars: 1,000,000 is $1.
Unobserved time
Gaps not covered by a recorded SDK call, such as your own code running or waiting, are marked as such.
Choose what's kept
Recording and the trace are separate switches, set when a session or workflow is created.
5.0ControlsQuestions
Short answers to what people ask first.
6.0FAQ
Yes, for every session and workflow run. Turn either off with recording=false or telemetry=false; they're independent.
Yes. Start the session with a view-only live view and the server blocks input.
Yes. The viewer page is iframe-embeddable. Use token mode for end-user embeds, since sign-in cookies can be blocked inside third-party iframes. Embed the viewer →
Yes. axilio sessions trace with --follow prints the trace so far, then new steps until the session ends.
Yes, where billed cost is available: each SDK call and model call carries its cost. It's a point-in-time view; use Usage for your organization's totals.
$15 a day, $75 a week or $180 a month per dedicated phone, with unlimited hours. Live view, recording and the trace are on by default for every session. Pricing →