Skip to content

Repository files navigation

Ansible - Voice Assistant with GPUI

A native cross-platform voice assistant built with Rust and GPUI.

Architecture

This is a Rust workspace. Crates (see [workspace].members in Cargo.toml for the authoritative list):

  • crates/shared - Shared utilities and types
  • crates/core - Core backend services (audio, transcription, and platform permission/runtime bridges)
  • crates/app - GPUI-based native UI application
  • crates/sidecar-proto - IPC protocol types shared with the sidecar
  • crates/whisper-sidecar - Optional Whisper STT sidecar binary

Prerequisites

  • Rust 1.95 (installed automatically by rustup from rust-toolchain.toml)
  • cmake available on PATH for native speech/model dependencies
  • macOS: Xcode Command Line Tools
  • Linux: libxcb, libxkbcommon, libwayland-client, libvulkan development packages
  • Windows: Visual Studio Build Tools 2022+

Building

# Development build
cargo build --workspace

# Release build with optimizations
cargo build --workspace --release

Running

# Run the GPUI application
cargo run -p app

# Or run the binary directly
./target/release/ansible

Linux Input Permissions

Single-key hotkeys on Linux use evdev and require access to /dev/input/event*. If hotkeys fail to register, add a udev rule and re-login:

KERNEL=="event*", SUBSYSTEM=="input", GROUP="input", MODE="0660"

Then add your user to the input group.

Transcript enhancement

Settings include deterministic custom dictionary replacements, soft vocabulary boosting, and optional AI enhancement via OpenAI-compatible providers (OpenAI, Ollama, LM Studio). OpenAI reads API keys from an env var (default OPENAI_API_KEY); local model hosting inside Ansible is deferred. See docs/design/ai-enhancement-dictionary-vocabulary.md.

Supported Models

Model Size Notes
Parakeet V3 670 MB Fast, accurate English transcription (INT8 parakeet-tdt-0.6b-v3 variant)
Nemotron Streaming 0.6B ~2.5 GB NVIDIA Nemotron; batch transcription plus streaming live preview support.
Nemotron Streaming 0.6B (int8) 876 MB Smaller int8 build of NVIDIA Nemotron (encoder MatMul weights quantized); batch + streaming.
Whisper Small 487 MB
Whisper Medium 539 MB Quantized
Whisper Large 1.1 GB Quantized
Whisper Turbo 1.6 GB

Development

Packaging

Platform packaging metadata for macOS, Windows (MSIX), and Linux (Flatpak) lives under packaging/ and crates/app/. See packaging/PACKAGING.md — the source of truth for the file inventory, the canonical application identity, and verification/build-integration steps.

About

Fast transcription, voice access and control features across the operating system

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages