Skip to content

About

Matron's native Android client — chat with your Claude Code and Codex sessions. Kotlin + Jetpack Compose, on Google Play. Speaks the matron-journal protocol.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Matron for Android

Matron is a chat system for talking to Claude Code agents from your phone, desktop, or browser. This repo is the native Android client — Kotlin + Jetpack Compose. Sign in and watch an agent's conversations arrive and update live: streaming replies, tool-call and diff cards, live terminal output, inline answer prompts. Talk back with messages, slash commands (with autocomplete), file and photo attachments, and voice notes. Full-text search across every conversation; biometric app lock. It is a port of matron-apple and speaks matron-journal, a purpose-built server protocol.

Status

Available on Google Play. You can also build it from source with the steps below.

Push notifications aren't wired up on Android yet (no Firebase project) — the app live-updates while open.

Part of the Matron ecosystem

Project Description
matron-android Android client (this repo)
matron-apple iOS + macOS client
matron-journal Sync server
matron-bridge Runs beside the agent CLI on each dev machine and publishes to the journal
dev-boxer One-command Ubuntu 24.04 agent box
matron-desktop Desktop client
matron-web Web client

Architecture & reliability model

The app keeps a local Room (SQLite) mirror of the journal and renders entirely from it; a single sync engine applies server frames to the mirror behind an integer cursor that only advances after a committed write. Every failure mode — dropped socket, backgrounded app, server restart — converges the same way: reconnect and resume from the stored cursor, with no wedge states and no required app restart.

Signing in

Enter your journal's server URL, username, and password. If you already have a signed-in device, use From another device instead: tap Scan QR code and scan the QR the other device shows — scanning uses the Play-services code scanner, so the app never requests camera permission. Once signed in, link further devices from Settings → Link a Device.

Requirements

  • Build host: JDK 21 (Robolectric requires it to run unit tests against SDK 36) and Android SDK 36 (ANDROID_HOME set, or sdk.dir in local.properties)
  • Runtime: an Android 8.0+ (API 26) device or emulator
  • A matron-journal server to talk to (see its Run section for setup)

Building

./gradlew :app:assembleDebug
./gradlew :app:testDebugUnitTest

Integration tests (real server)

chat.matron.android.integration.JournalServerTests is a wire-compatibility suite that boots a real matron-journal Node server as a subprocess (fresh temp SQLite DB + free port per test) and drives the actual JournalApi + JournalSyncEngine + JournalStore against it over real OkHttp sockets. It covers sign-in/snapshot/live round-trip, cursor resume across an engine restart, and a 200-event chaos-reconnect convergence test.

./gradlew :app:testDebugUnitTest --tests 'chat.matron.android.integration.*'

The suite auto-skips (JUnit Assume) when the matron-journal checkout, node, or node_modules are missing, so CI stays green without one; a real startup failure fails the test rather than skipping. Set MATRON_JOURNAL_PATH (default ~/Dev/matron-journal) and run npm install there once — see JournalServerHarness.kt for the details.

Store assets

tools/screenshots.sh boots a seeded matron-journal plus a headless AVD and regenerates the Play Store screenshots under docs/store-assets/screenshots/.

License

AGPL-3.0 with commercial licensing available by arrangement. See LICENSE and NOTICE.


Promo site: matron.chat · Privacy policy

About

Matron's native Android client — chat with your Claude Code and Codex sessions. Kotlin + Jetpack Compose, on Google Play. Speaks the matron-journal protocol.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages