simless CLI
A CLI that checks SwiftUI screens and runs iOS tests with no Simulator: agents read an accessibility tree and reload views in 2 s.
- 52 ★ on the repository
- Last commit
- Apache-2.0
Extended access
Why this level
- Builds and runs the app on the Mac, signing binaries ad hoc.
- `simless init` adds a host file to the app target project.
Install
- Works in
Manual install
git clone https://github.com/abacusai/simless && cd simless && swift build -c releaseThen link `.build/release/simless` into a directory on `PATH`. Requires Apple Silicon, macOS 15 and Xcode 26.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- Builds and runs the app on the Mac, signing binaries ad hoc.
- `simless init` adds a host file to the app target project.
This is third-party code. Review the repository files before installing.
What it does
`simless` runs the iOS app natively on a Mac as an invisible host, without booting the Simulator. An agent renders any screen as a compact accessibility tree (about 150 tokens per screen), gets checks for unlabeled controls, small tap targets and overlaps, and a PNG is made only on request. After an edit, `simless reload --render Settings` compiles a patch from the changed files and loads it into the running host. `simless test all` and `simless test ui` run unit tests and existing XCUITests. One host per git worktree lets several agents share one Mac. `simless skill install` installs a skill for Claude Code.
Who it is for. SwiftUI mobile developers whose several agents edit the interface at once and cannot each afford their own Simulator.
Good fit when
- An agent edits the settings screen and must see the result in seconds instead of waiting for a build and Simulator launch.
- Five agents work in separate worktrees and total memory must stay near 0.15 GB.
- Before a pull request `simless render all --matrix` shows every screen in light and dark on iPhone and iPad.
- CI on a GitHub-hosted macOS runner must run XCUITests with no Simulator.
- You want tap-target sizes and button labels checked straight in the render report.
Not a fit when
- The app is not SwiftUI or the project is not an `.xcodeproj`.
- You verify HealthKit, StoreKit purchases, photo pickers, the microphone or the Home Screen: these need the Simulator.
- You need iOS pixel accuracy: `List` and `Form` rows can be taller on Mac and the accent color differs.
Example request
Fix the Settings screen, run `simless reload --render Settings` and show the accessibility tree with tap-target warnings.Limitations
An Apple Silicon Mac with macOS 15 or newer and Xcode 26 or newer is required; no Simulator runtime is needed. The project must be SwiftUI in an `.xcodeproj`. Renders matched the Simulator within 2 points on 8 of 14 demo-app screens; the rest differ in `List` and `Form` row height, line breaks and accent color. Tests that need the Simulator are marked in `tests.simulatorOnly` and run with `simless test --simulator-only`. Installation is a build from source.
How to disable. Stop the hosts with `simless down`, remove the binary link and the `.simless.json` and `Simless/SimlessKit.swift` files from the project. Delete the skill from the Claude Code skills directory.
FAQ
How do I install simless?
Clone the repository, run `swift build -c release` and link `.build/release/simless` into a directory on `PATH`. `simless skill install` installs the skill.
What does `simless init` create?
A `.simless.json` file, the `SimlessKit.swift` render host (`#if DEBUG` only) and a fixtures file. The host does nothing unless simless launches the app.
Do I need a certificate or profile?
No. Since 0.6.0 hosts run unsigned and Xcode is enough. The signed Designed for iPad mode remains as a fallback.
How do I run UI tests?
With `simless test ui`: existing XCUITests run unchanged in hidden hosts. `simless test --simulator-only` lists tests that need the Simulator.
How much disk does the cache take?
Everything simless keeps across worktrees stays under 25 GB; `SIMLESS_DISK_LIMIT_GB` or a project `diskLimitGB` sets the cap. Recently used builds are kept.
Discussion
No questions or reviews yet.
Related
CLI toolsA CLI that shows an agent an iOS Simulator or Android emulator screen as a compact element list and taps elements by short alias.
The npx serve-sim command streams an iOS Simulator to the browser and lets an agent tap, swipe, type and replace the camera feed
A skill with scripts for building iOS apps and driving the simulator through the accessibility tree, with compact output for agents
A DeepSeek Harness plugin: iOS Simulator and a USB iPhone inside the chat, with 22 tools to drive them
An agent in an IDE or CLI runs iOS simulators and Android emulators, reads the screen, profiles and runs tests.
A Swift CLI that shows an agent the live UI of an Apple app: view tree, accessibility, logs, network and tap verification.
README in short
The project replaces the build, install into Simulator, screenshot loop with a native run of the app as a Mac Catalyst host. Results reach the agent as text.