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 (

Configuration

Paseo loads configuration from a single JSON file in your Paseo home directory, with optional environment variable and CLI overrides.

Where config lives

By default, Paseo uses ~/.paseo as its home directory. The configuration file is:

$ ~/.paseo/config.json

You can change the home directory by setting PASEO_HOME{' '} or passing --home to paseo daemon start.

Precedence

Paseo merges configuration in this order:

  1. Defaults
  2. config.json
  3. Environment variables
  4. CLI flags

Lists append across sources (for example, allowedHosts and cors.allowedOrigins).

Example

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

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.

Common env vars

Schema

For editor autocomplete/validation, set $schema to:

https://paseo.sh/schemas/paseo.config.v1.json
) }