Why we built Agentfy on real iPhones, not emulators
Emulator detection is a moving target. Real hardware isn't. Here's why every Agentfy macro runs on physical iPhones via TrollStore.
By evil0ctal
When we started building Agentfy, the first architectural fork was obvious in hindsight but not at the time: emulators or real hardware?
The pull of emulators is real. Provision instances on demand, snapshot state, replay test cases deterministically, scale horizontally without buying anything. Genymotion has a whole business on it.
We picked real iPhones. Here’s why.
The third-party app problem
Phone farms — the largest use case driving Agentfy — almost always target apps the operator doesn’t own. TikTok, Xiaohongshu, banking apps, ad platforms, exchange clients.
These apps treat emulator detection as a first-class adversarial problem. They sample timing, GL fingerprints, sensor noise floors, TLS fingerprints, IORegistry quirks, kernel-extension presence. They have whole teams whose KPI is “raise the cost of fake users.”
Emulators bring that cost back down to zero. Until the next detection update lands, anyway, and then you’re rebuilding from scratch.
Real hardware sidesteps the problem entirely. An iPhone running an Agentfy daemon is identical, byte-for-byte, to the iPhone in your pocket. The TLS fingerprint matches. The sensor noise matches. The kernel matches. There’s no “tell.”
The cost of being honest
Real hardware costs real money. An iPhone SE is $200; an iPhone 15 Pro is $1000. You can’t burst-allocate them. They need physical storage, charging, network. You can’t ssh into them.
We took that cost on the chin and worked around it:
- TrollStore + daemon instead of jailbreak. Lower friction, no warranty void in practice for operators using devices they own.
- Reverse tunnel so each device opens an outbound WebSocket to the dashboard — no port forwarding, no static IPs.
- VNC mirror so the operator’s browser is the only client; no client app to install, no version drift.
What you give up
Determinism, mostly. Real devices have:
- WiFi quality variance. A 700ms screenshot RPC on a flaky AP feels worse than a 50ms one on a wired emulator.
- Battery + thermal effects. A hot phone runs slower; a cold phone takes longer to wake from sleep.
- iOS update churn. Each iOS release is a new debugging surface.
We accept all three because the alternative — getting flagged as a bot inside the apps that matter — is much worse.
What you get
- No emulator-detection arms race.
- Real device IDs. Captcha challenges that assess “is this a real phone with usage history” get a true-positive answer.
- Multi-app realism. Browser history, photo libraries, contacts — whatever you put on the phone is just there.
- Genuine network exposure. Same WiFi, same carrier, same geo. No “spoof everything” config.
If you’re testing your own iOS app for QA, Genymotion or Appium are fine. If you’re operating a phone farm or running mobile AI agents at scale, real iPhones are the only honest answer.
Want to try it? Start a free 7-day trial.