Simulator sandbox

Run it on the phone.

Send UIKit or Foundation code to a real iOS simulator and get the value back in milliseconds, then look at the screen. The oracle says whether an API exists on your target; this says what it does. Below is recorded; one command makes it live on your Mac.

Facts the SDK only knows at runtime: name, OS, locale, a formatted price, the screen, the safe area.

snippet.js · async function body · rootVC, page, stage in scope
→ ok · 1ms · recorded 2026-08-16 on iPhone 17 Pro Max · iOS 26.5
{
  "device": "iPhone 17 Pro Max",
  "system": "iOS 26.5",
  "locale": "en_US",
  "usd": "$1,234.50",
  "screen": [
    440,
    956,
    3
  ],
  "safeAreaTop": 62
}
Simulator after: read the device

recorded 2026-08-16 · iPhone 17 Pro Max · iOS 26.5

Looking for a local session…

Two ways. Borrow a hosted simulator for twenty minutes, or run one command on your Mac: it boots a simulator, installs the sdk.run host app, serves a broker on 127.0.0.1, and this page switches to live, streamed here if SimDeck is installed.

or
npx -y @sdkrun/agent-runtime ios

hosted: a free, disposable GitHub macOS runner, twenty minutes, shared nothing · local: macOS with Xcode, nothing leaves your machine, and the same session serves your agent over MCP

How it works

The NativeScript runtime executes it. SimDeck shows it.

Host

A tiny app on the simulator

sdk.run host is a NativeScript app that evaluates each snippet in-process against the live SDK: real UIKit, real Foundation, real iOS 26. Results come back serialized; ObjC objects by their description.

github.com/sdkrun/host · Apache-2.0

Broker

One command on your Mac

@sdkrun/agent-runtime ios boots a simulator, installs the host, and serves 127.0.0.1:7331. Your agent uses the same session over MCP: run_snippet verifies every API against sdk.run and the simulator's iOS first, then runs it.

npx -y @sdkrun/agent-runtime ios · run_snippet · verify_snippet

Eyes

SimDeck

If SimDeck is installed the phone streams into this page, and your agent gets simdeck describe and simdeck screenshot to read what a snippet put on screen. Without it, the broker serves plain screenshots.

npm i -g simdeck · simdeck describe --format agent

Snippets run inside the host app on the simulator, brokered only over loopback. A local development tool for code you or your agent wrote; the broker is never exposed beyond your machine. Android emulator support is next.