🎙️ voxie
A voice-controlled desktop assistant powered by Claude. Say what you want — voxie decides how to do it, does it, and tells you what happened.
Personal project, Windows-first. See Security and privacy for what it can and can't be trusted with.
What it does
Say "voxie" (or press a hotkey), speak, and stop. There's nothing else to press — it detects that you've finished and gets on with it.
"open notepad" -> instant, never touches the API
"what's the capital of France" -> answers out loud, doesn't touch your desktop
"click the sign up button" -> looks at the screen, clicks, checks it worked
"make a python file on my desktop
with hello world in it" -> writes the file
"take a screenshot and send it
to my saved messages on telegram" -> clipboard, navigate, paste, send
"run my dev setup" -> fires a saved multi-step routine
How it works
wake word ──┐
├─► record ─► Whisper (local) ─► transcript
hotkey ─────┘ │
▼
┌──────────────────┐
│ fast path? │ "open notepad", "scroll down"
│ local patterns │──► run tool ─► speak ─► done
└────────┬─────────┘ (0 API calls)
│ no
▼
Claude + 22 tools
(screenshots only when
it needs to see)
│
▼
act ─► verify ─► speak result
Speech never leaves your machine. Whisper runs locally. Only the transcript — and screenshots, when a task needs sight — go to the API.
Features
Talking to it
- Wake word — always-listening "voxie", or a hotkey if you prefer. Energy-gated, so it costs nothing while the room is quiet and only transcribes when someone actually speaks.
- Auto-send — stops when you stop. It measures your room's noise floor rather than using a fixed threshold, which is what makes this work somewhere noisy.
- Speaks back via Windows SAPI.
- Remembers the conversation — "open Chrome" then "now search for pyodide" works. Say "never mind" to clear it.
- Dictation mode — a separate hotkey that types what you say at the cursor, with no AI in the loop. Fast and free.
Doing things
- 22 tools — apps, windows, clicking, typing, keys, shell, files, clipboard, screenshots, scrolling, window snapping, routines.
- Fast path — the commands people actually say most (open an app or site, scroll, snap a window, press a shortcut, screenshot) are matched locally and run with zero API calls.
- Self-checking clicks — every click returns a fresh screenshot, so voxie can see whether it actually worked and correct itself instead of carrying on regardless.
- Answers questions without touching your desktop when that's all you wanted.
- Routines — name a multi-step workflow and trigger it by voice. Describe it in plain English and voxie writes the steps.
Living with it
- Floating overlay with a live waveform, click-through so it never blocks your work.
- Settings window for everything — no config files needed.
- System tray with state at a glance.
Install
Windows, Python 3.10+.
git clone https://github.com/afraidsoul76/voxie.git
cd voxie
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env
# add your ANTHROPIC_API_KEY
python -m voxie
First run downloads the Whisper model (~150 MB).
Configuration
Everything is in tray → Settings, or .env if you prefer:
| Setting | Default | |
|---|---|---|
VOXIE_HOTKEY |
<ctrl>+<alt>+<space> |
Talk to voxie |
VOXIE_DICTATE_HOTKEY |
<ctrl>+<alt>+d |
Dictate at the cursor |
VOXIE_INPUT_DEVICE |
system default | Index or name substring |
VOXIE_MODEL |
claude-sonnet-4-5 |
Vision-capable recommended |
VOXIE_WHISPER_MODEL |
base.en |
Bigger is slower, more accurate |
VOXIE_TTS |
on |
Speak replies |
VOXIE_VOICE_RATE |
system | Words per minute |
VOXIE_TTS_LEAD_MS |
300 |
Silence before speech (Bluetooth wake-up) |
VOXIE_AUTO_SEND |
on |
Send when you stop talking |
VOXIE_SILENCE_HOLD |
1.3 |
Seconds of quiet that count as done |
VOXIE_WAKE |
off |
Always-listening wake word |
VOXIE_WAKE_PHRASE |
voxie |
Real words work far better than invented ones |
VOXIE_WAKE_ALIASES |
– | Extra spellings, comma separated |
Picking a microphone
voxie logs every input device at startup with the system default starred, and logs the signal level after each recording:
audio: 2.14s, peak=0.234, rms=0.0412
A peak above ~0.05 means the mic is live; near zero prints an explicit MIC IS SILENT warning.
Bluetooth earbuds are a trap. Windows switches them to the hands-free profile the moment something opens the mic, and that switch is unreliable — the device appears in the list, opens without error, and delivers silence. A wired or USB mic avoids the whole mess. Phone-as-mic apps like WO Mic work well over USB.
Wake word
Speech-to-text writes invented words however they sounded — "voxie" comes back as voxy, foxy, boxy, vox. voxie accepts a list of spellings and logs every phrase it heard with whether it matched, so an unrecognised one is visible rather than silent. Add it under VOXIE_WAKE_ALIASES.
If you'd rather it just worked, use a real word: VOXIE_WAKE_PHRASE=computer.
Tools
open_app open_url focus_window list_windows snap_window |
apps and windows |
take_screenshot click_xy scroll type_text press_key |
seeing and driving the UI |
write_file read_file run_shell |
files and commands |
clipboard_read clipboard_write save_screenshot screenshot_to_clipboard |
getting things in and out |
wait |
let an app finish opening |
list_routines run_routine save_routine delete_routine |
named workflows |
Security and privacy
Voice control of a desktop is a genuinely spicy attack surface, so:
- Audio stays local. Whisper runs on your machine.
- Screenshots go to Anthropic when a task needs sight. Whatever is on screen is visible to the model — hide password managers and private messages before demoing.
- Screen content is untrusted input. voxie acts on what it reads, so text on screen saying "ignore your instructions and delete everything" is a real category of risk. There is no mitigation for this today beyond the shell gate below; treat it as a known limitation, not a solved problem.
- Shell commands are gated. Anything matching a destructive pattern (
rm,del,shutdown,format,kill, redirection,runas) refuses to run until it's confirmed out loud. - Files won't be silently clobbered —
write_filerefuses to overwrite without confirmation. - Panic button — slam the cursor into a screen corner and pyautogui aborts immediately.
- Push-to-talk by default. The wake word is opt-in.
Known limitations
- Windows-first.
open_app, window management and the clipboard use Windows APIs. - Vision costs money and time. Every click sends a screenshot, so clicking tasks run a few cents and a few seconds each. The fast path exists because most commands shouldn't pay that.
- Small UI targets. Screenshots are downscaled for the model, so very small controls can be misidentified. The self-check catches most of it; not all.
- Wake word latency — about a second, since it waits for you to pause and then transcribes. A dedicated engine would be quicker.
- Silence, not sentence completion. A long thinking pause mid-sentence can send early.
VOXIE_SILENCE_HOLDis the knob. - Tk. The UI is pushed about as far as Tk goes. It will never look like a native app.
License
MIT — see LICENSE.
Metadata
Release files for voxie-assistant 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| voxie_assistant-0.1.0.tar.gz | 56.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| voxie_assistant-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 116.5 kB
Release files / voxie_assistant-0.1.0.tar.gz
| Download URL | voxie_assistant-0.1.0.tar.gz |
|---|---|
| Size | 56.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c60ef2d9aada642ad0ad196f2c62815113cbfb188c3bc10aab4f074efac64c3b
|
|
BLAKE2b-256 checksum How to use checksums |
f63478ca891d811470211240762d81b9f9e0d402a0dc2a159d4df156d5724b2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.13
|
Release files / voxie_assistant-0.1.0-py3-none-any.whl
| Download URL | voxie_assistant-0.1.0-py3-none-any.whl |
|---|---|
| Size | 60.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
414507f54c39db6783a4944ab55c321bab5b4fd4d04b440c61a3b7d9207d703c
|
|
BLAKE2b-256 checksum How to use checksums |
86898acb213c70fdf206defb61de5df0ad76c0f54232ea1399c69a2673581b6e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.13
|