Loupe CLI

A Swift CLI that shows an agent the live UI of an Apple app: view tree, accessibility, logs, network and tap verification.

  • 106 ★ on the repository
  • Last commit
  • MIT
CLI

Extended access

Why this level

  • The CLI injects a library into a running app, taps elements and temporarily changes UI properties in a simulator or debug build.
All reasons and checks

heoblitz/loupe

Install

Manual install

brew tap heoblitz/loupe https://github.com/heoblitz/Loupe.git

The first command of the Install section. Then `brew trust heoblitz/loupe`, `brew install loupe` and `loupe skills install` for the skill.

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • The CLI injects a library into a running app, taps elements and temporarily changes UI properties in a simulator or debug build.

This is third-party code. Review the repository files before installing.

What it does

Loupe is a Swift CLI with which an AI agent builds and verifies Apple platform app interfaces from the running program, not from source or a screenshot. Tools such as Xcode MCP and XcodeBuildMCP build, launch and test the app. Loupe adds the UI layer: structured data from the running copy. The `loupe app launch` command starts the app with an injected library, `loupe ui report` captures a report with the view tree, properties, accessibility, a screenshot, logs and network, and `loupe ui audit` checks layout, hit areas and design drift. `loupe act` taps, types and swipes with a before and after trace, and `loupe ui set` temporarily changes properties for probes. iOS, macOS, tvOS, watchOS and visionOS are supported. The skill installs with `loupe skills install`.

Who it is for. iOS and macOS app developers who fix UI with an agent and want to verify it on the running copy.

Good fit when

  • The pay button does not respond and the view tree, responders and hit areas are needed.
  • Layout is compared with a Figma design and drift is sought on the live screen.
  • The agent must tap an element by `testId` and see what changed in the tree before and after.
  • A color tweak is tried on the running app before source edits.

Not a fit when

  • You only need a builder and test runs: Xcode MCP or XcodeBuildMCP is enough.
  • The Mac has an Intel processor: Loupe supports Apple Silicon only.
  • The app is built with Hardened Runtime: library injection may be rejected.

Example request

Launch the app in the simulator with Loupe, capture a report and find why the pay button receives no taps.

Limitations

A Mac with Apple Silicon is required, Intel is not supported. Dynamic library injection may be rejected by Hardened Runtime or library validation, in which case `LoupeInjector` is linked into the build. WKWebView content is found by point sampling and can miss small and hidden elements, and physical devices do not support that discovery. Changes through `loupe ui set` are probes, so the result has to be applied to source and verified with a fresh report.

How to disable. Remove the package with `brew uninstall loupe` and delete the skill from the agent directory. Remove the `LoupeInjector` library from your build if you linked it.

FAQ

How do I install Loupe?

Run `brew tap heoblitz/loupe https://github.com/heoblitz/Loupe.git`, `brew trust heoblitz/loupe` and `brew install loupe`. The skill installs with `loupe skills install`.

How do I capture a UI report?

Launch the app with `loupe app launch --bundle-id <bundle-id> --device <simulator-udid> --inject`, then `loupe ui report --bundle-id <bundle-id> --output loupe-report`.

Which platforms are supported?

iOS in the simulator and on devices in debug builds, plus macOS, tvOS, watchOS and visionOS in simulators.

How do I tap an element and keep a trace?

Run `loupe act tap --udid <simulator-udid> --test-id checkout.payButton --trace-dir /tmp/loupe-tap`, then `loupe debug trace summary /tmp/loupe-tap`.

How is Loupe different from XcodeBuildMCP?

XcodeBuildMCP builds, launches and tests the app, while Loupe adds structured data from the running UI: the view tree, accessibility, hit areas and action traces.

Discussion

No questions or reviews yet.

CLI tools

A CLI that checks SwiftUI screens and runs iOS tests with no Simulator: agents read an accessibility tree and reload views in 2 s.

CLIExtended access52Repository stars

A CLI that shows an agent an iOS Simulator or Android emulator screen as a compact element list and taps elements by short alias.

CLIExtended access1.5KRepository stars

A skill with scripts for building iOS apps and driving the simulator through the accessibility tree, with compact output for agents

SkillExtended access1.3KRepository stars

Skills for Apple development: SwiftUI, UIKit and Liquid Glass references, Swift 6 guides and a router for iOS 26+ tasks

SkillMinimal access359Repository stars

An MCP server that drives a real iPhone through macOS iPhone Mirroring: the agent sees the screen, taps, swipes and types

MCP serverBroad access291Repository stars

The npx serve-sim command streams an iOS Simulator to the browser and lets an agent tap, swipe, type and replace the camera feed

CLIExtended access2.9KRepository stars

README in short

The repository holds the Swift CLI, the `skills/loupe/` skill with references, a sample app, documents on goals, status, tests, Figma comparison and Homebrew distribution. The license is MIT.

README badge

Report a problem