Skip to content

How Astra Scout works ​

See how the macOS app, local server, and device drivers fit together on your Mac.

Astra Scout is made of a few cooperating pieces, all running on your Mac.

Astra Scout macOS app (native, SwiftUI / AppKit)
        │  HTTP / SSE on localhost:5050
        ▼
astra-scout-server (Go)
        │
        ├── maestro-runner ──► WebDriverAgent ──► iOS Simulator / real iPhone
        │                  └─► DeviceLab driver ─► Android emulator / device
        ├── xcuiax (Swift) ► iOS Simulator UI tree (iOS 27+)
        ├── devicehid (Swift) ► direct touch on a real iPhone (optional)
        └── your AI CLI (Claude Code / Codex / Gemini CLI), read-only

The app ​

The app is a native macOS app. Its window holds the navigator (files, find, runs), the code editor with the test runner below it, and an inspector with the device screen and the AI assistant. Settings, Explore app and bug reporting open from the menus and in their own windows. The app starts the bundled server itself.

The server ​

astra-scout-server is a Go server that listens on port 5050. It exposes the same API shape as the original Maestro Studio, plus extras for the AI features, Jira and tracking. It owns device connections, runs flows, stores run history and serves the MCP endpoint that AI CLIs use (http://localhost:5050/mcp).

If port 5050 is busy, the app starts the server on another port and writes the real URL to ~/.astra-scout/mcp.json.

The runner ​

Flows run through maestro-runner. On iOS it drives the device through WebDriverAgent (WDA); on Android it uses the DeviceLab driver. The first time you connect an iOS device, maestro-runner builds WDA, which takes about 3 to 10 minutes. Later connections reuse the build.

Screen mirroring ​

DeviceHow the screen reaches the app
iOS SimulatorThe app renders it in-process through Xcode's SimulatorKit; input goes through devicehid
Real iPhoneCoreDevice media stream (HEVC), wired or Wi-Fi
Androidscrcpy-based H.264 stream, with a screenshot-based fallback

Where your data lives ​

WhatLocation
Server log~/Library/Logs/Astra Scout/server.log
App data (database, MCP token, Team ID)~/Library/Application Support/Astra Scout/data
WDA builds~/Library/Application Support/Astra Scout/maestro-runner
Flow videos<workspace>/artifacts/runs/
Plugin copy used for AI CLIs~/.astra-scout/plugin

Nothing is sent to a cloud service. The only network calls beyond your machine are the ones you start: your AI CLI talking to its provider, and Jira when you confirm a bug report.

Verdicts are computed by the app ​

The AI never decides whether a run passed. Astra Scout computes the verdict from structured facts such as step results and driver errors. See Run flows.