mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
* docs: rename to lowercase + drop leftover plans Rename docs in docs/ to lowercase kebab-case for consistency and update all references in CLAUDE.md, CONTRIBUTING.md, CHANGELOG.md, packages/server/CLAUDE.md, and inter-doc links. Drop two leftover design plan docs: - docs/ATTACHMENT_BASED_REVIEW_CONTEXT_PLAN.md - docs/plan-approval-normalization.md * docs: drop stale uppercase entries from case-insensitive rename * feat(website): power /docs from public-docs/ markdown tree Move website docs out of TSX route components and into a root-level public-docs/ directory of plain markdown files with frontmatter (title, description, nav, order). - Add packages/website/src/docs.ts loader using import.meta.glob with ?raw to compile the markdown into the bundle at build time. - Replace the 9 hand-written docs/*.tsx routes with a single $.tsx catch-all that renders any slug via react-markdown. - Drive the docs sidebar nav from frontmatter order/nav. - Auto-discover docs routes in vite.config.ts so the sitemap stays in sync without manual edits. * fix(website): bind dev server to 0.0.0.0 so port collisions trigger fallback `host: "127.0.0.1"` (or unset) lets macOS coexist with another process holding an IPv6 dual-stack `*:8082` socket, so Vite never sees EADDRINUSE and silently binds alongside it. Forcing IPv4 wildcard makes the conflict real, and Vite's default `strictPort: false` falls through to the next free port. * fix(website): restore docs page styling after markdown migration Add a .docs-prose class that mirrors the styling the original docs/*.tsx components hand-rolled (h1/h2/h3 sizes, paragraph/list spacing, link colors, code blocks, callout-style blockquotes). ReactMarkdown was emitting unstyled HTML because the previous wrapper class only had inline-code rules — headings and code blocks fell back to user-agent defaults.
82 lines
2.7 KiB
Markdown
82 lines
2.7 KiB
Markdown
---
|
|
title: Voice
|
|
description: Paseo voice architecture, local-first model execution, and provider configuration.
|
|
nav: Voice
|
|
order: 3
|
|
---
|
|
|
|
# Voice
|
|
|
|
Paseo has first-class voice support for dictation and realtime conversations with your coding environment.
|
|
|
|
## Philosophy
|
|
|
|
Voice is local-first. You can run speech fully on-device, or choose OpenAI for speech features. For voice reasoning/orchestration, Paseo reuses agent providers already installed and authenticated on your machine.
|
|
|
|
This keeps credentials and execution in your environment and avoids introducing a separate cloud-only voice stack.
|
|
|
|
## Architecture
|
|
|
|
- Speech I/O: STT and TTS providers per feature (`local` or `openai`)
|
|
- Local speech runtime: ONNX models executed on CPU by default
|
|
- Voice LLM orchestration: hidden agent session using your configured provider (`claude`, `codex`, or `opencode`)
|
|
- Tooling path: MCP stdio bridge for voice tools and agent control
|
|
|
|
## Local Speech
|
|
|
|
Local speech defaults to model IDs `parakeet-tdt-0.6b-v3-int8` (STT) and `kokoro-en-v0_19` (TTS, speaker 0 / voice 00).
|
|
|
|
Missing models are downloaded at daemon startup into `$PASEO_HOME/models/local-speech`. Downloads happen only for missing files.
|
|
|
|
```json
|
|
{
|
|
"version": 1,
|
|
"features": {
|
|
"dictation": { "stt": { "provider": "local", "model": "parakeet-tdt-0.6b-v3-int8" } },
|
|
"voiceMode": {
|
|
"llm": { "provider": "claude", "model": "haiku" },
|
|
"stt": { "provider": "local", "model": "parakeet-tdt-0.6b-v3-int8" },
|
|
"tts": { "provider": "local", "model": "kokoro-en-v0_19", "speakerId": 0 }
|
|
}
|
|
},
|
|
"providers": {
|
|
"local": {
|
|
"modelsDir": "~/.paseo/models/local-speech"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## OpenAI Speech Option
|
|
|
|
You can switch dictation, voice STT, and voice TTS to OpenAI by setting provider fields to `openai` and providing `OPENAI_API_KEY`.
|
|
|
|
```json
|
|
{
|
|
"version": 1,
|
|
"features": {
|
|
"dictation": { "stt": { "provider": "openai" } },
|
|
"voiceMode": {
|
|
"stt": { "provider": "openai" },
|
|
"tts": { "provider": "openai" }
|
|
}
|
|
},
|
|
"providers": {
|
|
"openai": { "apiKey": "..." }
|
|
}
|
|
}
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
- `OPENAI_API_KEY` — OpenAI speech credentials
|
|
- `PASEO_VOICE_LLM_PROVIDER` — voice agent provider override
|
|
- `PASEO_LOCAL_MODELS_DIR` — local model storage directory
|
|
- `PASEO_DICTATION_LOCAL_STT_MODEL` — local dictation STT model ID
|
|
- `PASEO_VOICE_LOCAL_STT_MODEL`, `PASEO_VOICE_LOCAL_TTS_MODEL` — local voice STT/TTS model IDs
|
|
- `PASEO_VOICE_LOCAL_TTS_SPEAKER_ID`, `PASEO_VOICE_LOCAL_TTS_SPEED` — optional local voice TTS tuning
|
|
|
|
## Operational Notes
|
|
|
|
Realtime voice can launch and control agents. Treat voice prompts with the same care as direct agent instructions, especially when specifying working directories or destructive operations.
|