Claude Code streams cloud iOS simulator into browser via serve-sim
Levelsio used Claude Code on a VPS to SSH into a cloud Mac Mini, build an iOS app headlessly, and stream serve-sim into a browser. Follow-up posts documented the tunnel and serve-sim setup, making the workflow reproducible for remote iOS testing.

TL;DR
- Claude Code built the Nomads iOS app through a remote chain: Hetzner VPS to MacinCloud Mac Mini to Xcode, as levelsio's setup post and his first build result described.
- serve-sim turned the headless simulator into an interactive browser session over an SSH tunnel, according to levelsio's serve-sim demo.
- The app stayed native Swift: an early levelsio reply said he was going "full native with Swift," and a stack reply named "Native Swift."
- Claude Code also touched the web backend, with levelsio's profile-page update saying it created an /api route that fed native Swift elements.
- The cloud workflow was deliberately local-free, with levelsio's VPS post citing battery and deploy speed while his setup post put half the work on iPhone or MacBook via SSH.
Claude Code's weird little superpower here was location. The named stack was Anthropic's Claude Code, a MacinCloud Mac Mini, SSH, Xcode, and Termius. serve-sim was the payoff in levelsio's demo: a browser-hosted iOS simulator that made the cloud-built app feelable instead of screenshot-only. A clarification from levelsio described the setup as Claude Code on a Hetzner VPS SSHing into a headless cloud Mac, with no GUI on the Mac itself.
Cloud Mac build chain
levelsio's chain was simple enough to diagram:
- Claude Code ran on a Hetzner VPS.
- It received credentials for a rented MacinCloud Mac Mini.
- It SSHed into the Mac and used Xcode there.
- It scaffolded a SwiftUI project under
/srv/nomads-ios. - It sent back screenshot proof from an iOS simulator.
The terminal screenshot in levelsio's setup post shows Claude writing project.yml, NomadsApp.swift, and ContentView.swift, plus tasks for scaffolding the native SwiftUI app and building it in the remote simulator.
He avoided owning another Mac; in levelsio's ownership reply, he put the preference bluntly: "I hate owning stuff."
serve-sim in the browser
serve-sim replaced screenshot proof with a streamed simulator. In levelsio's demo, he said Claude previously made pages with screenshots, then serve-sim let him interact with the app through localhost tunneled back to the Mac Mini.
The setup came from Jordan's tip: levelsio's earlier reply is the "gonna try" moment, and the later demo credits Jordan after it worked.
Asked whether setup was complex, levelsio's reply answered: "Everything was extremely easy!!!"
Native Swift loop
levelsio chose native iOS. An early levelsio reply said he was following Marc Kohlbrugge's push to go "full native with Swift," and a later levelsio reply said AI made that route easy.
First proof arrived in the basic build post: a full-Swift Nomads.com city list running in the iOS simulator. The stack answer stayed blunt in his native Swift reply: "Native Swift."
The follow-up video in levelsio's Swift demo showed the prompt-to-code loop turning Swift into a running simulator demo.
Server API into native UI
Because Claude Code ran on the same server as the Nomads site, levelsio's profile-page update says it built an /api route and used that data inside native Swift elements.
The profile page update moved the app beyond the first city-list run into server-backed profile data: trips, countries, distance, cities, map paths, and member metadata.
VPS-first development
levelsio's broader rule was already server-side coding. In levelsio's VPS post, he framed the trade as battery and deploy speed: local coding costs battery, while server coding skips a separate deploy.
The iOS build followed that rule. In levelsio's MacinCloud setup post, he said he wanted to work from his iPhone without carrying a 16-inch MacBook Pro, and one Termius reply named Termius as the SSH client.
In his WIP reply, he described the file flow as constant changes rather than separate WIP files. Another reply compressed the speed gain to one line: levelsio said Claude Code on a VPS made him "so fast."
Apple account, latency, quota
Device distribution had not entered the loop yet. In levelsio's Apple Developer reply, he said he did not have an Apple Developer account.
Typing through the remote path added latency, although his latency reply called it "some latency typing but not a lot."
Cloudflare's email quota also got hit during the same build stretch. The quota post showed 10,000 of 10,000 daily emails used, and the thread follow-up said Cloudflare upgraded the limit to 50,000 daily.