mrkeyoor.com_
Wed 30 Sept 06:09 UTC
AI Toolsevaluationupdated 30 Sept 2026

mobilecode review

MobileCode is a fork of the OpenCode coding agent that adds iOS Simulator and Android Emulator controls beside the chat session. It can detect a mobile project, build and install it, stream the virtual device into the app, and return compiler or Gradle errors to the agent.

Verdict

Our MobileCode install took 94 seconds, added 2,362 packages, and used 2,470 MB, while the root test command deliberately refused to run package tests. The embedded device pane is a useful addition for a mobile developer who already wants OpenCode and has both native toolchains working. Everyone else should stay with upstream OpenCode and let Xcode or Android Studio own the device lifecycle until this young fork develops clearer root-level build and test gates.

We ran it

Lab card: what happened when we ran mobilecodeScreenshot of mobilecode (github.com/hsandhu/mobilecode)
Install✓ · 94s2362 packages · 2470 MB
Buildn/ano build script
Tests✗ · 22sran, no count parsed
Repo6595 files~694,154 lines of source · 135 MB · 28 CI workflows

Answers from our run

Does mobilecode build from source?

Dependencies installed in 94 seconds (2362 packages), and the project has no separate build step. We cloned commit fd219df into a clean Debian container with 3 CPUs and no project-specific setup.

Do mobilecode's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use mobilecode?

iOS developers working from Linux or Windows: iOS preview requires macOS and Xcode.

What are the alternatives to mobilecode?

OpenCode, Codex, Cline. Our MobileCode install took 94 seconds, added 2,362 packages, and used 2,470 MB, while the root test command deliberately refused to run package tests.

Setup2/52,470 MB install plus Xcode or Android SDK setup
Docs4/5Clear device lifecycle, endpoints, requirements, and build steps
Community2/5239 stars and one open issue on a September 2026 fork
Maturity2/5Recent fork with active releases but little independent history

Who it’s for

React Native developers who regularly switch between an AI coding session, Metro, Xcode, and Android Studio.
Native mobile teams that want an agent to launch a build and read its failure log through one tool call.
Existing OpenCode users who want to retain their provider settings, plugins, skills, and MCP setup.
macOS developers who need both iOS and Android previews in the same desktop workspace.

Who it’s NOT for

iOS developers working from Linux or Windows: iOS preview requires macOS and Xcode.
Teams expecting the repository root to be a one-command quality gate: its root test script deliberately exits with an error, and our runner found no root build target.
Small installations: our Bun setup pulled 2,362 packages and occupied 2,470 MB.
Mobile projects without a working native toolchain, compatible JDK, Android virtual device, or shared Xcode scheme.
Teams that need a broadly proven fork: the repository was created in September 2026 and had one open issue when checked.

Setup reality

Our sandbox installed commit fd219df in 94 seconds, pulling 2,362 packages and using 2,470 MB. The 135 MB monorepo held 6,595 files and about 694,154 source lines. Our runner found no root build target. The root test command failed after 22 seconds because it intentionally prints do not run tests from root and exits with code 1.

The source path uses Bun and inherits OpenCode's provider credentials and configuration. iOS work needs macOS, Xcode, and Node 20 or newer for serve-sim. Android needs platform-tools, at least one AVD, a Gradle-compatible JDK, and build-tools with aapt2.

The macOS packaging command produces an unsigned app by default. Signing and notarization need an Apple Developer ID plus API key, key ID, and issuer values. Model providers bring their own credentials; previews and builds run on the machine hosting MobileCode.

The device pane joins the agent to the native build loop

MobileCode starts with OpenCode, then adds a device pane beside the coding conversation. In a supported project, it detects iOS, Android, Expo, and React Native structures up to 2 directories below the session root. Opening a session reveals the available platforms without launching anything. Pressing Play starts the selected virtual device, builds the current project, installs it, launches it, and embeds the live stream in the same workspace.

The agent receives the same capability through a device_run tool. It can wait for the native build, capture the first compiler or Gradle error, inspect the log tail, edit the project, and try again. That shortens a common loop where the human copies an Xcode failure into chat. It also grants the agent authority to run a substantial local toolchain, so repository trust, command review, and process cleanup still matter.

React Native shares Metro but keeps each platform independent

React Native gets separate controls for Metro, iOS, and Android. One Metro server can feed both platforms. Starting iOS replaces only the previous iOS run; Android remains alive, and the reverse also holds. Stop cancels an active build, closes the stream, terminates the app, and shuts down that platform's virtual device. A manually started Metro stays up until you stop it.

The platform paths are explicit. iOS uses xcodebuild, then simctl for installation and launch. Android runs the chosen module's Gradle debug assembly, installs the APK with adb, and sends a launch intent. Expo can generate native projects with expo prebuild before entering the same pipelines. If another project's Metro owns the shared port, MobileCode requires you to stop it before switching JavaScript projects.

What happened when we ran it

Our unprivileged Debian sandbox installed commit fd219df in 94 seconds with Bun. It pulled 2,362 packages and consumed 2,470 MB. The checkout itself was already 135 MB, with 6,595 files and roughly 694,154 lines of source. We found 28 CI workflow files and workspace configuration, but no Dockerfile and no repository-level tests directory.

Our runner found no root build script or target, so it skipped that step. The root test command failed after 22 seconds with exit code 1, but its output is intentional: it prints do not run tests from root. No package suite ran, and no test assertion failed in the supplied log. The README directs contributors to enter an individual package, such as packages/opencode, and run Bun's test or typecheck command there.

Native prerequisites are the real installation cost

Installing the repository is only the JavaScript side. iOS preview requires macOS with Xcode, and serve-sim needs Node 20 or newer. Android needs SDK platform-tools, at least 1 configured AVD, and a JDK compatible with the project's Gradle version. MobileCode reads the installed APK's package name with aapt2, so Android build-tools must also be present. The host running the MobileCode server owns these processes and device streams.

A one-line installer can download a release binary to ~/.mobilecode/bin. Building the macOS desktop app from source bundles the server and Electron shell, then produces an app, DMG, and ZIP. Those artifacts are unsigned by default, requiring a right-click Open on first launch. Signing and notarization add a Developer ID certificate and 3 Apple API values. None of this repairs a mobile project whose own Xcode, Pods, Gradle, or SDK setup is broken.

OpenCode compatibility is the benefit and the dependency

Existing OpenCode configuration stays under the same paths and OPENCODE_ environment prefix. Provider accounts, opencode.json, plugins, skills, and MCP connections carry over. The rest of the inherited product remains: terminal, desktop and web interfaces, plus multiple model providers. For an OpenCode user, MobileCode changes the mobile feedback loop without forcing a new agent configuration format.

It is still a fork. The repository contains about 694,154 source lines because it carries the upstream application alongside the mobile additions. That gives users a large existing surface, but it also creates a synchronization job. Buyers should compare the fork's current OpenCode base with upstream fixes they rely on. A device pane is less valuable if the underlying agent, provider adapter, or plugin behavior lags behind its source project.

September 24 brought a release, but little independent history

GitHub showed 239 stars, 27 forks, and 1 combined open issue and pull request on September 30, 2026. The sole open item was a promotional invitation, not a product bug report. The repository was last pushed on September 24, and v1.18.32 was released the same day. Those dates show shipping activity, but not much user-reported pressure on the mobile paths.

The project itself was created on September 5, 2026. That is too little history to judge how well it will track new Xcode releases, Android Gradle changes, Expo updates, and upstream OpenCode development at once. Try it on a disposable branch and run a real iOS and Android project through build, stop, reload, failure, and retry. The feature is valuable only when it handles your existing toolchain more reliably than the two native IDEs you already have.

Alternatives

ProjectWhat it isPick it when
OpenCode gh↗The upstream coding agent without MobileCode's embedded iOS and Android run controls.pick this instead when you want faster upstream changes and can keep mobile previews in Xcode or Android Studio.
Codex gh↗A terminal coding agent that can run project commands and edit a repository.pick this instead when an embedded simulator stream is unnecessary and terminal automation is enough.
Cline gh↗A coding agent integrated into VS Code with terminal and browser actions.pick this instead when your team already works in VS Code and prefers existing mobile extensions and device panels.

What people are saying

  1. [velocity-scout] hsandhu/mobilecode

Sources

  1. MobileCode README
  2. MobileCode repository
  3. MobileCode 1.18.32 release
  4. OpenCode upstream

More ai tools reviews

dream-loop · Codex-Minecraft-Gameplay · kun · screenwriting-skills · holo-card-studio · microduck-replica · the whole board →