* 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.
3.9 KiB
title, description, nav, order
| title | description | nav | order |
|---|---|---|---|
| Configuration | Configure Paseo via config.json, environment variables, and CLI overrides. | Configuration | 8 |
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:
- Defaults
config.json- Environment variables
- CLI flags
Lists append across sources (for example, hostnames and cors.allowedOrigins).
Example
Minimal example that configures listening address, hostnames, and MCP:
{
"$schema": "https://paseo.sh/schemas/paseo.config.v1.json",
"version": 1,
"daemon": {
"listen": "127.0.0.1:6767",
"hostnames": ["localhost", ".localhost"],
"mcp": { "enabled": true }
}
}
daemon.hostnames is the primary field. The old daemon.allowedHosts name still works as a deprecated alias for backward compatibility.
Agent providers
Agent providers — both the first-class ones Paseo ships with and custom entries you add under agents.providers — are documented on their own page.
See Providers for first-class providers, how to point Claude at Anthropic-compatible endpoints (Z.AI, Alibaba/Qwen), multiple profiles, custom binaries, ACP agents, and the additionalModels merge behavior. The full field reference lives on GitHub at docs/custom-providers.md.
Voice
Voice is configured through features.dictation and features.voiceMode, with provider credentials under providers.
For voice philosophy, architecture, and complete local/OpenAI setup examples, see Voice docs.
Logging
Daemon logging uses separate console and file sinks by default:
- Console:
infoand above - File (
$PASEO_HOME/daemon.log):traceand above - File rotation:
10mmax file size,2retained files total (active + 1 rotated)
{
"log": {
"console": {
"level": "info",
"format": "pretty"
},
"file": {
"level": "trace",
"path": "daemon.log",
"rotate": {
"maxSize": "10m",
"maxFiles": 2
}
}
}
}
Legacy fields log.level and log.format are still supported and map to the new destination settings.
Common env vars
PASEO_HOME— set Paseo home directoryPASEO_LISTEN— overridedaemon.listenPASEO_HOSTNAMES— override/extenddaemon.hostnamesPASEO_ALLOWED_HOSTS— deprecated alias forPASEO_HOSTNAMESPASEO_LOG_CONSOLE_LEVEL— overridelog.console.levelPASEO_LOG_FILE_LEVEL— overridelog.file.levelPASEO_LOG_FILE_PATH— overridelog.file.pathPASEO_LOG_FILE_ROTATE_SIZE— overridelog.file.rotate.maxSizePASEO_LOG_FILE_ROTATE_COUNT— overridelog.file.rotate.maxFilesPASEO_LOG,PASEO_LOG_FORMAT— legacy log overrides (still supported)OPENAI_API_KEY— override OpenAI provider keyPASEO_VOICE_LLM_PROVIDER— override voice LLM provider (claude,codex,opencode)PASEO_DICTATION_STT_PROVIDER,PASEO_VOICE_STT_PROVIDER,PASEO_VOICE_TTS_PROVIDER— override voice provider selection (localoropenai)PASEO_LOCAL_MODELS_DIR— control local model directoryPASEO_DICTATION_LOCAL_STT_MODEL— override local dictation STT modelPASEO_VOICE_LOCAL_STT_MODEL,PASEO_VOICE_LOCAL_TTS_MODEL— override local voice STT/TTS modelsPASEO_VOICE_LOCAL_TTS_SPEAKER_ID,PASEO_VOICE_LOCAL_TTS_SPEED— optional local voice TTS tuning
Schema
For editor autocomplete/validation, set $schema to:
https://paseo.sh/schemas/paseo.config.v1.json