A Kotlin + Material 3 Android client for T3 Code. The Go core talks to a T3 environment over the orchestration protocol (Effect RPC over WebSocket plus the HTTP API) and exposes a small pull-based JNI facade to Kotlin, so the app does not need a JS runtime.
- App — this repository: Compose UI, Kotlin bindings, packaging, CI.
- t3code-core — Go core, protocol transport, projections, terminal/files/git APIs, JNI facade, and cross-compiled Android libraries.
Download the latest debug APK:
Download the latest t3code-android-debug.apk
Requires Android 8.0+ on an arm64 device. The APK is debug-signed and packages
only arm64-v8a. You also need a reachable T3 environment plus an access token
or device pairing link; enter either on the connect screen.
All releases: https://github.com/Shrawan-13/t3code-android/releases
- Auto-connect with saved token, device pairing, foreground reconnection, and a visible reconnecting/offline status banner
- Chats home with settled conversations shown by default, project filters, search, pin, rename, settle/unsettle, archive, delete, and mark read/unread
- Instant local updates for settle, archive, delete, pin, rename, and model changes, reconciled from the live shell afterwards
- Pull-requests list with open/merged/closed filters and direct links to GitHub
- Pull request detail with checks, files, a copyable Markdown description, and a commit description option on merge (shown when the server supports it)
- Live thread timeline: full CommonMark/GFM Markdown (tables, task lists, nested lists, links, images, HTML, quotes, and copyable code), compact tool calls grouped into collapsible work logs, reasoning, commands, file changes, approvals, interrupts, and PRs
- Add-project flow: create a Git repository on the server, register an existing local folder (with Git detection), or clone from a Git URL, GitHub, GitLab, and other configured source-control providers with live clone progress
- Background sync mode with completion/input notifications and a persistent stop action
- Composer with image/file attachments, send, queue while running, stop, and an in-composer model picker backed by provider/model catalog refresh
- Per-thread run permissions (ask first, auto-accept edits, auto, full access) and plan mode
- Project browser, usage dashboard with charts, provider list, and self-test
- Terminal, workspace file browser, and diff viewer
- Material 3 theme with a T3-style rose-on-violet palette and system/light/dark modes
Native libraries are not committed here. The app CI downloads the arm64
library from a t3code-core release:
https://github.com/Shrawan-13/t3code-core/releases/download/v0.2.0/libt3core-arm64-v8a.so
The core repository also publishes armeabi-v7a and x86_64 builds. The debug
APK currently packages arm64-v8a only; add the other ABI filters and download
steps when they are needed.
android/ Gradle project (Compose, Material 3)
app/src/main/java/com/t3codes/core/ Kotlin JNI bindings and models
app/src/main/java/com/t3codes/mobile/ App UI and state
scripts/ CI helpers (cache pruning)
.github/ Debug APK workflow
CI builds on pushes to main and uploads t3code-android-debug:
gh workflow run build-apk.ymlLocally, fetch the core first:
mkdir -p android/app/src/main/jniLibs/arm64-v8a
curl -fL -o android/app/src/main/jniLibs/arm64-v8a/libt3core.so \
https://github.com/Shrawan-13/t3code-core/releases/download/v0.2.0/libt3core-arm64-v8a.so
cd android && gradle :app:assembleDebugRequirements: JDK 17+, Android SDK 34, build-tools 34.0.0.
Never commit tokens or pairing credentials.