import { createFileRoute } from '@tanstack/react-router' export const Route = createFileRoute('/docs/configuration')({ head: () => ({ meta: [ { title: 'Configuration - Paseo Docs' }, { name: 'description', content: 'Configure Paseo via config.json, environment variables, and CLI overrides.', }, ], }), component: Configuration, }) function Configuration() { return (
Paseo loads configuration from a single JSON file in your Paseo home directory, with optional environment variable and CLI overrides.
By default, Paseo uses ~/.paseo as its home directory.
The configuration file is:
You can change the home directory by setting PASEO_HOME{' '}
or passing --home to paseo daemon start.
Paseo merges configuration in this order:
config.json
Lists append across sources (for example, allowedHosts and
cors.allowedOrigins).
Minimal example that configures listening address, host allowlist, provider keys, and MCP:
{`{
"$schema": "https://paseo.sh/schemas/paseo.config.v1.json",
"version": 1,
"providers": {
"openai": { "apiKey": "..." },
"openrouter": { "apiKey": "..." }
},
"daemon": {
"listen": "127.0.0.1:6767",
"allowedHosts": ["localhost", ".localhost"],
"mcp": { "enabled": true }
}
}`}
Voice is provider-based per feature: dictation STT, realtime voice STT, and voice TTS can each
use local or openai.
Defaults are local for all three.
{`{
"version": 1,
"features": {
"dictation": { "stt": { "provider": "local" } },
"voiceMode": {
"stt": { "provider": "local" },
"tts": { "provider": "local" }
}
},
"providers": {
"sherpaOnnx": {
"modelsDir": "~/.paseo/models/sherpa-onnx",
"autoDownload": true,
"stt": { "preset": "parakeet-tdt-0.6b-v3-int8" },
"tts": { "preset": "pocket-tts-onnx-int8" }
}
}
}`}
Local voice uses ONNX models (sherpa-onnx + PocketTTS). Default presets are
parakeet-tdt-0.6b-v3-int8 for STT and
pocket-tts-onnx-int8 for TTS.
With local provider enabled and auto-download on (default outside tests), missing model files are
downloaded at daemon startup into $PASEO_HOME/models/sherpa-onnx.
Downloads are only performed for missing files.
Local ONNX execution is CPU-first by default. It works without GPU requirements, but performance depends on your machine.
To force OpenAI for voice/dictation, configure OpenAI providers explicitly and provide
OPENAI_API_KEY. If OpenAI is selected but credentials are
missing, daemon startup fails fast.
{`{
"version": 1,
"features": {
"dictation": { "stt": { "provider": "openai" } },
"voiceMode": {
"stt": { "provider": "openai" },
"tts": { "provider": "openai" }
}
},
"providers": {
"openai": { "apiKey": "..." }
}
}`}
Realtime voice can create/manage coding agents. Use clear prompts and explicit paths, because those agents can be launched in arbitrary working directories by request.
PASEO_HOME — set Paseo home directoryPASEO_LISTEN — override daemon.listenPASEO_ALLOWED_HOSTS — override/extend daemon.allowedHostsOPENAI_API_KEY and OPENROUTER_API_KEY — override provider keysPASEO_DICTATION_STT_PROVIDER, PASEO_VOICE_STT_PROVIDER, PASEO_VOICE_TTS_PROVIDER — override voice provider selection (local or openai)PASEO_SHERPA_ONNX_MODELS_DIR and PASEO_SHERPA_ONNX_AUTO_DOWNLOAD — control local model directory and download behaviorPASEO_SHERPA_STT_PRESET and PASEO_SHERPA_TTS_PRESET — override local STT/TTS model presets
For editor autocomplete/validation, set $schema to: