Ubunatic Coding
Linux / Wayland · Privacy-First Voice Input

voxi types what you say, as you say it.

High-performance, local speech-to-text dictation for Linux/Wayland. Continuous eager sentence streaming, kernel-level modifier key gating safety, and direct synthetic typing injection into any active window with zero cloud dependencies.

⚡ Local Whisper (Vulkan / CPU) 🛡️ Hotkey-Safe Gating ⌨️ Wayland Direct Typing 📜 AGPL-3.0
voxi eager --type --history --model small.en
● listening... (pre-roll 500ms, threshold 150 RMS, model small.en)
→ speech detected: buffering audio stream...
◆ modifier gate: Super held down, buffering typed output
✓ modifier gate: Super released, safe to inject keystrokes
⌨ typed: "Shipping continuous eager sentence streaming today."
⚡ transcribed: 1.82s audio in 0.31s (5.87x realtime, GPU Vulkan)
● silence 800ms detected, phrase finalized
✔ history: appended entry a91f (36 chars)

Engine Highlights & Architecture

Engineered for seamless voice dictation without lag, dropped words, or accidental hotkey triggers.

Continuous Eager Streaming

Maintains a circular pre-roll buffer to preserve initial phonemes. Utterances are segmented on natural pauses (800ms silence) or rolling windows and transcribed eagerly in sub-second bursts with zero dropped words across pauses.

voxi eager / voxi agent
🛡️

Physical Modifier Gating Safety

Monitors physical modifier keys (Ctrl, Alt, Super, Shift) directly from the kernel via evdev EVIOCGKEY with sub-10ns release gating. Prevents destructive hotkey collisions while strictly guaranteeing zero non-modifier keylogging.

voxi-modifierd
⌨️

Direct Synthetic Keystrokes

Types directly into active Wayland windows using dotool/dotoold with full XKB layout awareness (e.g. German QWERTZ, Colemak, Dvorak) and instantaneous atomic clipboard fallback (wl-copy).

dotool + wl-copy
📊

Btop-Style Resource Monitor

A rich terminal HUD displaying real-time audio RMS energy meters, transcription latency sparklines, GPU Vulkan / CPU utilization, and daemon health stats with interactive panel controls.

voxi monitor --watch
🧩

GNOME Shell Companion

A dedicated top-bar extension (voxi@ubunatic.com) providing one-click recording toggles, live status indicators, runtime mode switching (eager, batch, streaming), typing speed controls, and a dictation history popup.

voxi@ubunatic.com
🧹

Spec-Driven Hallucination Filtering

Automatically suppresses Whisper silence hallucinations and repetitive subtitle loops using embedded model specifications (spec/models.yaml) alongside automatic GPU fallback orchestration.

spec/models.yaml

Real-Time Terminal Dashboard

Inspect audio levels, latency sparklines, and hardware acceleration with btop aesthetics.

voxi monitor --watch · btop dashboard LIVE HUD
╭──[s] voice & speed────────────────────────╮ ╭──[h] hardware load─────────────────────────╮
│ status:  RECORDING (eager / small.en)     │ │ cpu:  12.4%  [ ▂▃▅▄▃▂  ▂▃]  avg 4.2% (1c) │
│ engine:  gpu:Vulkan0  ·  mods: gate-ready │ │ gpu:  34.8%  [ ▃▅▇█▆▄▃   ]  sys 1.05% │
│ speed:    5.8x realtime █████████░         │ │ mem:  42.8 MB daemon   512 MB / 8.0 GB VRAM│
│ lag:     0.31s · 1m 24s audio (14 utt)     │ │ up:   1h 42m 10s (PID 34821)               │
╰───────────────────────────────────────────╯ ╰────────────────────────────────────────────╯
╭──[t] transcript feed─────────────────────────────────────────────────────────────────────╮
│ 11:20:14  [0.31s]  "let's ship the eager streaming engine today."                        │
│ 11:20:18  [0.28s]  "modifier gating ensures hotkeys never collide with typing."          │
│ 11:20:22  [0.29s]  "continuous dictation is running smoothly on wayland."                │
╰──────────────────────────────────────────────────────────────────────────────────────────╯
╭──[d] daemon health & processes───────────────────────────────────────────────────────────╮
│ ✓ voxi-agent (PID 34821)  ·  ✓ voxi-modifierd (PID 1120)  ·  ✓ dotoold (PID 2104)             │
╰──────────────────────────────────────────────────────────────────────────────────────────╯

Quickstart & Installation

Get up and dictating in under two minutes.

1

Clone and Install

Compile user binaries and install systemd user service units:

$ git clone https://codeberg.org/ubunatic/voxi.git
$ cd voxi
$ make install
$ make install-user-services
# (Optional) Install physical modifier gating daemon
$ sudo make install-modifierd
2

Enable Background Agent

Start the unified background voice service with systemd:

$ systemctl --user enable --now voxi-agent.service
3

Start Dictating

Toggle recording from CLI, desktop hotkey, or the GNOME Shell extension:

$ voxi record toggle    # Toggle dictation recording
$ voxi record status    # Check current state
$ voxi monitor --watch  # Open live btop dashboard

Prerequisites & System Dependencies

voxi relies on lightweight, standard Linux/Wayland components.

Dependency Purpose Package / Source
Go 1.22+ Compilation of voxi CLI, agent, and daemons golang / go
dotoold / dotool Hotkey-safe Wayland synthetic typing injection git.sr.ht/~geb/dotool
wl-clipboard Clipboard operations (wl-copy) and fast atomic fallback wl-clipboard
whisper.cpp / voxtype Local Whisper inference (Vulkan GPU acceleration / multi-threaded CPU) whisper.cpp
Audio Capture 16kHz mono audio stream recording pipewire-pulse (parec) or alsa-utils (arecord)
evdev Access Physical modifier key state monitoring voxi-modifierd (systemd system service)

GNOME Shell Companion Extension

Desktop integration at your fingertips with voxi@ubunatic.com.

  • Top-Bar Panel Indicator: Instant visual state of audio recording and eager stream processing.
  • Mode Switcher: Switch seamlessly between eager, batch, and streaming modes.
  • Typing Delay Slider: Adjust injection timing dynamically for sensitive target applications.
  • Recent Transcripts Popup: Quick access to view, copy, or re-type recent dictation history.
# Link extension into GNOME Shell extensions directory
$ mkdir -p ~/.local/share/gnome-shell/extensions
$ ln -s "$(pwd)/contrib/gnome-shell-extension" ~/.local/share/gnome-shell/extensions/voxi@ubunatic.com

# Enable the extension
$ gnome-extensions enable voxi@ubunatic.com

Command-Line Reference

Complete manual page specification and CLI parameters.

VOXI(1) General Commands Manual VOXI(1)

Name

voxi — standalone Linux voice input, continuous eager sentence streaming, and desktop typing engine

Synopsis

voxi command [subcommand] [flags]
voxi mode [batch|streaming|eager]
voxi record {toggle|start|stop|status}
voxi eager [--type] [--history] [--daemon] [--model name] [flags...]
voxi monitor [-w|--watch] [-i seconds] [-s sections]
voxi bench [--models list] [--backends cpu,gpu] [--record] [--file wav] [--json path]
voxi history {list|clear|copy ID|retype ID}
voxi config {get|set} type-delay-ms [MS]
voxi daemon modifier-service [--state-file path] [--interval dur]

Commands

mode [batch|streaming|eager]
Show the active voice-input mode, or switch to one of the three transcription strategies. With no argument, prints the current mode.
record {toggle|start|stop|status}
Control an active dictation recording session out-of-band, e.g. from a desktop hotkey or the GNOME extension's panel toggle.
eager [flags]
Run continuous eager sentence streaming dictation. Segments speech on pauses and transcribes phrases in real-time.
monitor [-w|--watch] [-i seconds] [-s sections]
Print or live-refresh a btop-style report covering transcription latency, audio RMS meters, CPU/GPU loads, and daemon health. Aliases: top, stats, resources.
bench [flags]
Benchmark transcription speed (RTF & speedup) for models declared in spec/models.yaml across cpu and gpu backends against standard reference samples.
history {list|clear|copy ID|retype ID}
Inspect and reuse local dictation transcripts. copy places text onto the clipboard; retype injects it directly into the active window.
config {get|set} type-delay-ms [MS]
Read or change typing speed in voxtype configuration to adjust keystroke pacing for legacy or latency-sensitive applications.
daemon modifier-service [flags]
Run the evdev modifier monitoring service directly (normally managed via voxi-modifierd system service).

Eager Options

--threshold N
Audio RMS energy threshold to trigger speech detection (default: 150).
--silence ms
Silence pause duration required to finalize a phrase utterance chunk (default: 800ms).
--pre-roll ms
Pre-speech circular buffer duration, preserving initial phonemes from clipping (default: 500ms).
--min-speech ms
Minimum speech duration to accept as a valid utterance rather than discarding as background noise (default: 200ms).
--max-window ms
Maximum window length before forcing transcription chunking even without a natural pause (default: 8000ms).
--type
Directly inject transcribed sentences into the active window via dotool(1).
--history
Log transcribed utterances into the local dictation history store.
--daemon
Run as a background daemon responding to record toggle controls.
--model name
Whisper model specification to load (default: small.en, with automatic base.en or CPU fallback).

Modifier Gating Architecture

voxi-modifierd reads physical modifier key states directly from the Linux kernel via evdev's EVIOCGKEY, completely independent of compositor or window manager events. When a modifier such as Super, Ctrl, Alt, or Shift is physically depressed, voxi buffers typed output and flushes it immediately upon release (sub-10ns gating). This prevents accidental window close commands or shortcut collisions during push-to-talk dictation while strictly ensuring zero non-modifier keylogging.

voxi 0.1 Linux / Wayland Engine VOXI(1)