Skip to main content
Visor gives AI agents direct evidence from running mobile apps. It does five things:
  1. Connects to a running iOS or Android app.
  2. Performs real UI actions such as taps, typing, navigation, and waits.
  3. Captures screenshots and UI source from the live app.
  4. Evaluates assertions against the observed UI state.
  5. Persists reports and artifacts so a person or an LLM can review what happened.

What Visor is for

Visor is built for cases where code alone is not enough to verify behavior. Typical use cases:
  • Verify that a UI change actually rendered on screen.
  • Compare before and after state using screenshots and UI source.
  • Run the same scenario repeatedly to measure stability.
  • Produce machine-readable evidence for review, debugging, or automation.

Product scope

Visor currently supports mobile applications only. Supported scope today:
  • Android apps through Appium and UiAutomator2.
  • iOS apps through Appium and XCUITest.
  • Real device or simulator interaction.
  • Mock execution for dry runs and predictable artifacts.
Out of scope today:
  • Web applications.
  • Desktop applications.
  • Rich assertion types beyond visibility checks.

Core building blocks

The product is organized around a small set of concepts.
ConceptWhat it means
TargetThe UI element or screen location Visor should act on.
ActionA direct operation such as tap, type, navigate, wait, screenshot, or source capture.
ScenarioA JSON document that defines a repeatable sequence of steps and optional assertions.
AssertionA rule checked after the steps finish. Today, visibility is the supported assertion type.
ArtifactA file written during or after execution, such as a screenshot, XML source dump, or summary report.
Determinism scoreA stability score that shows how often repeated runs produced the same signature.

Documentation map

Read the pages in this order if you are new to Visor: Use the reference section when you need exact field names, inputs, outputs, or error behavior:

What Visor returns

Every operation returns a structured response envelope. The envelope always tells you:
  • whether the operation succeeded or failed
  • when it started and ended
  • which artifacts were produced
  • what the next logical action is
  • which structured payload belongs to the operation
Longer flows such as scenario runs also write files to disk so the run can be audited after the fact.