Skip to content

0xlau/openbroca

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

285 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


OpenBroca logo

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

Contributors Forks Stargazers Issues License: MIT CI Release Latest Release TypeScript Electron pnpm

Table Of Contents

  1. About The Project
  2. Getting Started
  3. Usage
  4. Project Structure
  5. Architecture
  6. Roadmap
  7. Releasing
  8. Security
  9. Contributing
  10. License
  11. Contact
  12. Acknowledgments

About The Project

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.

(back to top)

Why OpenBroca

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.

(back to top)

What OpenBroca Does

  • 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.

(back to top)

The Idea

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.

(back to top)

Built With

(back to top)

Status

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.

(back to top)

Getting Started

You can use OpenBroca as a packaged desktop app or run it from source for development.

Prerequisites

  • 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, and audify

Install pnpm if you do not already have it:

corepack enable
corepack prepare pnpm@10.32.1 --activate

Installation

Download A Release

Download 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.

Run From Source

  1. Clone the repository:

    git clone https://github.com/0xlau/openbroca.git
    cd openbroca
  2. Install dependencies:

    pnpm install
  3. Start the desktop app:

    pnpm dev
  4. Run the main quality checks:

    pnpm check
    pnpm test
  5. Build the app:

    pnpm build
  6. Create desktop bundles:

    pnpm bundle:mac
    pnpm bundle:win
    pnpm bundle:linux

(back to top)

Usage

  1. Launch OpenBroca.
  2. Complete the desktop permission onboarding for microphone access and platform-specific text delivery.
  3. Select a microphone from the sidebar or tray menu.
  4. Configure ASR and LLM providers in the app.
  5. Use the configured shortcut to start dictation, then speak naturally.
  6. 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.

(back to top)

Project Structure

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 format

Target a specific package:

pnpm --filter openbroca-desktop dev
pnpm --filter @openbroca/providers test
pnpm --filter @openbroca/ui typecheck

(back to top)

Architecture

The 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 LLMProvider and register descriptors with LLMProviderRegistry.
  • ASR providers implement ASRProvider, StreamingASRProvider, or LocalASRProvider.
  • 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.

(back to top)

Roadmap

  • 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.

(back to top)

Releasing

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.

(back to top)

Security

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-archives

If you discover a vulnerability, please follow SECURITY.md and report it privately.

(back to top)

Contributing

Contributions are welcome, especially provider integrations, cross-platform desktop reliability improvements, accessibility fixes, and focused tests.

  1. Fork the project.

  2. Create your feature branch:

    git checkout -b feat/amazing-feature
  3. Commit your changes using Conventional Commits:

    git commit -m "feat: add amazing feature"
  4. Push to the branch:

    git push origin feat/amazing-feature
  5. Open a pull request.

Please read CONTRIBUTING.md and CODE_OF_CONDUCT.md before opening issues or pull requests.

Top Contributors

Top contributors

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Project maintainer: Timothy Lau

Project link: https://github.com/0xlau/openbroca

For bugs and feature requests, use GitHub Issues.

(back to top)

Acknowledgments

(back to top)

About

An open-source, system-wide voice interface for the AI era — dictate into any app, then transcribe, rewrite, and transform with pluggable local or cloud ASR & LLM providers.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors

Languages