OpenChat is a high-performance, native Android application built with Jetpack Compose, designed to provide a pixel-perfect AI interaction experience with full workspace and agentic capabilities.
- Blazing Fast Streaming: Tokens appear instantly with minimal latency.
- Agentic Workspace: AI can read, create, and edit files in your local workspace.
- Multimodal Support: Attach images and documents for rich context.
- Artifacts System: Render HTML/JS/CSS snippets in a live preview.
- Local Persistence: Full session history and workspace files stored via Room and internal storage.
- Voice Integration: Speech-to-Text and Text-to-Speech support for hands-free interaction.
- Pro Design: Minimal, dark/light theme (inspired by Claude Android).
- UI: Jetpack Compose (Material 3)
- Architecture: MVVM + Clean Architecture + Repository Pattern
- Dependency Injection: Dagger Hilt
- Database: Room (SQLite)
- Networking: Retrofit + OkHttp (SSE support)
- Local Storage: DataStore (Preferences)
- Formatting: Markwon (Markdown) + Prism.js (Syntax Highlighting)
git clone https://github.com/yourusername/openchat.git
cd openchatOpenChat supports multi-provider integration. You don't need to hardcode keys:
- Open the app on your device.
- Navigate to History (Sidebar) > API Config.
- Add your OpenAI, Anthropic, or custom provider keys.
Ensure you have Android Studio Hedgehog+ and JDK 17 installed.
./gradlew assembleDebugThe APK will be located at openchat/app/build/outputs/apk/debug/app-debug.apk.
The repository is configured with GitHub Actions to automate builds:
- Debug Builds: Every push to
maingenerates a debug APK in the "Actions" tab. - Release Builds: Pushing a tag (e.g.,
v1.0.0) triggers a signed release APK and a GitHub Release.
Add these secrets to your GitHub repository (Settings > Secrets and variables > Actions):
- KEYSTORE_BASE64: Generate a keystore, then encode it:
keytool -genkey -v -keystore openchat.jks -keyalg RSA -keysize 2048 -validity 10000 -alias openchat base64 -w 0 openchat.jks > encoded.txt # Copy content of encoded.txt to GitHub Secret
- KEYSTORE_PASSWORD: The password for your keystore.
- KEY_ALIAS:
openchat(or your chosen alias). - KEY_PASSWORD: Your key password.
git tag v1.0.0
git push origin v1.0.0MIT License. See LICENSE for details.