Voice Layer is an experimental, local-first macOS voice assistant. It combines
a native Tauri window with a user-managed local llama-server, on-device
speech input and output, and persistent local chat sessions.
The default Local provider sends visible conversation text only to the
llama-server running on your Mac. Voice input, transcription, synthesized
speech, and raw audio remain local. An optional ChatGPT provider is available
through Voice Layer's native OAuth flow; selecting it explicitly sends the
visible conversation for that reply to OpenAI. It is experimental and may be
affected by upstream authentication or account changes. An optional OpenRouter
provider lets you bring your own API key and choose a model from Voice Layer's
generated allowlist; selecting it sends the visible conversation for that reply
to OpenRouter under your key and the selected model's billing.
You need macOS, Bun, Rust stable with the Tauri v2 prerequisites, and just.
-
Install the JavaScript dependencies.
just install
-
Start an OpenAI-compatible
llama-serveron127.0.0.1:8080with an alias Voice Layer supports. For example:llama-server \ --host 127.0.0.1 \ --port 8080 \ --model /absolute/path/to/model.gguf \ --alias qwen36-27b
Supported local aliases are
glm47-flash,qwen36-27b, andgemma4-e4b. Voice Layer does not start, configure, or download the LLM server or its model. -
In a second terminal, launch the app.
just dev
-
Send a message from Chat. The first use of a selected speech model may download it after you initiate the relevant action. Grant microphone access when macOS asks if you want to use voice input or Live.
- Chat and Live voice conversations backed by the same locally stored session.
- Curated local assistant, speech-to-text, and text-to-speech choices.
- Sentence-streamed local speech for visible assistant replies.
- A user-controlled thinking level for local assistant requests.
- An explicit, optional ChatGPT subscription provider with native OAuth—no API key or separate coding-client account state is used.
- An explicit, optional OpenRouter BYOK provider: you paste your own API key (stored natively, revealed only as a redacted status), select a model from a checked-in allowlist, and stream Chat and spoken Live replies through OpenRouter.
just dev # Run the native Tauri application
just web # Run only the Vite frontend
just test # Run frontend and native tests
just check # Run build, test typecheck, Rust format check, and Rust check
just build # Build the optimized executable without packaging
just bundle # Build Voice Layer.app
just open # Build and open Voice Layer.appMaintainers can validate a fresh source build locally with:
just source-check-macos
just source-check-linuxThe macOS check copies the current source into a temporary directory, uses
temporary Bun and Cargo caches, runs just test, just check, and just bundle, and verifies the resulting Voice Layer.app. It requires Bun, Rust,
just, and Xcode Command Line Tools. Normal source builds currently require
network access because the sherpa-onnx native dependency may download its
matching archive.
The Linux command requires Docker Desktop or Docker Engine. It performs a
fresh, no-cache build by default in a clean Debian container and runs
just test, just check, and just build; set
SOURCE_CHECK_LINUX_CACHED=1 only when a cached Docker build is useful. Linux
defaults to the linux/amd64 Docker platform for reproducible native
dependencies on Apple Silicon; override with SOURCE_CHECK_LINUX_PLATFORM when
needed. Linux is compile/test coverage only: macOS is the supported application
target, and this check does not validate Live mode, microphone capture,
AVFoundation playback, or the complete desktop experience.
Run just to see the complete command list.
- Model integrations — local model IDs, server setup, artifacts, and validation.
- ChatGPT subscription integration — OAuth, privacy boundary, and tool policy.
- OpenRouter BYOK integration — the BYOK provider, generated model allowlist, and credential boundaries.
- Privacy — local-first data handling and the optional provider.
- Contributing — contribution expectations and validation.
- Third-party notices — dependencies and model terms.
Voice Layer is available under the MIT License. Downloaded models, reference audio, and other third-party components remain subject to their own terms.
