Your iOS Simulator, from the terminal

elstar.

See. Drive. Debug.

Inspect the screen, capture HTTP traffic, and hot-reload code in a running app. Use the same tools from your terminal or your AI agent.

$ curl -fsSL https://elstar.dev/install.sh | bash

Free for seven days, starting on first use. No signup, no card.

Signed & notarized. Requires macOS 15+ and Xcode 27.1 or later.

$ elstar net com.example.app
 
  POST https://api.example.com/v1/login
  ← 200  142ms  89 bytes
  body:
    { "token": "[redacted]", "user_id": 4821 }
 
  GET  https://api.example.com/v1/feed
  ← 500  891ms  24 bytes ← agent catches this
  body:
    { "error": "internal_server_error" }
$ elstar hot FeedService.swift --once
  building FeedService.swift
  ✓ reloaded
$ elstar eval com.example.app "1 + 1" --swift
 
  → 2

Illustrative output with a fictional app. Replace the bundle ID and source file with your own.

A shorter path from symptom to fix.

No SDK required

Inspect a running simulator app without embedding an SDK. Debugger-based commands need an app that allows attachment; Swift evaluation also depends on its debug information.

Hot reload, no rebuild

Reload supported Swift and Objective-C edits in your running simulator app. Iterate on a screen without a full app rebuild.

HTTPS without certs

Capture network traffic without proxy setup or certificate installation. Injects at the URLSession level, sees real traffic.

XCUITest generation

Start from the current screen. uitest --gen produces an XCTest scaffold you can review and extend with meaningful assertions.

Run code in the live app

Evaluate Swift or Objective-C in the running process with eval. Read live instance state, call methods, change values — no rebuild.

Headless previews

Render any #Preview in your app to a PNG with preview, without opening Xcode or launching the app. --list shows every preview in the module.

See what changed

diff compares the screen with a saved screenshot or your last check and shows how many pixels changed and where; --fail-on-change exits with 1 for CI. break stops on a function or Objective-C exception in the running app and prints a backtrace for every hit.

AI-native

40 MCP tools, 4 skills, a chained post-edit hook. First-class agent support out of the box. No glue code, no shell parsing.

From inspecting a screen to testing a fix.

netIntercept and inspect HTTP/HTTPS traffic, export HAR
mockMock or record HTTP responses
evalEvaluate Swift or Objective-C expressions in a live app
hotHot reload a Swift/ObjC file, XIB, or asset without rebuilding
vhDump the UIKit or SwiftUI view hierarchy
ivarRead live instance variable values for a class
respondersWalk the responder chain
breakStop on a function, Objective-C method or Objective-C exception and stream a backtrace for every hit
stateScreen snapshot: app, elements, and screenshot in one call
elementsList tappable elements with coordinates
axFull accessibility tree with hit testing
screenshotCapture the simulator screen
previewRender a #Preview to a PNG without opening Xcode or launching the app
diffCompare the screen with a saved screenshot or your last check, and see where pixels changed
tapTap by label, identifier, or coordinate
swipeSwipe gestures with configurable speed
dragDrag with configurable hold time
typeType text into the focused field
buttonPress hardware buttons (home, lock, siri)
keySend keyboard key events
uitest --genGenerate an XCTest scaffold from the current screen
waitWait for an element to appear
assertVerify element presence
bootBoot a simulator by name
shutdownShut down the booted simulator
devicesList all simulators and their state
appearanceSwitch between light and dark mode, or read the current mode
statusbarSet a fixed time, signal and battery for screenshots, then clear it
containerFind an app's bundle, data folder or app-group locations
capabilitiesList the commands in your build and whether each is declared verified for simulators and devices
mcp installConfigure MCP server for Claude Code or Cursor
mcpStart MCP server (40 tools over stdio)
hook installReload app Swift files after agent edits (Claude Code or Codex CLI)
hook install --all+ accessibility checks for changes introduced by the edit
skills installInstall /ios-setup, /ios-test, /ios-audit, /ios-debug

Your agent's debugger.

40 MCP tools. 4 skills. A post-edit hook that hot-reloads your agent's edits. One install command. Let your agent inspect and interact with a running simulator app.

40 MCP Tools

40 runtime operations exposed as structured tools — tap elements, capture traffic, evaluate expressions, read runtime state. No shell, no parsing. Works with Claude Code, Cursor, or any MCP client.

4 Skills

Slash-command workflows your agent runs directly — not just tools, but the proven sequences of them. Install with elstar skills install.

Post-edit Hooks

Runtime feedback your agent gets automatically after each edit — no need to ask.

Claude Code and Codex CLI. Codex requires project and hook trust.

/ios-setupBootstrap a session — detect the running app, install hooks, establish project context
/ios-testWalk a flow live in the simulator and generate the XCUITest code for it
/ios-auditAccessibility & UI quality — missing identifiers, tap-target sizes, element overlap
/ios-debugDiagnose a bug — capture screen state, network traffic, and runtime data
hook install --target codex --allInstall the chained post-edit hook for Codex CLI
hot-reloadEdit an app Swift file → elstar reloads it into the running app
a11y-auditCompares accessibility before and after a successful reload and reports new findings

Install. Run your app. Start driving.

1
Install
curl -fsSL https://elstar.dev/install.sh | bash

Signed & notarized; the installer verifies the checksum and signature. Requires macOS 15+ and Xcode 27.1 or later.

2
Start your free trial
elstar devices

No signup or card required. Connect for first use, then use your trial offline. After seven days, activate a purchased key with elstar license activate <key>.

3
Run your app in Simulator
elstar apps

Build and run your app from Xcode on an iOS Simulator. With multiple simulators running, add --device <udid> to select one explicitly.

4
See the screen
elstar state

App info, screen size, tappable elements, and a screenshot — in one call.

5
Drive it
elstar tap "Login"  ·  elstar type "hi@example.com"

Tap, swipe, type, and assert — by label or coordinate.

6
Give your agent access
elstar mcp install

Wires the 40 MCP tools into Claude Code or Cursor. Add skills & hooks with skills install / hook install --all.

Try it free for seven days, then $69 a year.

$69/yr
One developer, two machines
  • Seven-day free trial, no card needed
  • All commands, MCP tools, skills & hooks
  • New features as they ship
  • Cancel anytime
Get a license

$69/year after the trial — cancel anytime. Your license key arrives by email; activate it with elstar license activate <key>.

A few practical answers.

Does elstar work on a physical iPhone?

The current release supports the iOS Simulator. Physical-device support is in development and is not part of the released command set.

Do I need to change my app?

You do not need to embed an elstar SDK. Run your app in Simulator to inspect and interact with its screen. Commands that attach a debugger require an app that permits attachment; evaluating Swift app types also requires suitable debug information.

Can I use it without an AI agent?

Yes. Run commands directly in your terminal. MCP, skills and post-edit hooks are optional integrations.

Which Xcode versions are supported?

elstar 1.1.0 requires Xcode 27.1 or later. Simulator input (taps, swipes, drags, hardware buttons and key presses) is not supported on Xcode 27.0, and elstar says so instead of sending the input.

I script against --json. What changed in 1.1.0?

Some keys were renamed so every command spells them the same way. mock --json and apps --json now name the app bundle_id (it was bundleID), update --json reports update_available and upgrade_command, and a sent feedback --json answers {"command":"feedback","id":…} without ok. Scripts that read the old names need updating. The full list is in the release notes.

Is a license required before I can use it?

No. Your free seven-day trial starts on first use, without signup or a payment card. Internet is required to start or recover a missing trial receipt; subsequent trial use works offline. Deleting local data does not restart the trial. Afterward, a license costs $69/year for one developer on two machines; activate it with elstar license activate <key>.

How do I install hooks for my coding tool?

For Claude Code, run elstar hook install --all in your app project. For Codex CLI, use elstar hook install --target codex --all, then review and trust the project and hook in Codex. Reinstall hooks after upgrading to pick up changes to the generated script.

Elstar is a Danish-Dutch Apple variety, a cross between Golden Delicious and Ingrid Marie. Small, sharp, surprisingly versatile.