A third-party native mobile client for LibreChat (Android & iOS). Not affiliated with the official LibreChat project — this is an independent app that connects to any self-hosted LibreChat server, no backend modifications required.
Backend compatibility: Tested against LibreChat v0.8.4 – v0.8.8-rc1. Older releases may work but are not guaranteed; newer releases are supported on a best-effort basis until the next sync.
- Smoother and faster — a real native app instead of a website in a wrapper, so scrolling, typing, and watching responses stream in all feel snappier.
- Feels like a mobile app, not a shrunk-down website — familiar gestures like swipe to switch accounts and swipe back, comfortable tap targets, and a layout that adapts to tablets and foldables.
- Plays nicely with your phone — share text, images, and files into the app from anywhere (Android), pin your favorite models or generated content to your home screen, open chat links straight into the right screen, and save or share images through your phone's normal menus.
- Works without a connection — your chat list and any conversations you've opened are saved on your phone, so you can keep reading with spotty or no signal.
- Multiple accounts, one app — sign in to different accounts on different LibreChat servers and switch between them instantly, no re-entering passwords.
- Dictation stays on your phone — voice typing runs on-device instead of through a server.
- Multi-Account & Multi-Server — Sign in to multiple accounts across different LibreChat servers and switch between them instantly, no re-login. Swipe the account chip to switch; storage is fully scoped per account.
- Pin Artifacts to Home Screen — Turn any generated artifact (HTML, React, SVG, Mermaid, Markdown) into a home-screen launcher icon that opens straight into a full-screen viewer — works on cold start, while logged out, and even after the source chat is deleted. (Android)
- Quick Actions — Your most-used models become home-screen shortcuts (Android) and long-press quick actions (iOS) that deep-link into a new chat with that model preselected.
- Rich Media Viewer — Full-screen, Google-Photos-style viewer with pinch-to-zoom and swipe between images across a branch or grid, shared by chat and files.
- Native Upload, Share & Save — Attach from the device or reuse existing server files without re-uploading, save images to your gallery, and share out through the system share sheet with original format preserved.
- Themes — Pick any accent color and the whole app regenerates a matching Material 3 palette — choose from presets or dial in a custom color (HSV or hex). System/light/dark modes, plus Material You wallpaper-based colors on Android 12+.
- Chat — Real-time streaming (SSE), message branching & sibling navigation, stop/regenerate/continue, markdown with syntax highlighting, LaTeX math rendering, code blocks with copy, image display, file attachments, tool call progress cards
- Inline Artifacts — Render Mermaid, SVG, HTML, React, and Markdown artifacts directly in chat messages at full message width with content-fit height. Per-type toggle in Settings → Chat → Artifacts.
- Model Selection — Searchable bottom sheet grouped by endpoint, model comparison mode
- Agents — Marketplace with search and categories, MCP server configuration
- Conversations — Paginated list with date grouping, tags, search, rename, archive, delete, share, fork, duplicate, export/import
- Voice — On-device live dictation (Android & iOS) with cloud fallback, plus text-to-speech playback
- Mobile & Tablet — Single adaptive UI: single-pane on phones, dual-pane layout (600dp+) with a persistent sidebar on tablets and foldables, with native predictive-back gestures
- Settings — In-app language switching, account management, data controls
- Accessibility — Semantic headings, content descriptions, 48dp touch targets, live regions
Pre-built, signed APKs are published on the Releases page. No need to build from source.
Obtainium installs the app straight from GitHub Releases and keeps it updated automatically.
- Install Obtainium from its releases.
- Tap the Add to Obtainium badge above (or, in Obtainium, Add App → paste
https://github.com/garfiec/Librechat-Mobile). - Obtainium tracks new releases and prompts you to update when one ships.
Release-candidate builds (versions like 2026.07.1-rc1) are published as GitHub pre-releases and are ignored unless you enable Include prereleases for the app in Obtainium.
Download the latest switchboard-vYYYY.MM.P.apk from Releases and open it on your device (you may need to allow installs from your browser/file manager).
All releases are signed with the same key, so updates install in place. Verify a downloaded APK matches the published certificate:
apksigner verify --print-certs switchboard-vYYYY.MM.P.apk
# or check the .sha256 checksum attached to each release:
sha256sum -c switchboard-vYYYY.MM.P.apk.sha256Signing certificate SHA-256:
66:8A:71:96:6A:07:06:14:D1:44:95:5D:83:E7:23:6A:3C:ED:77:F8:64:08:57:C3:FA:84:B0:3C:CD:E4:0E:59
If the signing key ever changed, Android would refuse the update — so this key is permanent. Never install a build signed with a different certificate over an existing install.
Every release APK carries a SLSA build-provenance attestation, signed by GitHub Actions via Sigstore. Unlike the .sha256 — which whoever attaches a release could regenerate — the attestation proves the binary was produced by this repo's release workflow at a specific commit, and cannot be forged outside GitHub's CI. With the GitHub CLI:
gh attestation verify switchboard-vYYYY.MM.P.apk \
--repo garfiec/Librechat-Mobile \
--signer-workflow garfiec/Librechat-Mobile/.github/workflows/release.ymlA pass confirms the exact bytes you downloaded came from that workflow. The run and attestation are also linked from each release's notes — but those links are convenience, not proof; only the command above verifies the bytes in your hand.
The app works with any standard LibreChat server. During onboarding, you'll enter your server URL (e.g., https://chat.example.com or http://192.168.1.100:3080).
Add the following to your LibreChat server's .env file:
# Safety net for native app clients.
# The app sends a browser User-Agent to pass the uaParser middleware,
# but if it ever fails to parse, this prevents ban point accumulation.
NON_BROWSER_VIOLATION_SCORE=0Without this setting, the server's violation system may accumulate ban points against the mobile client if the User-Agent check fails, eventually locking the account out.
- Registration — The app respects your server's registration settings. If registration is disabled server-side, only the login form is shown.
- Self-signed TLS certificates — Both platforms enforce certificate requirements stricter than browsers, and Android additionally does not trust user-installed CAs by default. See FAQ.md for details and workarounds.
| Tool | Version |
|---|---|
| JDK | 17+ |
| Android Studio or IntelliJ IDEA | Latest stable (recommended IDE for all code editing) |
| Xcode | 15+ (iOS only, Apple Silicon Mac required — IDE not needed, CLI only) |
| iOS Deployment Target | 16.0+ |
| Gradle | 9.5.1 (via wrapper) |
| Kotlin | 2.4.10 |
./gradlew assembleDebugThe debug APK will be at app/build/outputs/apk/debug/app-debug.apk.
For a release build:
./gradlew assembleReleaseXcode builds the Kotlin framework itself via a build phase (direct integration), so there is no separate link*Framework step to run by hand.
Simulator:
xcodebuild -project iosApp/iosApp.xcodeproj -scheme iosApp \
-sdk iphonesimulator \
-destination 'platform=iOS Simulator,name=iPhone 16' \
-derivedDataPath iosApp/build buildPhysical device:
open iosApp/iosApp.xcodeprojThen in Xcode: select your device, set your Team under Signing & Capabilities, and press ⌘R.
See iosApp/README.md for full build and launch instructions.
- Kotlin Multiplatform (KMP) with shared business logic
- Jetpack Compose (Android) + Compose Multiplatform (iOS)
- Koin (dependency injection)
- Ktor Client (OkHttp on Android, Darwin on iOS)
- Kotlinx Serialization
- Room (cache), DataStore (preferences), EncryptedSharedPreferences / Keychain (tokens)
- Kotlin 2.4.10, compileSdk 36, minSdk 26
See CONTRIBUTING.md for development setup, code style, and PR guidelines.
This project is licensed under the MIT License.

























