Project Overview
Relevant source files
The following files were used as context for generating this wiki page:
Ownkey Keyboard is a privacy-focused, open-source Android Input Method Editor (IME) derived from FlorisBoard. The project is centered on providing a "Bring Your Own Key" (BYOK) model for AI-powered features, specifically Automated Speech Recognition (ASR) via Mistral Voxtral and Large Language Model (LLM) text rewriting.
The project maintains a strict privacy model where no in-app monitoring of private user content occurs. While networked ASR involves sending audio data to a configured endpoint, Ownkey ensures that API keys are stored locally and encrypted using the Android Keystore. The system also includes a Wear OS companion IME with synchronized configuration for a seamless cross-device AI input experience.
Sources: README.md:3-17, AGENTS.md:12-19, VOXTRAL_KEYBOARD_PLAN.md:3-8
System Architecture
The Ownkey architecture is organized into three primary layers that handle the user interface, external AI service integration, and local security.
1. IME Application Layer
This layer manages the core keyboard functionality, including the dictation orchestration within the keyboard flow, audio capture, and the suggestion/autocorrect pipeline. it also handles the "Smartbar" and quick-action UX.
Sources: VOXTRAL_KEYBOARD_PLAN.md:20-25, AGENTS.md:29-37
2. AI Integration Layer
This layer facilitates communication with external providers. It defaults to Mistral Voxtral for transcriptions but allows for custom OpenAI-compatible endpoints.
Sources: VOXTRAL_KEYBOARD_PLAN.md:27-31, README.md:27-33
3. Security Layer
Ensures that sensitive data, such as API keys, never leaves the device in an unencrypted or unauthorized manner. It utilizes Android Keystore-backed storage and provides sanitization during data backups.
Sources: VOXTRAL_KEYBOARD_PLAN.md:33-37, README.md:35-39
The following diagram illustrates the high-level data flow when a user initiates a voice-to-text request:
The diagram shows the internal orchestration of a voice input request, from microphone capture and secure key retrieval to the external ASR service.
Sources: VOXTRAL_KEYBOARD_PLAN.md:20-31, AGENTS.md:34-36, app/src/main/res/values/strings.xml:470-496
Key Features and Components
Ownkey Keyboard extends standard IME features with integrated AI controls and enhanced customization options.
AI Input Features
The keyboard provides two primary AI-driven tools accessible via the Smartbar quick actions:
- Mistral Voxtral ASR: Real-time voice-to-text dictation using configurable models (defaulting to
voxtral-mini-latest). - LLM Rewrite: Uses LLMs to rewrite selected text based on "Rewrite Voices" (prompt instructions).
| Feature | Description | Configurable Parameters |
|---|---|---|
| Voxtral ASR | Internal dictation flow for voice input. | Endpoint URL, Model, API Key, Language Hint. |
| LLM Rewrite | Modifies selected text using AI prompts. | Provider, Endpoint, Model, Voice Names, Instructions. |
Sources: README.md:25-33, app/src/main/res/values/strings.xml:470-520, AGENTS.md:15-18
Security and Privacy Implementation
Security is handled through AndroidX Security and Keystore-backed preferences.
| Security Component | Implementation Detail |
|---|---|
| API Key Storage | Stored using Android Keystore-backed encrypted preferences. |
| Migration | Legacy plaintext keys are migrated to encrypted storage and deleted. |
| Backup Sanitization | Sensitive key values are removed from backup exports to prevent leaks. |
Sources: README.md:35-39, VOXTRAL_KEYBOARD_PLAN.md:33-37
User Interface and UX
The keyboard utilizes a "Smartbar" for quick actions and a highly customizable theme engine called "Snygg".
Quick Actions and Smartbar
The Smartbar is a row located at the top of the keyboard containing shortcuts for various operations. Users can reorder, hide, or pin these actions.
| Action Name | Function |
|---|---|
ai_rewrite | Rewrites selected text using the configured LLM. |
voice_input | Initiates the internal Voxtral dictation flow. |
toggle_incognito | Prevents the keyboard from learning words from input. |
clipboard_copy/paste | Direct access to the internal clipboard manager. |
Sources: app/src/main/res/values/strings.xml:105-156, VOXTRAL_FEATURE_SCOPE.md:43-55
Theme and Design
Ownkey introduces simplified theme controls compared to its parent project:
- Appearance Modes: Light, Dark, or Follow System.
- Key Styling: Toggleable key borders and adjustable corner radius (None, Small, Medium, Large).
- Fine-Tune Editor: Allows granular CSS-like styling of elements such as
glide_trail,key_popup_box, andsmartbar.
Sources: README.md:52-58, app/src/main/res/values/strings.xml:230-310
Project Roadmap
The roadmap indicates a transition from implementing core AI features to refining quality and platform support.
| Phase | Milestone | Focus Areas |
|---|---|---|
| Current (v0.6) | AI Integration | Word suggestions, Spell checking, Voxtral ASR, BYOK security. |
| Next (Phase A/B) | Quality Refinement | Robust streaming transcripts, language-aware correction, stop detection. |
| Future (v0.7+) | Platform & Logic | Wear OS IME, Floating mode, Unicode Keyboard v3 engine. |
Sources: ROADMAP.md:20-65, VOXTRAL_KEYBOARD_PLAN.md:55-70
Development and Build Information
Technical Requirements
- IDE: Android Studio (Stable)
- JDK: Java 17
- Native Tools: CMake 3.22+, Clang 15+, and Rust (for underlying libraries).
- Manual Build:
./gradlew :app:assembleDebug
Sources: README.md:73-77, CONTRIBUTING.md:70-85
Artifacts and Releases
The CI pipeline (GitHub Actions) generates versioned artifacts for both the phone and Wear OS modules. Release builds generate Android App Bundles (AABs) formatted with the schema: ownkey-[module]-[build_type]-v[version]-[sha].[ext].
Sources: README.md:85-95
Summary
Ownkey Keyboard represents a shift toward user-controlled AI input on Android. By providing a direct integration with Mistral Voxtral ASR and LLM rewriting while maintaining local, encrypted key storage, it offers a functional alternative to vendor-locked keyboards. The project prioritizes typing quality through tuned frequency dictionaries and maintains a derivative but distinct design direction from FlorisBoard.
Sources: README.md:3-13, VOXTRAL_KEYBOARD_PLAN.md:3-15, AGENTS.md:12-19