Text that sounds like you.

Say it, or let your agents draft it. What lands in Slack, WhatsApp, email or a doc is what you would have typed there: your words, your habits with that person, your language with them.

said:

WhatsAppPablo


            

Spanish, one line, no greeting: how you text him.

EmailDana


            

"Hi Dana," and your sign-off: how you mail her.

Slack#general


            

Lowercase, "quick one:", a question at the end.

same intent, three places · invented, typical output
Install Linux + Hyprland · Python 3.12+
git clone https://github.com/joanreyero/voz ~/Work/voz && uv tool install --editable ~/Work/voz
Full setup → Free. MIT. No backend.

[Trained on you]

It learns how you write, from what you wrote

A style guide per place you write, counted from every message of yours, with verbatim examples. Then a profile per person you write to a lot.

styles/slack.md

Short, lowercase, a question at the end. voz counts what can be counted and a model writes the rest from the text itself.

1,840 messages · median 7 words · 92% lowercase opener · 4% end with a full stop · "wdyt?" ×61

~/.config/voz/styles/slack.md
## Voice
- one thought per message, 7 words median
- lowercase opener (92%), no final full stop (96%)
- asks for a decision at the end: "wdyt?", "ok?"
- never a greeting, never a sign-off
## Examples
- quick one: can we ship the fix before the demo?
- makes sense, let's do the smaller one first. wdyt?

Invented guides; yours are counted from your own messages, read straight from the tools, nothing to export. A weekly refresh pulls what is new and relearns a style only when it grew. voz undo <style> puts the previous one back; your ## Overrides survive every relearn.

[Right for where it lands]

Not what was heard. What you would have typed here.

When you press the key, voz reads the active window: which app, which conversation, who you are replying to. The text comes out right for that place.

01 Who

Your habits with that person: how you greet them or don't, how you say yes to them, your emoji with them. A profile is counted from your messages to each person you write to a lot, and the window title picks it.

profiles · counted in code, no model

02 Where

Slack gets your Slack, email gets your email, a coding agent gets a prompt with the paths spelled right. One style per app, matched on the window; voz style slack forces one.

styles · one per place you write

03 Which language

If you write to someone in Spanish 90% of the time and dictate in English, the message comes out in Spanish. Say "in English" or "en català" first to force it; the words are dropped from the text.

conversation language · en, es, ca tuned

04 What you meant

Spoken corrections applied, fillers gone, names spelled from your vocabulary, your bullets where you dictated bullets. Nothing you did not say. voz never changes the meaning, it only makes the text yours.

voz status shows the raw transcript next to what was typed

Under the hood: three speech engines hear at once (a cloud model, local whisper, optionally a second cloud model) and where they disagree is where the misheard word is; the screen is OCR'd while you still talk, never while locked, never a password manager. About three seconds after you let go, the text is at your cursor. If the model is down, the transcript is typed and a notification says so. → How it works, step by step

[Yours]

Nothing comes to us. There is no us.

voz has no backend. What leaves your machine goes to the providers you chose, with your own keys. Everything learned stays in plain files in your home.

What leaves the machine, and what never does

Leaves: the audio, to the speech providers you configured; the transcript, screen text and your style, to the language model you configured; your messages, once per learn, to the model that writes the guide. Never leaves: your style files, profiles, message archives and dictation history, plain files under ~/.config/voz and ~/.local/share/voz, readable only by you.

No account, no server, no telemetry

A program on your machine, nothing more. MIT licensed, free, forever.

Your keys, your providers

You pick the speech and language models (Vercel AI Gateway, OpenAI, ElevenLabs) and pay them directly. voz setup --stt local keeps every byte of audio on your machine.

Read-only sources

It never writes to Slack, WhatsApp, HEY, Gmail or Drive. It only reads what you wrote.

Audited by itself

voz doctor fails if styles, sources, profiles or a secret file sit in a git repository that does not ignore them. Files are 0600; the daemon answers only plain local requests, sandboxed under systemd.

[Two ways in]

Your voice, or your agents. Same output.

The writing pass behind the microphone is also a CLI. Anything an agent drafts on your behalf can land in your voice too.

Voice

Hold a key, talk, release

On Linux today, through Voxtype: it records, voz hears and writes, Voxtype types. voz-ptt gives one key three gestures.

  • holdtalk, release, typed
  • double taplock hands-free
  • shift + holdraw transcript, no writing pass

Linux + Hyprland · Voxtype 1.1+

Agents

Claude Code, Codex and Pi write like you

Pass the style, the destination and what is on screen. Exit code 1 means the model was unavailable and the text came back cleaned but not rewritten.

$ voz write --style slack "rough draft of what to say"
$ echo "draft" | voz write --style email --destination "reply to Dana"
$ voz write --style email --screen thread.txt "draft"
# the microphone's route, from a raw transcript:
$ voz process --json <<< "um so the sync is slow"

voz setup --skills links the onboarding and source skills into ~/.agents/skills · say "onboard me into voz"

[Sources]

Where it reads what you wrote

Live sources are read from the tools you already use, incrementally, with your own login. Exports are read once and frozen. One skill per source.

live, refreshed weekly  ·  once

[Roadmap]

Now, next, later

Intentions, not dates. "Now" works today; the rest is the order we mean to build it in.

Now

  • Linux + Hyprland via Voxtype
  • The live sources above
  • Three ears in parallel
  • Profiles, counted in code
  • Weekly refresh with undo
  • Agent CLI and skills

Next

  • X/Twitter and LinkedIn as sources: archive imports today, live later
  • macOS: the brain already runs anywhere, the push-to-talk integration is what is missing
  • Model-written profiles for the people you write to most
  • Era weighting, so recent writing counts more

Later

  • A fully local option, with a local LLM
  • Windows
  • More languages tuned: today English, Spanish and Catalan have dedicated rules

[At a glance]

Engine
Python 3.12+ · MIT
Price
free · you pay your providers: ~$5/month of LLM at 100 dictations a day, speech $0.10/hour
Speech
three engines in parallel: cloud · local whisper · optional second cloud
Writing
GPT-6.1 Sol via Vercel AI Gateway · any model the gateway offers
Storage
plain files in ~/.config/voz and ~/.local/share/voz
Platforms
Linux + Hyprland (voice) · anywhere Python runs (CLI)
Privacy
no backend · no telemetry · read-only sources

[Get started]

Linux with Hyprland, Voxtype 1.1+, tesseract, wtype, Python 3.12+, uv and one Vercel AI Gateway key. On Arch: yay -S voxtype-bin tesseract tesseract-data-eng wtype.

Quickstart
$ git clone https://github.com/joanreyero/voz ~/Work/voz
$ uv tool install --editable ~/Work/voz
$ mkdir -p ~/.config/voz
$ (umask 077; echo 'AI_GATEWAY_API_KEY=vck_...' > ~/.config/voz/secrets.env)
$ voxtype setup           # once, if Voxtype has no config yet
$ voz setup --stt cloud   # hooks, voz.service, refresh timer, voz-ptt, three ears
$ voz setup --skills      # skills for Claude Code, Codex and Pi
$ systemctl --user restart voxtype
$ voz doctor              # every line ✓

Then open a coding agent and say "onboard me into voz". It asks where you write, connects each place, learns, and checks the result with you.