Skip to main content

░█▀▄░█░░░█░█░█▀▄░▀█▀
░█▀▄░█░░░█░█░█▀▄░░█░
░▀▀░░▀▀▀░▀▀▀░▀░▀░░▀░
  

Talk to your coding agents.

PyPI Downloads License

demo

On-device voice-to-text for macOS. Press right , speak, then press it again - your words go straight into Claude Code, Codex, Cursor, OpenCode or any other agent, wherever your cursor is.

Install

brew tap satyaborg/blurt
brew install blurt

Or via pipx:

pipx install blurt

Requires macOS with Apple Silicon.

First run downloads the selected transcription model once. macOS will prompt for Microphone and Accessibility access (System Settings → Privacy & Security).

Usage

Action Description
Press right Start recording
Press right again Stop, transcribe, paste at cursor
Ctrl + C Quit

Models

Mode Model Use case
fast Qwen3-ASR 0.6B 8-bit Default, lowest latency
accurate Qwen3-ASR 1.7B 8-bit Higher accuracy
blurt mode fast       # use the default 0.6B model
blurt mode accurate   # use the higher-accuracy 1.7B model

The fast mode downloads an approximately 1 GB MLX checkpoint, while accurate mode downloads an approximately 2.5 GB MLX checkpoint. Custom words and filename-shaped repository terms are passed to Qwen as transcription context.

Transcript Casing

blurt case original     # preserve the model's casing
blurt case lowercase    # convert every transcription to lowercase

Custom Words

Teach Blurt words it gets wrong (names, jargon, acronyms):

blurt add "Claude Code"   # add a word
blurt vocab               # list all
blurt rm "Claude Code"    # remove

Words are stored in ~/.blurt/vocab.txt (one per line).

@-mentions

Run Blurt from a git repo and spoken filenames automatically resolve to @path/to/file references that coding agents understand. For example, saying "check init.py for the bug" becomes check @blurt/__init__.py for the bug.

Transcript History

blurt log                 # view recent transcripts

Logs are stored in ~/.blurt/log.txt.

Update

blurt upgrade

Troubleshooting

Issue Fix
"Microphone access" prompt doesn't appear System Settings → Privacy & Security → Microphone → enable your terminal
"Accessibility" error System Settings → Privacy & Security → Accessibility → enable your terminal
No audio / recording fails brew install portaudio then restart your terminal
Model download stalls Check available space in ~/.cache/huggingface/ for the selected model

Contributing

git clone https://github.com/satyaborg/blurt.git
cd blurt
uv pip install -e ".[dev]"
pytest

Privacy

Everything runs on your Mac. No network calls, no telemetry, no data collection. Audio files are saved locally to ~/.blurt/audio/ and never leave your device.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

blurt-0.9.1.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

blurt-0.9.1-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

Details for the file blurt-0.9.1.tar.gz.

File metadata

  • Download URL: blurt-0.9.1.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for blurt-0.9.1.tar.gz
Algorithm Hash digest
SHA256 65b43e5ed491e1f985d24ffe3b3a55f2a1fb06cc4cafb748bdb74253ac2e29ce
MD5 e6f62c6ada921a3953676497cda0b9fd
BLAKE2b-256 4d95680dd4d7c3ae985eb07f16132dbfa682f034d827d1dfd3417da16c2c4f1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for blurt-0.9.1.tar.gz:

Publisher: publish.yml on satyaborg/blurt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file blurt-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: blurt-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 25.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for blurt-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c53df4179f5830c0d7c3625eff3ea84b954a4ecfd5d75fb53b943008f0958657
MD5 e72d43e0d07f28b52cc1dd8c19e7107c
BLAKE2b-256 145e30d56261a49d37e4f5737baada07c6ca4d120613109a94b9611f94b0b171

See more details on using hashes here.

Provenance

The following attestation bundles were made for blurt-0.9.1-py3-none-any.whl:

Publisher: publish.yml on satyaborg/blurt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.9.1 This release

2 files

0.9.0

2 files

0.8.11

2 files

0.8.10

2 files

0.8.9

2 files

0.8.8

2 files

0.8.7

2 files

0.8.6

2 files

0.8.5

2 files

0.8.4

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.7

2 files

0.7.6

2 files

0.7.5

2 files

0.7.4

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.5

2 files

0.6.4

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.5

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.9

2 files

0.3.8

2 files

0.3.7

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.9

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page