πŸ“± A whole phone inside a window β€” seven free ways, iPhone included

AI-generated summary

:bullseye: What you get: Run a complete Android or iOS phone directly inside a desktop window without hardware emulators.

:white_check_mark: Start here:

  • scrcpy β€” mirrors your physical Android to your desktop with zero lag.
  • Waydroid β€” runs Android inside a Linux container like a native app.

:toolbox: Also useful:

  • docker-android β€” streams Android inside a web browser via Docker.
  • vphone-aio β€” sets up an iOS virtual machine test environment.
  • UTM β€” runs full computer operating systems inside an iPhone.

:warning: Watch out:

  • Disable USB debugging on your phone after mirroring sessions to prevent unauthorized device access.

A whole phone inside a window β€” even an iPhone. :mobile_phone:

No device, no cable, no cloud bill. Seven free ways, grouped by what you are actually after.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ a window ─────────┐
β”‚  πŸ“± android 15              β”‚
β”‚     running in a tab        β”‚
β”‚  πŸ”‹ nothing to charge       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Android, for real
:robot: Waydroid Β· 12.4kβ˜… β€” real Android in a Linux container. Opens like an app instead of grinding like an emulator.
:spouting_whale: docker-android Β· 16.0kβ˜… β€” Android in Docker, watchable in the browser over noVNC. One command per version, all at once.
:cloud: redroid Β· 7.0kβ˜… β€” Android in the cloud, multi-arch, GPU on. Built for dozens of instances on one host.
:older_person: Anbox Β· 9.0kβ˜… β€” the original, and still the lightest. Kind to old machines.

The phone you already own
:mobile_phone_with_arrow: scrcpy Β· 153kβ˜… β€” mirror your real Android on the desktop. Five seconds, no root, no lag.

iOS, the honest version
:red_apple: vphone-aio Β· 7.9kβ˜… β€” one script β†’ a rooted iOS 26 virtual machine. A lab, not a daily driver.
:laptop: UTM Β· 36.5kβ˜… β€” the reverse trick: full computers running inside an iPhone or iPad.

Why a container beats an emulator

The one fact worth remembering: an emulator pretends to be hardware and eats a core. A container runs the real Android userspace on your real kernel β€” which is exactly why Waydroid feels instant and an emulator feels like 2014.

:pushpin: Own an Android? scrcpy first, it is the five-second win. Want a second phone for free? Waydroid.

7 curtidas

Start with scrcpy if you already own an Android phone, because it gives you a real device with your own apps and accounts instead of a fresh virtual setup. Before you mirror anything, enable USB debugging only for that session and turn it off afterwards, since leaving it on widens access to your phone. If you want a second phone for testing, try Waydroid on Linux first, and keep test apps separate from your banking and messaging apps. For browser-based testing, use a disposable account and avoid signing into anything sensitive, because a shared virtual device is easier to leave logged in by accident. Finally, check screen size, touch input, and file transfer in a short trial run before you rely on any of these setups for daily work.

This grouping helped a lot β€” I kept mixing up emulators and mirroring before, and now the choice feels clearer. If I already own the phone, mirroring it makes the most sense for a quick test, because I get my real apps and settings without setting up a second device. For a clean test phone, the container route sounds like the lighter path, especially on an older machine. My practical tip: do a five-minute trial first for touch, keyboard and file transfer, so you find out early if the setup fits the job you actually want it for.