SuperSherpa is an Android speech-to-text project built with Kotlin, Jetpack Compose, and a Rust-powered native transcription runtime. The current build focuses on recorder and keyboard workflows, while the target product direction is Voxy: a fully offline floating-mic transcription experience.
Target MVP (Voxy):
- Floating mic overlay
- On-device speech-to-text
- Real-time transcription
- Copy to clipboard
- Fully offline runtime
Current repository status:
- Recorder-based transcription flow in the app
- Custom IME transcription flow
- JNI bridge into
transcribe-rsfor audio + transcription - Local transcript history via Room
- OTA model install for pinned model artifacts
- No floating overlay service yet
app/: Android app (Compose UI, ViewModels, Room, permissions, IME, model delivery)transcribe-rs/: Rust transcription engine and Android bridgeapp/src/main/jniLibs/arm64-v8a/: bundled native librariesapp/src/main/assets/model_delivery/manifest.json: pinned model delivery manifest
Mic -> Rust native layer -> status/result callbacks -> ViewModel state -> Compose screens or IME
Transcription runs locally after model installation. The app currently includes INTERNET permission because model download can happen in-app when no local model is present.
- Package:
com.sublime.supersherpa - App name (current):
SuperSherpa - Min SDK:
26 - Target SDK:
36 - UI stack: Jetpack Compose + Material 3
- Persistence: Room
- Native runtime: Rust + ONNX Runtime Android
android.permission.RECORD_AUDIOandroid.permission.FOREGROUND_SERVICEandroid.permission.FOREGROUND_SERVICE_MICROPHONEandroid.permission.INTERNET
SYSTEM_ALERT_WINDOW is intentionally not declared yet because the overlay bubble/service is not implemented.
Build debug APK:
./gradlew assembleDebugRun JVM unit tests:
./gradlew testDebugUnitTestRun instrumentation tests:
./gradlew connectedDebugAndroidTestRun lint:
./gradlew lintDebug- JVM tests for
TranscriptionViewModel,VoiceState, history, and model delivery logic - Android instrumentation scaffold under
app/src/androidTest/ - Rust tests under
transcribe-rs/tests/
See LICENSE.









