Coding agents on your Android phone. Ten agents, including Claude Code, Codex, Antigravity, Qwen Code, Kilo, Cline, Goose and OpenCode, in a Linux the app installs itself. No computer, no Termux. Or connect to the agent on your computer.
Download for Android · Website · Get it on Obtainium · What's new
Watch the one-minute demo (mp4), also on the website: one prompt builds a game, it runs in the app's preview, a screenshot goes back into the chat, and the agent adds power-ups.
- Coding agents keep working while you are away from your desk, and they stop to ask. A phone is where that question reaches you.
- Setting up a Linux and an agent by hand on a phone takes a lot of steps. The app does them for you and keeps the agent inside the app.
- Everything stays open: MIT license, your own servers and keys, no hosted service in between.
AndCode facts come from its public README, checked 2026-10-31; the Termux column is general. They change; check the source before relying on them.
| OpenCode Mobile | Termux + an agent CLI | AndCode | |
|---|---|---|---|
| What it is | Android app with chat, diff, Git, terminal and widgets | Terminal emulator and Linux environment; the agent is a command-line tool you install | Android GUI app for coding agents |
| Agents on the phone | Ten: Claude Code, Codex, Antigravity, Qwen Code, Kilo, Cline, Goose, Oh My Pi, fx, OpenCode | Whichever agent CLI you install and can run | OpenCode, Claude Code, Google Antigravity, Codex |
| Linux setup | Guided in-app install of Ubuntu, Git and Node | By hand, in a terminal | Guided in-app install through PRoot (Alpine; Debian for Antigravity) |
| Connect to a computer | OpenCode 2, Codex, or Claude Code through Paseo | Over SSH, by hand | Remote OpenCode |
| Approve a command from a notification or widget | Yes | Depends on the agent CLI | Tool approvals in the app |
| Scheduled prompts | Yes | With your own tools (such as cron) | Yes |
| License | MIT | See the Termux repository; agent licenses vary | MIT |
OpenCode Mobile is a younger project and several of its agents are less tested on real phones; see Compatibility.
- Ten agents, one app. Pick Claude Code, Codex, Antigravity, Qwen Code, Kilo, Cline, Goose, Oh My Pi, fx or OpenCode for each conversation. Claude Code and OpenCode are the best proven on a phone; the others are newer. OpenCode's free models work without an API key.
- Real Linux on the phone. The app installs its own Ubuntu with Git and Node, runs the agent there, and keeps your projects inside the app. A full terminal is built in.
- Approve from anywhere. Allow or reject a command from the notification, the home-screen widget or the chat, or turn on auto-approve and let it run.
- Steer mid-task. Send a new instruction while the agent works, instead of waiting for it to finish.
- See the result. Open the agent's dev server in the in-app preview, then send a screenshot back into the chat.
- Review every line. A phone-sized diff, change by change, before anything is committed.
- Git in the conversation. Commit, send and pull from the chat. Turn a folder into a repository and publish it to a new GitHub repository without leaving the app.
- One Inbox. Everything that waits on you, in one list.
- Scheduled prompts. Run a prompt at a time you choose, once or repeating, even with the app closed.
- Home-screen widgets. Conversations and Status widgets show what your agents are doing and let you act on requests.
- Make it yours. Five styles (Solid, Soft, Brutal, Paper and Signal), light and dark.
- Private by design. The app talks only to servers you choose. Voice is transcribed on the phone.
| Ask | Approve | Play it | Review |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Terminal | Models | Home-screen widget |
|---|---|---|
![]() |
![]() |
![]() |
All screens are real captures from the app.
You need an Android phone running Android 8 or newer. Running agents on the phone itself needs a 64-bit phone. Bring a model provider, or start with OpenCode's free models.
- Install. Download the APK from the latest release. Most phones want the
arm64-v8afile; the universal APK works everywhere. Android asks you to allow installs from outside the Play Store. - Choose where your agent runs.
- On this phone: follow the guided setup. The first run downloads Ubuntu and the tools, about 210 MB, so use Wi-Fi.
- On my computer: run
opencode2 pairon the computer and scan the QR code, or enter its address. Tailscale lets you reach it from anywhere. - Just show me: a simulated conversation, no server needed.
- Start a conversation. Pick an agent and a model and describe the change. Add your own provider key in Settings when you want more than the free models.
Coming from Termux? The app no longer runs anything in Termux: built-in Linux is its only engine on the phone. Your projects in Termux stay where they are; copy them to the phone's shared storage or push them with Git, then open them in the app. More help is in SUPPORT.md and the in-app guide.
| Status | |
|---|---|
| Android | 8 or newer; on-phone agents need a 64-bit phone |
| OpenCode | OpenCode 2 only; OpenCode 1 is no longer supported |
| Claude Code, Codex, Antigravity, Qwen Code, Kilo, Cline, Goose, Oh My Pi, fx | On the phone, in the built-in Linux (newer ones are less tested on real phones) |
| Agents on your computer | OpenCode 2, Codex directly, or Claude Code through Paseo |
| Languages | English, Arabic, Spanish, French, Indonesian, Portuguese, Russian, Vietnamese and Simplified Chinese, with partial Japanese |
| iOS, macOS, Linux and Windows | Not available; desktop builds were dropped in 2.1.4 |
Android updates an app in place only when the new APK has the same signature. Public releases are signed with
842284B27AA297FB74CF831779FD16498517E1BC2104451459FEC2EA7AC11D1C
so each release installs over the previous one and keeps your servers, sign-ins and settings. Version 3 is the native Kotlin app; it keeps the package name and this signer, so it installs over the 2.1 releases. You can check the installed signer in Settings → About. Do not uninstall to fix a failed update: projects on the phone live inside the app and would be deleted.
The app connects only to the servers you choose. Passwords stay in Android's keystore, voice is transcribed on the device, and diagnostics leave the phone only when you send a report yourself, with secrets removed. See PRIVACY.md.
Nothing goes to the developer unless you turn it on. There are two switches in Settings > Privacy and data, both off by default, and turning one off stops it:
- Usage and app health goes to Google Analytics for Firebase, exactly these events with fixed words and ranges only:
app_open(cold or warm),setup_step_reached,setup_step_failed,setup_done,first_reply,connect_computer_chosen,update_offered,update_installed,screen_view(the kind of page),feature_used,session_length; and for flowsconn_attempt,conn_drop,send_result,turn_stall,queue_flush,linux_setup_step,agent_start,bg_service_end,update_result; and for performanceapp_start,jank(slow frames per kind of page) andmemory_pressure. Timings go to Firebase Performance Monitoring under the same switch:app_cold_start,conn_connect,send_first_reply,linux_setup_<step>andagent_startwith fixed words only, plus Firebase's own app start and slow and frozen frames; web requests are not traced. It also sets device ranges once: memory, free storage, CPU family, WebView version, whether notifications are allowed, and the kind and version of server. - Crash reports go to Google Firebase Crashlytics: the kind of error and its code locations (never its message), why Android ended the app last time, the last steps you took as short words such as
conn.connect, and a few keys (app version, build kind, server kind, engine state, number of connections, OpenCode major.minor).
Asked every time, whatever the switches say: Settings > Help > Send a problem report shows you the whole report (the app's last 500 log lines, the keys above, recent process ends and device ranges, with keys, URLs, host names, addresses and paths already blanked) and sends it only when you tap Send. You get a report code to quote in an issue; it is also in Settings > About.
On the first start after installing or updating, the app asks once, "Help improve OpenCode Mobile?": "Share both", "Not now" (everything stays off and it never asks again) or "Choose". Every value sent is one of a fixed list of words, ranges or numbers; the exact lists are in PRIVACY.md and docs/telemetry/health-and-diagnostics.md.
Never sent: messages, prompts, files, paths, server addresses, usernames, passwords, keys, tokens or the advertising ID.
The app is native Kotlin: Kotlin Multiplatform and Jetpack Compose, all under native/. Start with:
- native/AGENTS.md: toolchain, module rules and the Gradle tasks
- CONTRIBUTING.md: checks, boundaries and pull requests
- AGENTS.md: working notes for coding agents in this repo
- SECURITY.md: report vulnerabilities privately
cd native
./gradlew :quality:test # architecture rules
./gradlew :<module>:desktopTest # one module's tests
./gradlew :androidApp:assembleDebug # the preview APKCI (native-ci.yml) compiles the app, runs the desktop tests in shards and builds a preview-signed APK. The Flutter
app this project started as is in the history up to the tag flutter-final.
MIT. Bundled fonts, models and packages are listed in THIRD_PARTY_NOTICES.md.
OpenCode Mobile is an independent community project. It is not built, maintained, endorsed by, or affiliated with the official OpenCode team. It is not affiliated with Anthropic. Built with AI coding agents and reviewed by the maintainer. Thanks to the OpenCode team for the agent this app is a window onto.






