- Intercepts the BlackBerry Assistant web fallback when local search and Extend Search do not find an answer.
- Opens AssistantBridge instead of the Browser and automatically sends the received prompt.
- Creates a new session for every redirect from the BlackBerry Assistant.
- Connects directly from BB10 to the selected AI provider over HTTPS; no PC, companion app, or intermediate server is required at runtime.
- Uses the original BlackBerry Assistant microphone and voice pipeline as the primary voice input path.
- On rooted BB10 devices, includes an experimental headless localhost Voice Proxy beneath the original Assistant.
- Reads the active Assistant locale and selects its installed Dragon configuration instead of hardcoding one language.
- Implements multipart audio extraction and PCM chunk reconstruction, with a boundary ready for a future local speech-to-text engine and native
nlsml_resultsresponses. - Provides a continuous ChatGPT-style view with separate messages, live token streaming, rich Markdown, and formatted JSON.
- Preserves the complete conversation context when sending follow-up messages to the provider.
- Persists local sessions, derives their titles from the first question, and supports rename/delete.
- Includes a scrollable side drawer for switching, creating, renaming, and deleting sessions.
- Supports copy and retry actions for chat messages, plus cancellation while a response is pending.
- Updates the current assistant bubble incrementally during streaming without rebuilding the whole conversation.
- Lets users select the AI provider, model, and API key from AI Settings.
- Includes an initial provider/model catalog with Responses, OpenAI-compatible Chat Completions, and Anthropic Messages formats.
- Stores API keys, configuration, and sessions in the app’s private BB10 storage.
- Keeps the original BlackBerry Assistant tiles, local search, Extend Search, and native components unchanged.
- Includes conservative routing for selected native commands, including the BB10 dialer and native PIM apps.
- Does not permanently modify BB10 system files; the rooted-device voice proxy replaces the running ASR service at runtime.
The Markdown reader supports headings, bold, italic and strikethrough text, links, blockquotes, ordered and unordered lists, task lists, tables, separators, inline code, fenced code blocks, and pretty-printed JSON.
Original BlackBerry Assistant
|
| unresolved question, web fallback, or Instant Action
v
AssistantBridge (app-only invocation; no system patch)
|
| new session + received prompt
v
User-selected AI provider
|
| HTTPS response stream
v
Live response in the local chat
The PC is only needed to compile, package, and install the app during development. After installation, the runtime path is BB10 → AI provider.
The initial catalog includes:
- OpenCode Go
- OpenCode Zen
- OpenAI
- Anthropic
- OpenRouter
- DeepSeek
- Groq
- Mistral
- xAI
- Together AI
- MiniMax
Provider endpoints and fallback models are preconfigured in the bridge. After saving a provider API key, use Refresh models to retrieve the live catalog from that provider. Select the provider and model, then press Save; each provider keeps its own API key.
.
├── assets/
│ ├── main.qml # Chat, drawer, input, and navigation
│ ├── settings.qml # Provider, model, and API key
│ └── about.qml # Description and license
├── src/
│ ├── bridgeclient.cpp/.h # Invocation, networking, providers, and sessions
│ ├── intentrouter.cpp/.h # Conservative native intents
│ ├── voiceclient.cpp/.h # Experimental private VoiceServices probe (not part of the runtime)
│ ├── voiceproxyservice.cpp/.h # Headless Dragon-compatible ASR proxy
│ └── main.cpp
├── device/
│ ├── AssistantBridge.pro
│ └── bar-descriptor.xml
├── branding/
│ └── assistantbridge-icon-source.png
├── bridge/ # Optional desktop HTTP mock
├── evidence/ # Sanitized technical evidence
├── LICENSE
└── BlackBerry_Assistant_Revival_Plan.md
A BlackBerry Native SDK/QNX 10.3.1 environment configured for ARMv7 and Qt/Cascades 1.4 is required.
./scripts/build.sh 'projects/BB Assistant R/device' debug
./scripts/package.sh 'projects/BB Assistant R/device'
./scripts/deploy.sh 'projects/BB Assistant R/device/AssistantBridge.bar' <device-ip>Build output is intentionally kept outside version control; create the BAR locally with the commands above.
- Install the app with Developer Mode enabled.
- Open AI Settings, choose a provider and model, and save the API key.
- Launch AssistantBridge once after installation so its headless Voice Proxy is started.
- Open the original BlackBerry Assistant and use its microphone or text field.
- Enter a question that is not resolved locally and press Enter, or speak a request.
- Verify that AssistantBridge opens for text fallback and that native Assistant voice recognition remains available.
Detailed coverage is documented in evidence/TEST_MATRIX.md. Verified voice findings and remaining checkpoints are consolidated in evidence/VOICE_PROXY_FINDINGS.md.
- No API key is included in the source code, repository, or BAR.
- API keys are stored in the app’s private settings.
- Do not commit real keys, passwords, device dumps, or build output.
- Runtime operation does not require a companion server.
- OpenCode Go and the other configured LLM endpoints handle text. No external speech-to-text implementation is included.
- The Voice Proxy is currently intended for rooted/dev-mode BB10 devices because it must start the protected ASR replacement process.
The Python bridge is only for testing the HTTP contract on a desktop and is not part of the BB10 runtime path.
python3 -m unittest discover -s bridge -p 'test_*.py'
ASSISTANT_BRIDGE_MOCK=1 python3 bridge/assistant_bridge.py- The packaged voice proxy reaches
proxy-ready, the custom ASR process publishesavailable::1, and audio from the original Assistant is reconstructed as PCM on device. - A small local BB10-compatible speech-to-text engine still has to be selected and integrated; no external STT endpoint is committed.
- Message and note creation remain preview-only until their BB10 invocation contracts are verified.
- The Markdown reader uses the BB10/Cascades rich-text engine; unsupported Markdown extensions are shown as readable text.
- The provider/model catalog is an initial set and can be extended.
The original code and resources are distributed under the MIT License, a permissive license that allows use, modification, forking, and redistribution while preserving the copyright and license notice.
The project license does not replace the terms of service of any API, SDK, AI provider, or BlackBerry trademark and its respective owners.