NewiPhone Duo, live in your browser. Try it →
Vibeview
Pricing
Coding agents · No Mac

Claude Code iOS simulator on Windows or Linux, without a Mac

Rokas Kašinskas — Co-founder, VibeViewPublished 2026-10-23Updated 2026-10-23

A coding agent can write a new screen in seconds. Checking that the screen works is the slow part, because the agent needs a device it can see and touch. For iOS, that has meant a Mac with Xcode on the same desk. On Windows or Linux, or in the cloud, an agent has no simulator to drive.

VibeView removes that requirement. The simulator runs on a Mac we operate, and your agent drives it through a command-line tool or an MCP server (the standard way agents plug in outside tools). On a Mac, Claude Code Desktop also has a built-in simulator pane; see how the two compare.

What you need

  • A VibeView account. The free plan includes 30 streaming minutes a month in sessions of up to 5 minutes, which is enough to see the loop work. See pricing for longer sessions.
  • Node.js, and the VibeView CLI installed globally with npm install -g vibeview. Every vibeview command on this page assumes it.
  • A simulator or emulator build of your app. If you have no Mac to build for iOS, cloud builds compile React Native, Expo, Flutter, Capacitor, Kotlin Multiplatform and native Xcode or Gradle projects for you.

Set it up

  1. Sign in once. Run vibeview login. It prints a sign-in link and opens your browser, where you finish signing in. Do this step yourself, not through the agent, because you sign in with your own account in the browser.

  2. Connect your agent. Use the block for your client.

    Claude Code. One command installs the vibeview-agent skill (instructions that teach Claude Code the commands) and offers to register the MCP server:

    vibeview agent-setup

    The skill alone is enough if you let Claude Code run shell commands; the MCP server is optional. To register the MCP server by hand, run the same command the setup uses:

    claude mcp add vibeview -- npx -y vibeview mcp

    Cursor. Add this to .cursor/mcp.json in your project:

    {
      "mcpServers": {
        "vibeview": {
          "command": "vibeview",
          "args": ["mcp"]
        }
      }
    }

    Codex.

    codex mcp add vibeview -- vibeview mcp

    Codex’s default workspace-write sandbox turns network access off for the commands it runs. Set network_access = true under [sandbox_workspace_write] in ~/.codex/config.toml, or approve each command when Codex asks.

    VS Code with GitHub Copilot agent mode. Add this to .vscode/mcp.json:

    {
      "servers": {
        "vibeview": {
          "type": "stdio",
          "command": "vibeview",
          "args": ["mcp"]
        }
      }
    }

    Other agents. Agents that support skills can install the same skill with npx skills add vibeview/skills.

  3. Give VibeView a build. Upload one you already have, for example a zipped simulator .app with vibeview upload-app ./MyApp.zip. To make an iOS build with no Mac, build it in the cloud:

    vibeview build --cloud --platform ios

    The first time, the CLI asks for your build command and saves it as the development profile in vibeview.json. Swap ios for android, tvos or androidtv for the other platforms. A Roku channel is already a .zip package, so upload it as is. upload-app prints the app and build ids. For a cloud build, or to find them again later, run vibeview list-apps and vibeview list-builds <app_id>.

  4. Ask the agent to check its work. End the request with the check, for example “add the empty state to the cart screen and verify it on the device”. Without that last part, many agents stop once the code builds.

What the agent runs

With a shell, the agent uses the CLI. vibeview dev --detach --json starts a session in the background and prints a session_ready line with a session id and a link to a page showing the device. A typical run:

vibeview dev --detach --json
vibeview ui-tree
vibeview tap @e5
vibeview type "hello@example.com"
vibeview scroll-to "Delete account"
vibeview screenshot --out ./check.png
vibeview logs
vibeview dev-stop

ui-tree lists the elements on screen, each with a reference such as @e5 that other commands act on. After every action, the response says what changed on screen, so the agent doesn’t need to fetch the tree again between steps. screenshot is for how something looks, and logs is for why something broke.

Over MCP the tools have the same names with underscores: ui_tree, tap, scroll_to and so on. dev_start starts the session, dev_stop ends it, and upload_app sends a build, so a client with no shell can run the whole loop.

For your React Native app, vibeview dev connects the cloud device to Metro on the machine where the agent runs. A JavaScript change the agent saves reaches the device in about a second, with no rebuild. For a native or Flutter app, the agent opens a finished build without Metro, using the app and build ids from step 3:

vibeview dev --standalone --platform ios --app <app_id> --build <build_id> --detach --json

For a full example, read how an agent checked an Expo app on cloud phones and shipped it to TestFlight.

Android, Apple TV, Android TV and Roku

Start the session with --platform android, --platform tvos, --platform androidtv or --platform roku (over MCP, pass the platform to dev_start). Reading the screen, typing, screenshots, logs and stopping work the same everywhere. press back works on every platform, and on Android press recents opens the Recent apps screen.

On a TV, the agent moves focus instead of tapping. It presses the remote with press (dpad_up, dpad_down, dpad_center on Apple TV and Android TV; up, down, select on Roku). focus @e42 walks focus to an element, and tap-focused @e42 walks there and selects it. After each of these, the response names the element that now has focus. On Roku, touch commands such as tap, swipe and scroll-to are refused with a message naming what to use instead. A Roku session runs on a physical Roku that we stream to you. The Roku guide covers how to package a channel and reload it after each edit.

Watch the session and step in

Ask your agent to hand you the session link as soon as session_ready arrives. The page shows the live device, and you can tap it yourself at any moment. With the skill installed, the agent stops and asks you when a screen needs a person, such as signing in to a real account, a 2FA code, a CAPTCHA or a risky confirmation. Do that part in the browser and tell the agent you’re done. It reads the screen again before going on.

An agent’s session uses streaming minutes for as long as it runs, like any other session. Reading the screen doesn’t count as activity, so a session where the agent only reads still ends after your organization’s idle timeout. Have the agent run vibeview dev-stop (or dev_stop) when it’s finished.

Running the agent in the cloud

A cloud agent has no browser to finish vibeview login. Instead, an admin of your organization creates an API token under Settings > API token with Full access, and you set it as the VIBEVIEW_API_TOKEN environment variable where the agent runs. A CI only token can’t open live device sessions, so it won’t work here. The environment also needs network access to reach VibeView. Everything else on this page stays the same.

Per-client pages

  • Claude Code: the skill, the Claude Code plugin and the full command list.
  • Cursor: a .cursor/mcp.json you can commit for your team, and AGENTS.md.
  • Codex: codex mcp add and the sandbox network setting.

If you have a Mac

Claude Code Desktop has its own iOS Simulator pane, in public beta on macOS (checked October 23, 2026). It is a good option when you sit at a Mac. Its documentation lists three limits that matter here:

  • It needs a Mac and Xcode with the iOS platform installed, because Apple’s simulator runs only on macOS.
  • It shows simulated iPhones and iPads. Android, Apple TV, Android TV and Roku are not part of it.
  • It works in local sessions only. In cloud and SSH sessions, Claude runs on a machine that can’t reach the simulators on your Mac.

VibeView runs the device in the cloud instead, so the setup above works without a Mac, from cloud agents, and on Android, Apple TV, Android TV and Roku as well as iOS.

Frequently asked questions

Can Claude Code use an iOS simulator on Windows? Not a local one, because Apple’s simulator runs only on macOS. Claude Code on Windows can drive a cloud iOS simulator through the VibeView CLI or MCP server.

Does this work with Codex and Cursor? Yes. Both can run the CLI or use the MCP server. Codex needs network access turned on for the commands it runs, or your approval for each one.

Can the agent use an Android emulator too? Yes. Start the session with --platform android. The commands are the same, and press recents opens Android’s Recent apps screen.

Can the agent save what it checked as a test? Yes. Over MCP it can write a test with create_test and run it with run_test; a test’s first run uses AI testing (beta). See running tests over MCP.

Try it yourself

Open a live iOS simulator, Android emulator, Apple TV, Android TV or Roku in your browser.

Start free