Who Simutil is for#
Mobile developers testing across Android and iOS
SimUtil replaces the daily habit of keeping Android Studio and Xcode open just for device management. Boot devices with one keypress, pair physical Android devices wirelessly, and check Logcat output from the same TUI session. The multi-device grid in the desktop app helps verify that a UI change renders identically across screen sizes.
Skip if:
Teams that run all mobile testing in cloud device farms (BrowserStack, Firebase Test Lab) and do not maintain local emulators. SimUtil is for local development workflows, not cloud-hosted test infrastructure.
AI-assisted mobile development with Claude Code or Cursor
The desktop app's MCP server lets AI coding agents list, launch, tap, swipe, screenshot, and record devices without writing custom device automation code. Agents can verify a UI fix by taking a screenshot of the changed screen rather than relying solely on code inspection.
Skip if:
Projects that do not use AI coding agents with MCP support. The MCP server is a desktop app feature; if you work only with the CLI/TUI, this use case does not apply.
Flutter and Android developers debugging with Logcat
The TUI's Logcat view streams filtered output directly from the selected emulator or device, removing the need for a separate terminal window running adb logcat. Custom plugins can launch scrcpy, Maestro, or any external ADB tool on the selected device with a single keypress, reducing context switching during debugging sessions.
Skip if:
Developers who already have an IDE with integrated Logcat (Android Studio, IntelliJ with the Android plugin) and prefer to stay within the IDE during debugging. SimUtil's value is terminal-first workflows.
Teams running cross-device smoke tests with YAML scenarios
The scenario studio in the desktop app runs YAML-defined sequences (tap, swipe, type, assert) across multiple simulators and emulators at once, showing each step's live status. Useful for teams that want lightweight visual smoke tests without setting up a full Appium or XCUITest suite.
Skip if:
Projects that already run Appium, Espresso, or XCUITest suites. Those frameworks provide deeper assertion models and CI integration; SimUtil's scenario studio is complementary for visual checks, not a replacement.
The problem it solves#
Mobile developers testing across Android and iOS spend time on device management friction unrelated to their actual code. Opening Android Studio solely to boot an emulator means waiting for a full IDE to load. Testing on three or four devices requires switching between Android Studio's AVD Manager, Xcode's simulator list, and separate terminal sessions for ADB commands and Logcat output. Pairing a physical Android device over Wi-Fi involves running adb pair commands each time.
Teams that adopt AI coding agents face an additional gap. Claude Code, Cursor, and Codex can read and modify code, but without a way to interact with a running device, those agents cannot confirm that a UI change renders correctly or that a navigation flow works as expected.
How it solves it#
One-key device launch from the terminal
The TUI lists all available Android emulators and iOS simulators in one view. Press Enter to boot any device without touching Android Studio or Xcode. Android devices support Normal, Cold Boot, No Audio, and Cold Boot plus No Audio launch options from the same interface.
Multi-device streaming and control
The desktop app (preview) streams and controls many Android emulators, physical devices, and iOS simulators in a grid or spotlight layout. Each stream gets touch, swipe, and navigation controls. Records one device or the full grid at native resolution (60 fps on macOS). No scrcpy install required; the app ships its own scrcpy server.
YAML scenario runner across devices
Write test scenarios in YAML (tap by label, swipe, type text, assert UI state) and run them on multiple devices simultaneously, watching each step's live status. Useful for lightweight smoke tests during development without setting up a full Appium or Maestro infrastructure.
MCP server for AI coding agents
The desktop app exposes an MCP server that lets Claude Code, Codex, and Cursor list, start, stream, tap, swipe, screenshot, and record devices directly from the agent. AI agents can verify mobile UI changes without a separate device automation layer. The full CLI JSON schema is available at `simutil schema`.
Wireless ADB for physical device pairing
Connect physical Android devices over Wi-Fi using a QR code, a six-digit pairing code (Android 11+), or a direct IP address. The TUI handles the pairing flow interactively, removing the need to remember adb pair or adb connect command syntax.
YAML plugin system for external tools
Add external CLI tools (scrcpy, Maestro, custom scripts) to SimUtil via a plugins section in `~/.simutil/settings.yaml` without modifying the source. Each plugin defines commands, can filter by platform (Android or iOS) and device state, supports `{device.id}` template variables, and can bind to a single-key shortcut.
Strengths and trade-offs#
Strengths
- MIT license with no licensing feeSimUtil is MIT licensed, covering both the CLI/TUI and the desktop app. You can run it on any developer workstation or integrate it into CI workflows without a licensing fee. Unlike Genymotion, which charges for commercial team use, SimUtil has no per-seat or per-use cost beyond the infrastructure you already own.
- Ships its own scrcpy serverThe desktop app bundles its own scrcpy server, so you can stream and control Android devices without installing scrcpy separately. On macOS, the Homebrew cask pulls in adb and ffmpeg automatically. On Windows, the installer offers to install Android platform-tools and FFmpeg alongside the app.
- Active development, low open-issue countThe repository was created in February 2026 and last pushed to in October 2026, with 1,187 stars and 133 forks accumulated in under a year. Three open issues is a low support burden for a tool that covers ADB, Logcat, multi-device streaming, and an MCP server. The YAML plugin and MCP server were added as recent features, indicating active feature development.
- Runs on macOS, Linux, and WindowsBoth the CLI/TUI and the desktop app run on all three major operating systems. iOS simulator support requires macOS and Xcode, as Apple's xcrun simctl is macOS-only, but Android emulator management and ADB tooling work identically on Linux and Windows.
Trade-offs
- -Desktop app is a preview releaseMulti-device streaming, the scenario studio, and the MCP server are in the desktop app, which is still marked as preview. Preview software may have incomplete features, interface changes, or undocumented stability issues. For teams that need a stable tool for production workflows, the CLI/TUI is the mature component; the desktop app warrants evaluation before committing to it.
- -iOS support requires macOS and XcodeiOS simulator management depends entirely on Apple's xcrun simctl and xcrun devicectl tools, which are only available on macOS with Xcode installed. Developers on Linux or Windows cannot use SimUtil for iOS simulators. Teams with Linux-only CI environments cannot use SimUtil for iOS device workflows.
- -Dart and Flutter required to extend the coreSimUtil is a Dart and Flutter project. Contributing to it or building integrations beyond the YAML plugin system requires Dart and Flutter SDK knowledge. Developers who want to modify core behavior will need to install the Flutter SDK and work within a Dart monorepo structure.
Simutil vs alternatives#
SimUtil vs Genymotion
Genymotion is a commercial Android emulator platform aimed at development and QA teams. SimUtil covers both Android emulators and iOS simulators under an MIT license, making it a broader local device management tool.
| Feature | SimUtil | Genymotion |
|---|---|---|
| License | MIT | Proprietary (free personal, paid commercial) |
| iOS simulator support | Yes (macOS only) | No |
| Android emulator support | Yes | Yes |
| Multi-device streaming | Yes (desktop app, preview) | Yes (paid tiers) |
| MCP server for AI agents | Yes (desktop app) | No |
| Cost | Free | Free personal, paid commercial |
SimUtil is the better choice when you need iOS and Android management in one tool, when you want MCP integration for AI coding agents, or when your team needs commercial use without licensing fees. Genymotion is worth considering when you specifically need Android-only emulation and are already integrated with Genymotion's cloud testing platform.
Compared to IDE-integrated device managers
Android Studio's AVD Manager and Xcode's simulator list are the default ways most developers launch emulators and simulators. Both are free but tightly coupled to their parent IDEs. Opening either IDE just to boot a device adds load time and context switching that SimUtil removes.
SimUtil does not replace Android Studio or Xcode for development work. It replaces the specific habit of opening them for device management. The two coexist: use SimUtil to manage devices and run Logcat; keep the IDE open for build, debug, and editing.
Quick start#
Install the CLI/TUI with Homebrew on macOS or Linux.
```bash
brew tap dungngminh/simutil
brew install simutil
```What it's built on#
- Languages
- C++DartSwift
FAQ#
Does SimUtil work on Linux and Windows?
Yes, the CLI/TUI and desktop app run on macOS, Linux, and Windows. iOS simulator support is macOS-only because it depends on Apple's Xcode tools. On Linux and Windows, SimUtil covers Android emulators and ADB-connected physical devices.
Do I need to install scrcpy separately to use the desktop app?
No. SimUtil Desktop ships its own scrcpy server so you do not need a separate scrcpy installation. On macOS, the Homebrew cask pulls in adb and ffmpeg automatically. On Windows, the installer offers to install Android platform-tools and FFmpeg alongside the app.
How do I add custom tools like Maestro or scrcpy to SimUtil?
Use the YAML plugin system in ~/.simutil/settings.yaml. Each plugin entry defines a command, its arguments with {device.id} template variables, which platforms it applies to (Android or iOS), and an optional single-key shortcut. No source-code changes are needed. A default settings file is created on first launch with a scrcpy example already included.
Can AI coding agents like Claude Code control devices through SimUtil?
Yes, the SimUtil Desktop app exposes an MCP server that allows Claude Code, Codex, Cursor, and other MCP-compatible agents to list, start, stream, tap, swipe, screenshot, and record devices. The server is documented in app/README.md. The simutil schema CLI command prints the full JSON schema for all commands.
Is SimUtil free for commercial use?
Yes. SimUtil is MIT licensed, which permits commercial use, modification, and redistribution without restriction. Both the CLI/TUI and the desktop app are covered by the MIT license; see the LICENSE file in the repository for the full terms.
Similar open-source tools#
Termux App
Linux terminal and package manager for Android devices.
Nvm
Switch Node.js versions per shell with a single bash command
Arrmada
Movies, TV, books and requests in one app, arr stack included
Deviload
yt-dlp desktop app with media library, player, and editor
Rust
Systems language with memory safety and no garbage collector.
Fm Dx Webserver
Self-hosted web interface for controlling FM/DX radio receivers

