An open-source voice interface for the AI era.
It turns speech into text, intent into action, and your voice into a system-wide input layer.
Explore the docs »
Download
·
Report Bug
·
Request Feature
- About The Project
- Getting Started
- Usage
- Project Structure
- Architecture
- Roadmap
- Releasing
- Security
- Contributing
- License
- Contact
- Acknowledgments
OpenBroca is an open-source voice interface for the AI era.
Computers should hear you before they read your mind. OpenBroca is built around that simple belief: voice should be a first-class input layer for computers, not a narrow dictation box locked to one vendor, one model, or one workflow.
It started from a personal itch. Tools like Typeless show how delightful desktop dictation can be, but I kept running into places where the behavior I wanted was not customizable. OpenBroca is my attempt to solve that problem for myself first, in the open, with the hope that the same flexibility can help other people shape voice input around their own workflows too.
OpenBroca captures audio locally, routes transcription and LLM work through provider registries, and delivers the final text back into the desktop context where you were working. The app is built with Electron, React, TypeScript, tRPC over IPC, and a provider-first monorepo architecture.
Product screenshots and demo media will be added as the first public release stabilizes.
Keyboards were built for typewriters. They were never designed for how humans actually think.
We think in language.
We speak in flow.
We edit by intention.
OpenBroca exists to make voice a first-class interface for computers:
- Speak naturally, then let OpenBroca transcribe, clean up, and deliver text where you need it.
- Use local or cloud ASR providers through one shared provider contract.
- Connect LLM providers through a registry that supports model selection, provider settings, and middleware.
- Keep provider credentials in OS-backed secure storage.
- Build desktop-first automation without coupling the app to one vendor or hosted backend.
- Dictate into any focused app.
- Use cloud or local ASR providers.
- Rewrite, polish, and transform text with LLM providers.
- Switch between providers and models.
- Build custom voice workflows.
- Extend the system with open provider interfaces.
The future interface will not be the keyboard.
Maybe it is voice.
Maybe it is brain-computer interfaces.
Maybe voice is only the bridge.
OpenBroca is building that bridge.
- Electron
- React
- TypeScript
- electron-vite
- tRPC
- TanStack Query
- Zustand
- Tailwind CSS
- Turborepo
- pnpm
- Vitest
- electron-builder
- release-please
OpenBroca is pre-1.0 software. The repository is active, usable for development, and currently focused on desktop dictation, provider architecture, ASR provider support, LLM provider support, system-wide text insertion, and local-first voice workflows.
Expect provider contracts, desktop UX details, and release packaging to keep moving while the project matures.
You can use OpenBroca as a packaged desktop app or run it from source for development.
- Node.js 22 or newer
- pnpm 10.32.1 or newer
- macOS, Windows, or Linux for local development
- Platform build tools required by native Electron dependencies such as
keytar,uiohook-napi, andaudify
Install pnpm if you do not already have it:
corepack enable
corepack prepare pnpm@10.32.1 --activateDownload the latest installer from the Releases page.
Current release targets:
- macOS Apple Silicon and Intel:
.dmg - Windows x64:
.exe
macOS and Windows builds may be unsigned while the project is early. Your operating system may show the usual unknown publisher warning.
-
Clone the repository:
git clone https://github.com/0xlau/openbroca.git cd openbroca -
Install dependencies:
pnpm install
-
Start the desktop app:
pnpm dev
-
Run the main quality checks:
pnpm check pnpm test -
Build the app:
pnpm build
-
Create desktop bundles:
pnpm bundle:mac pnpm bundle:win pnpm bundle:linux
- Launch OpenBroca.
- Complete the desktop permission onboarding for microphone access and platform-specific text delivery.
- Select a microphone from the sidebar or tray menu.
- Configure ASR and LLM providers in the app.
- Use the configured shortcut to start dictation, then speak naturally.
- Let OpenBroca transcribe, rewrite, polish, transform, and deliver the result to your active app or clipboard fallback.
Default shortcuts and provider setup may change before the 1.0 release. See docs/PRIVACY.md for data-handling notes and docs/ARCHITECTURE.md for how the desktop processes fit together.
apps/
desktop/ Electron + React desktop app
packages/
app-identity/ Cross-platform active app/window identification
audio-capture/ Audio capture primitives
providers/ ASR/LLM provider contracts, registries, implementations
ui/ Shared React component library
eslint-config/ Shared ESLint config
tailwind-config/ Shared Tailwind CSS base
typescript-config/ Shared TypeScript configs
docs/
ARCHITECTURE.md System overview
PRIVACY.md Data and credential handling notes
RELEASING.md Release process
ROADMAP.md Current direction
Common workspace commands:
pnpm dev
pnpm build
pnpm lint
pnpm typecheck
pnpm test
pnpm formatTarget a specific package:
pnpm --filter openbroca-desktop dev
pnpm --filter @openbroca/providers test
pnpm --filter @openbroca/ui typecheckThe desktop app uses Electron's main, preload, and renderer processes under apps/desktop/src.
Renderer-to-main communication goes through tRPC over a custom Electron IPC transport rather than HTTP:
Renderer
-> tRPC client
-> preload contextBridge
-> ipcMain handler
-> main-process tRPC router
The provider platform lives in packages/providers and is consumed directly as TypeScript source by the desktop app.
- LLM providers implement
LLMProviderand register descriptors withLLMProviderRegistry. - ASR providers implement
ASRProvider,StreamingASRProvider, orLocalASRProvider. - Provider configuration uses a minimal
ConfigSchema<T>interface, so Zod or any compatible parser can be used. - LLM middleware can wrap provider completion for cross-cutting behavior.
Read the full system overview in docs/ARCHITECTURE.md.
- Stabilize desktop dictation.
- Harden system-wide text insertion.
- Expand ASR provider support.
- Expand LLM provider support.
- Improve local-first voice workflows.
- Improve local ASR model management.
- Add richer update and release verification.
- Publish polished screenshots and demo media.
- Document provider authoring in more depth.
See docs/ROADMAP.md and the open issues for proposed features and known issues.
OpenBroca uses release-please to manage version bumps, changelog entries, tags, and GitHub Releases from Conventional Commits.
The release workflow builds macOS and Windows installers, uploads them to GitHub Releases, and publishes update metadata for electron-updater.
Read the release checklist in docs/RELEASING.md.
Do not commit API keys, model provider credentials, local .env files, desktop build artifacts, or agent-local state. The repository is configured to ignore common local and secret-bearing files.
Before opening a PR, run a local secret scan:
trufflehog git file://$(pwd) --no-update
trufflehog filesystem . --no-update --force-skip-binaries --force-skip-archivesIf you discover a vulnerability, please follow SECURITY.md and report it privately.
Contributions are welcome, especially provider integrations, cross-platform desktop reliability improvements, accessibility fixes, and focused tests.
-
Fork the project.
-
Create your feature branch:
git checkout -b feat/amazing-feature
-
Commit your changes using Conventional Commits:
git commit -m "feat: add amazing feature" -
Push to the branch:
git push origin feat/amazing-feature
-
Open a pull request.
Please read CONTRIBUTING.md and CODE_OF_CONDUCT.md before opening issues or pull requests.
Distributed under the MIT License. See LICENSE for more information.
Project maintainer: Timothy Lau
Project link: https://github.com/0xlau/openbroca
For bugs and feature requests, use GitHub Issues.
- Best-README-Template for the README structure.
- Electron and electron-builder for desktop packaging.
- Turborepo and pnpm for monorepo tooling.
- release-please for release automation.
- Everyone who files issues, tests builds, improves providers, and helps make OpenBroca calmer and more useful.