simless

Runs your iOS app natively on the Mac so agents can check SwiftUI screens and run tests without booting a simulator.

View on GitHub ↗
Stars
★ 26
Last commit
18 Oct 2026
Maintenance
Active
Licence
Apache-2.0
Category
Agent Skills
GitHub
abacusai/simless

Overview

simless from Abacus.AI lets coding agents check SwiftUI screens without booting the iOS Simulator. It renders registered screens headlessly and runs unit tests inside your real app process, which is much faster than building, installing and launching on a simulator. The README describes it as a fast inner loop, not a replacement for full testing.

Features

  • Renders registered screens in a fixed state as an element tree or image
  • Runs unit tests in your real app process against Apple's iOS frameworks
  • Hot reload for views in the app target or local Swift packages
  • simless test can act as a merge check
  • Configurable checks such as minimum tap target size
  • Supports parallel worktrees on one Mac and cleans up after itself

Requirements

  • An Apple silicon Mac with Xcode 26 or later
  • A SwiftUI iOS app in an .xcodeproj with an app-hosted unit test target
  • An Apple Development certificate and the team's wildcard development profile including this Mac
  • Full Disk Access for SimlessAgent if you use live reload

Install

  1. Build and link the binary, and optionally install the Claude Code skill

    git clone https://github.com/abacusai/simless && cd simless
    swift build -c release
    ln -s "$PWD/.build/release/simless" ~/.local/bin/simless
    simless skill install
  2. Set up each app repository once, then register the screens to render

    simless init

Example

After changing a view, the agent runs simless render on that screen instead of booting a simulator, and checks the labels and layout in the result.

Works with

Claude Code

Listed in

swiftskills.dev

Read the code before you install anything. SwiftAgents doesn't review or endorse the tools listed here. Active: a commit in the last 90 days. Slowing: last commit within the past year. Stale: older than a year, or archived.

More in this category