Android client for OpenCode servers with a native UI and broad feature coverage.
This is an unofficial community project, not affiliated with the OpenCode team.
- Full chat interface — native Material 3 UI with markdown rendering (code blocks, tables, syntax highlighting)
- Message streaming — real-time text streaming with auto-scroll
- Smart scroll behavior — manual scroll disables auto-scroll; automatically re-enables when scrolled to bottom
- File mentions —
@fileautocomplete with server-backed path search and quick insert - Image support — inline base64 images in chat
- Tool outputs — expandable tool-call cards with selectable monospace output
- Image preview & save — open sent and draft images in fullscreen preview and save to device storage
- Shell output copy — bash output blocks support text selection and one-tap copy (command + output)
- HTML error fallback modes — switch long HTML error payloads between rendered page view and raw code view
- Slash commands —
/new,/fork,/compact,/share,/rename,/undo,/redo,/shell - Swipe to revert — swipe user messages to undo (with confirmation dialog)
- Termux-like terminal mode — full-screen terminal UI with dedicated extra keys and mobile-first interactions
- Server-scoped terminal tabs — tabs are shared across sessions for the same server and managed from a drawer
- PTY over WebSocket — low-latency interactive I/O for CLI/TUI apps
- Reliable PTY resize — rows/cols update with viewport changes and IME transitions
- TUI rendering improvements — better full-grid rendering behavior for terminal UIs
- Terminal shortcuts — Ctrl/Alt latching, volume-key virtual modifiers (Ctrl/Fn), and
Ctrl+Alt+Vpaste - Selection toolbar paste — terminal selection menu includes paste action integrated with terminal input
- Multi-session — switch between sessions, view history
- Session actions — create, fork, compact, review changes, share/unshare, rename via dropdown menu
- Terminal mode shortcut — open the current session in terminal mode from the chat top bar
- Load older messages — paginated history loading; initial batch size is configurable (25-200)
- Large-session stability —
largeHeap, paginated message loading, and OOM fallback retry with smaller limits - Session export — export full session as JSON file with streaming progress notification
- Multi-select in sessions — long-press to enter selection mode, select multiple sessions, and delete in one action
- Draft persistence — input text, image attachments, and @file mentions saved per session; survives navigation, app restart, and WebUI detours
- Model picker — select provider and model with variant support; provider icons shown in headers
- Agent selector — tap to cycle through agents; each agent colored with its TUI theme color (blue, purple, green…)
- Reliable agent mode persistence — explicit Plan/Build choice is preserved correctly between UI state and sent commands
- Provider icons — 74 vector icons for AI providers shown in model picker and next to assistant responses
- Token usage — displays total tokens and cost in toolbar subtitle
- Context window — percentage display above input, color-coded (normal < 70%, warning 70-90%, critical > 90%)
- Compact layout — horizontally scrollable toolbar prevents overflow on long translations
- 15 locales — English (source), Russian, German, Spanish, French, Italian, Portuguese (BR), Indonesian, Japanese, Korean, Chinese (Simplified), Ukrainian, Turkish, Arabic, Polish
- Localization workflow — locale files are maintained with
lokitduring development - Settings — language and theme selection in Settings screen
- Language — 15 locales (system default, English, Russian, German, Spanish, French, Italian, Portuguese BR, Indonesian, Japanese, Korean, Chinese Simplified, Ukrainian, Turkish, Arabic, Polish)
- Reconnect mode — aggressive (1–5s), normal (1–30s), or conservative (1–60s) backoff strategy
- Theme — light, dark, or system default
- Dynamic colors — Material You dynamic color support (Android 12+)
- AMOLED dark mode — pure black surfaces with accent borders across chat bubbles, cards, menus, dialogs, and input blocks (works with both static and dynamic colors)
- Chat font size — small, medium, or large text in chat messages and code blocks
- Code word wrap — toggle horizontal scrolling vs. word wrap in code blocks and tool outputs
- Compact messages — reduce spacing between messages for denser layout
- Auto-expand tool results — show tool card contents expanded by default
- Initial message count — configure how many messages to load per session (25–200)
- Confirm before send — optional confirmation dialog before sending messages
- Haptic feedback — optional send confirmation haptics (API 30+
CONFIRM, olderCONTEXT_CLICK) and swipe feedback on revert gestures - Keep screen on — prevents sleep while the chat screen is open
- Notifications — toggle task completion notifications
- Silent notifications — suppress sound and vibration for task notifications
- Image optimization controls — tune max image side (keep original or 720–2560 px) and WebP quality for attachments
- Multi-server — connect to multiple OpenCode servers simultaneously
- Local runtime via Termux — set up and run OpenCode directly on-device from the Home screen (setup/start/stop/sessions)
- Local runtime launch options — configure LAN binding (
0.0.0.0), optional server username/password auth, background launch mode, auto-start (background-only), startup timeout, and proxy/NO_PROXYfrom the app - Provider OAuth flow — browser OAuth, headless fallback handling, and provider-state refresh on resume
- SSE event stream — real-time session status, permissions, questions
- WebSocket transport — used for terminal PTY streams
- Auto-reconnect — exponential backoff starting at 1s, with max delay based on reconnect mode (5s/30s/60s)
- Background service — foreground service keeps connections alive when app is minimized
- Android 8.0+ (API 26)
- OpenCode server accessible over the network
- Start the OpenCode server with network access:
opencode serve --port 4096 --hostname 0.0.0.0-
In the app, tap + and enter the server URL (e.g.
http://192.168.0.10:4096), username, and optional password. -
Tap Connect on the server card.
- Open the project
- Sync Gradle
- Run on a device or emulator
# Build debug APK
./gradlew assembleDebug
# Install on connected device
adb install -r app/build/outputs/apk/debug/app-debug.apkMIT





