| name | agentwire-config |
| description | Reference for `~/.agentwire/config.yaml` — main config structure including server/portal/SSL, projects, TTS/STT, agent, dev, services, executables, uploads/artifacts/wiki, channels (email + quo, outbound-only), scheduler, worktree, session defaults. Use when editing or debugging agentwire config, setting up TTS/STT backends, or explaining config fields to the user. |
AgentWire Config (~/.agentwire/config.yaml)
Layout of ~/.agentwire/
| File | Purpose |
|---|
config.yaml | Main config (see structure below) |
machines.json | Remote machines registry |
scripts/ | Machine-specific helper scripts (TTS management, startup, etc.) |
voices/ | Custom TTS voice samples |
uploads/ | Uploaded images for cross-machine sharing |
artifacts/ | Agent-generated HTML for artifact windows |
wiki/ | LLM-maintained knowledge base (Karpathy LLM Wiki pattern) |
logs/ | Audit logs for damage-control |
Per-session config (posture, roles, voice) lives in .agentwire.yml in each project directory (see agentwire-project-config skill).
Machine Scripts (~/.agentwire/scripts/)
Each machine has a ~/.agentwire/scripts/ directory for machine-specific helper scripts (TTS management, startup hooks, service wrappers, etc.). This is the standard location — agents should look here first and put new scripts here.
Scripts in ~/bin/ should symlink to ~/.agentwire/scripts/ so they're callable from PATH but the source of truth is in one place.
These scripts are not managed by agentwire — they're local to each machine and not version controlled. They exist because different machines have different roles (GPU server runs TTS, Mac runs the portal, etc.) and need different glue scripts.
config.yaml Structure
server:
host: "127.0.0.1"
port: 8765
activity_threshold_seconds: 3
ssl:
cert: "~/.agentwire/cert.pem"
key: "~/.agentwire/key.pem"
allowed_origins: []
projects:
dir: "~/projects"
worktrees:
enabled: true
suffix: "-worktrees"
auto_create_branch: true
copy_files: [".env", ".agentwire.yml", ".agentwire.tasks.yml"]
tts:
backend: "default"
url: "http://localhost:8100"
default_voice: "dotdev"
voices_dir: "~/.agentwire/voices"
instructions: ""
options:
backend: kokoro
exaggeration: 0.5
cfg_weight: 0.5
timeout: 60
stt:
backend: "default"
engine: "auto"
moonshine_model: "moonshine/base"
model: "base"
url: "http://localhost:8101"
cloud:
base_url: "https://api.openai.com/v1"
model: "gpt-4o-mini-transcribe"
api_key_env: "OPENAI_API_KEY"
language: ""
timeout: 30
silence_prepend_ms: 0
instructions: ""
options: {}
corrections: {}
agent:
command: "claude --dangerously-skip-permissions"
dev:
source_dir: "~/projects/agentwire-dev"
services:
portal:
machine: null
port: 8765
session_name: "agentwire-portal"
tts:
machine: "gpu-server"
port: 8100
session_name: "agentwire-tts"
stt:
session_name: "agentwire-stt"
custom:
- name: "agent-brain"
project: "~/projects/brain"
autostart: true
roles: "brain"
posture: "bypass"
restart: on-failure
healthcheck:
kind: tmux_session
url: "http://..."
command: "curl -sf ..."
interval: 60
- "simple-service"
executables:
ffmpeg: "/opt/homebrew/bin/ffmpeg"
whisperkit-cli: "/opt/homebrew/bin/whisperkit-cli"
hs: "/opt/homebrew/bin/hs"
agentwire: "~/.local/bin/agentwire"
uploads:
dir: "~/.agentwire/uploads"
max_size_mb: 10
cleanup_days: 7
artifacts:
dir: "~/.agentwire/artifacts"
max_size_mb: 10
wiki:
dir: "~/.agentwire/wiki"
portal:
url: "https://localhost:8765"
channels:
email:
from_address: "Echo <echo@yourdomain.com>"
default_to: "user@example.com"
banner_image_url: "https://yourdomain.com/images/banner.png"
echo_image_url: "https://yourdomain.com/images/echo.png"
echo_small_url: "https://yourdomain.com/images/echo-small.png"
logo_image_url: "https://yourdomain.com/images/logo.png"
quo:
from_number: "+1234567890"
default_to: "+0987654321"
scheduler:
autostart: true
dispatch_cooldown: 60
dispatch_max_runtime: 14400
usage_limit:
enabled: true
exclude_sessions: []
session_context:
warn_remaining_pct: 20
worktree:
worktree_dir: ~/worktrees
default_base: develop
default_project: ~/projects/my-repo
naming: "{user}/{slug}"
session:
inject_soul: true
Custom Command-Palette Items (palette:) (#676)
User-defined portal Cmd/Ctrl+K entries — personal CLI workflows reachable from the palette without editing source. Local-only host config (like ~/.agentwire/scripts/), and execution-plane: palette. can never be added to the agentwire config set allowlist.
palette:
items:
- id: quicktask
label: "Quick task"
icon: "⚡"
keywords: "quicktask worktree"
run: "agentwire worktree {name} -p {project}"
fields:
- { name: name, label: "Branch/task name" }
- { name: project, label: "Project", default: "agentwire-dev" }
- Every
{placeholder} in run must be a declared field; field values are shell-quoted at run time (no injection via the form), while the template itself is trusted owner config.
- No
fields → the item runs immediately on selection; output lands as a portal toast.
- CLI:
agentwire palette list [--json], agentwire palette run <id> --field k=v (300s timeout). Portal wraps these via GET /api/palette + POST /api/palette/run.