Dev & Engineering android-clientself-hostedstreaming-chatdiff-reviewtool-approvalbiometric-authmulti-server

OpenCode Mobile

Run and review self-hosted OpenCode coding sessions from an Android phone.

FollowAgents review · FARS-2.1
Use with care
71/ 100 5-point scale 3.6 / 5
1 2 3 4 5 6
Per-dimension scores and reasoning
1Trust18 / 29 · 3.1/5

The README clearly describes the HTTP/SSE flow among the mobile client, the user's self-hosted opencode server, and the model provider, and says provider keys do not pass through the app's servers. Credentials are described as OS-keystore protected, crash reporting as opt-in and off by default, and tool calls as reviewable and rejectable; biometric protection can also cover individual sends. Deductions apply because the supplied files do not show the Android permission manifest, production approval enforcement, certificate-validation policy, or complete retention behavior. package.json includes PostHog and the build injects a PostHog key, creating tension with the statements that no analytics SDK is bundled and no personal data is collected. Dependencies are generally constrained and CI builds a source-oriented F-Droid variant, but no vulnerability scan, update policy, or lockfile evidence is supplied. Diff review and rejection can prevent changes, yet no post-change rollback or recovery mechanism is shown. Independence, upstream opencode, Expo, corporate copyright, and MIT attribution are explicit; unknown registry provenance was not treated as suspicious.

2Reliability8 / 14 · 2.9/5

CI defines type checking, unit tests, Android builds, and mock-backed activation E2E coverage, including a visible 401 failure and several directory, diff, and picker flows. Server prerequisites, Android scope, and installation channels are also documented. Self-consistency is reduced because the README repeatedly identifies 0.4.7 as current while package.json reports 0.4.15, and the no-analytics claim conflicts with the PostHog dependency and build key. Workflow comments acknowledge that newer flows are non-blocking and had not completed in CI, while the streamed-reply assertion is omitted because of a harness limitation. The authentication-negative flow supports a useful failure-message score, but the evidence does not cover user-facing handling for broader timeout, disconnection, or server-version failures.

3Adaptability15 / 18 · 4.2/5

The intended audience and scenarios are unusually clear: Android users connect to a self-hosted server through LAN, Tailscale, Cloudflare Tunnel, or ngrok, with an offline demo for evaluation. Stable, beta, planned, and unavailable features are separated, and the client is accurately bounded as a thin interface rather than a model provider or hosted backend. Approval prompts, connection testing, and biometric send protection indicate reasonable trigger precision, but the production enforcement code is absent, so uniform gating of high-impact actions cannot be confirmed. Environment support includes multiple connections, directory scoping, and several distribution channels, but it remains Android-only, tablet layout and offline history are unfinished, and no real-server compatibility matrix is provided.

4Convention14 / 18 · 3.9/5

The README has strong information architecture covering installation, quick start, architecture, status, roadmap, privacy, contribution, support, and licensing. Three Android installation routes and server startup instructions are adequate for ordinary onboarding. iOS absence, beta tunnel setup, and planned tablet and offline-history features are stated, while the MIT text and copyright are complete. Deductions apply for unstable metadata: the README says 0.4.7 but the package says 0.4.15, and the @opencode-ai/mobile package name may blur the otherwise explicit non-affiliation statement. Examples and an offline demo exist, but there is no systematic FAQ or troubleshooting section. CI can generate release notes, yet no changelog or migration guidance is supplied. A maintaining company, sponsorship route, support email, and project tracking are named, but curated publisher identity is unverified and no clear security-response ownership or support commitment is shown.

5Effectiveness10 / 13 · 3.8/5

Streaming chat, resumable sessions, inline diffs, approval controls, and cross-directory session management produce directly usable mobile coding interactions. The offline demo also lowers evaluation effort, giving the product meaningful value beyond a generic remote shell. Deductions reflect its dependence on a user-operated and secured opencode server, network exposure or tunneling, and separately billed model access; the tunnel wizard is beta, while offline history and managed hosting remain unshipped. The client is free and has several install options, but total cost and benefit still depend on server, provider, and secure-network setup.

6Verifiability6 / 8 · 3.8/5

Several claims are traceable across the supplied files: package.json identifies dependencies and scripts, workflows specify tests, builds, signing, and the F-Droid flavor, and the mock server combines detailed protocol commentary with concrete endpoint behavior. Traceability is reduced by the version and analytics/privacy contradictions and by the absence of privacy implementation code, permission manifests, a lockfile, release attestations, or actual test results. Features, builds, and test intentions receive useful cross-file corroboration, but not every promotional claim is independently supported. The material carefully distinguishes the mock from a real server, blocking from non-blocking tests, harness limitations, beta functionality, and future plans, so fact, inference, and aspiration are separated well.

Evidence confidence: Low Reviewed Sep 22, 2026 Reviewed revision 646f9cbf7743
Before you use it
  • Inspect PostHog initialization, consent gating, event fields, and disablement before relying on the privacy claims; the dependency and injected build key conflict with the README's no-analytics-SDK statement.
  • Determine whether 0.4.7 or 0.4.15 corresponds to this revision and the distributed APKs, then verify signatures, source correspondence, and update paths for every channel.
  • A tool-approval UI is not proof of server-side containment; verify the real opencode permission policy and rejection and recovery behavior before connecting it to writable code.
  • The LAN and Tailscale examples use plain HTTP. Do not expose the server over an untrusted network without authentication, a controlled tunnel, and transport encryption.
  • The supplied E2E workflow explicitly contains non-blocking flows and omits a streamed-reply assertion; static evidence does not establish complete real-device streaming or recovery behavior.
Review evidence [1][2][3][4][5][6]
See the full review method →

What does this agent do, and when should you use it?

OpenCode Mobile is an independent, open-source Android client for the OpenCode AI coding agent, built with React Native and Expo. It connects to a user-operated OpenCode server over HTTP and SSE to list, create, and resume sessions while streaming agent responses token by token. The app presents file diffs, tool-call approval prompts, multiple server connections, and biometric protection, while the remote OpenCode server performs the actual model calls and code operations. OpenAI, Anthropic, and other provider credentials remain on that server; the client does not receive those keys or relay code and conversations through the maintainer's infrastructure. It is a practical fit for Android users willing to operate an OpenCode backend, but not for teams that require iOS, a currently available managed service, or real offline agent execution.

The app stores and manages connections to multiple OpenCode servers reached through a LAN address, Cloudflare Tunnel, ngrok, or Tailscale. Once connected, it uses the OpenCode HTTP + SSE API to list sessions, create or resume them, send messages, stream responses, and subscribe to file-change events. Its interface renders the agent's edits as inline side-by-side diffs and lets the user approve or reject tool calls before execution. Server credentials are kept in the Android Keystore through expo-secure-store, and device biometrics can protect both app access and individual message sends. AI-provider requests, code access, and tool execution occur on the user's opencode server; the phone receives streamed replies, diffs, and permission requests.

  1. A developer already running OpenCode on a laptop or VPS wants to monitor and continue coding sessions from an Android phone while away from the workstation.
  2. A solo developer using Tailscale wants to inspect agent output, file changes, and permission requests over a private network.
  3. A team member exposing self-hosted services through Cloudflare Tunnel or ngrok needs one mobile client for several OpenCode endpoints.
  4. A developer who requires human approval for agent actions wants to review diffs and accept or reject tool calls from a phone.
  5. A prospective user wants to evaluate the interaction model through a roughly 30-second offline walkthrough of reasoning, grep, a diff, and a permission prompt before deploying a server.

What are this agent's strengths and limitations?

Pros
  • It covers the mobile review loop with streamed messages, file diffs, and explicit approval or rejection of tool calls rather than offering chat alone.
  • It supports multiple servers reached through LAN networking, Tailscale, Cloudflare Tunnel, or ngrok.
  • Provider API keys stay on the self-hosted server, and code or conversations are not proxied through the project's servers.
  • Credentials use the Android Keystore, while biometric checks can protect app access and individual sends.
  • A built-in offline demo lets users inspect the main workflow before setting up infrastructure.
Limitations
  • It is Android-only; iOS, the Apple App Store, and a dedicated tablet layout are not available.
  • Live coding sessions require the user to install, configure, secure, and maintain a network-accessible OpenCode server.
  • Remote access may require operating and securing Tailscale, Cloudflare Tunnel, or ngrok, adding networking and security work.
  • Offline session history is only planned, and the current offline mode is a scripted demonstration rather than real agent execution.
  • The Cloudflare/ngrok tunnel wizard is still Beta, and the managed opencode Cloud option has not shipped.

How do you install or deploy this agent?

Android is the only supported platform. Install package cc.agentlabs.opencode from Google Play; alternatively, add https://dzianisv.github.io/opencode-mobile/fdroid/repo under Settings → Repositories → + in an F-Droid client; or download the signed APK from https://github.com/dzianisv/opencode-mobile/releases/latest. The version identified in the source is v0.4.7. Real sessions also require OpenCode on a machine you control:

npm install -g opencode-ai
OPENCODE_SERVER_PASSWORD=yourpassword opencode serve --hostname 0.0.0.0 --port 4096

Replace yourpassword with your own server password. iOS, the Apple App Store, and IzzyOnDroid are not currently available.

How do you use this agent?

For a server-free preview, open the Sessions screen and tap “Try a Demo” to play the scripted bug-fix workflow. For a live project, start opencode serve with OPENCODE_SERVER_PASSWORD, then tap “Add Connection” in the app. Select Local network, Tunnel, or Tailscale; enter an address such as http://192.168.1.100:4096, https://my-opencode.trycloudflare.com, or http://100.x.x.x:4096; provide the server password; and tap “Connect.” You can then browse, create, or resume sessions, submit coding requests, watch streamed responses, inspect file diffs, and approve or reject tool calls. Configure AI-provider API keys on the OpenCode server, not in the mobile client.

FAQ

Does OpenCode Mobile cost anything?
The mobile client is free and open-source under the MIT license. You remain responsible for charges from model providers configured on your OpenCode server; the planned paid opencode Cloud backend is not yet available.
Does the app receive my model-provider API keys?
No. The self-hosted OpenCode server handles provider credentials and model calls, while the app communicates with that server over HTTP and SSE.
Can I use it without running a server?
You can run “Try a Demo” to view a scripted bug-fix session, but real coding sessions require a running OpenCode server.
How are credentials and risky tool actions protected?
Server credentials are stored through expo-secure-store in the Android Keystore. Biometric unlock is supported, and tool calls can be reviewed and approved or rejected before execution.
Will it run on an iPhone or iPad?
No. The documented release is Android-only; iOS is unavailable, and an iPad or tablet layout remains planned.

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents