← Schema index / Config Reference
services schema
Canonical generated docsThis section is generated from
caco config schema --json. The table below preserves the runtime field path, type, required/default markers, and canonical description for every value in this slice.Service listener definitions.
| Field path | Type | Required | Default | Canonical description |
|---|---|---|---|---|
services | section | required | Service listener definitions. | |
└ services.caco-daemon | listener | list[listener] | required | Daemon listener(s). | |
└ services.caco-daemon.node | string | required | Node name for this listener. | |
└ services.caco-daemon.port | u16 | required | Local service port. | |
└ services.caco-daemon.cluster_port | u16 | optional | port + 1000 | Cluster-facing port. |
└ services.caco-daemon.public_cluster_port | u16 | optional | cluster_port | Externally advertised cluster port when it differs from the local bind port. |
└ services.caco-daemon.sidecar | u16 | optional | Sidecar port. | |
└ services.caco-daemon.sidecar_cluster_port | u16 | optional | sidecar + 1000 | Sidecar cluster port. |
└ services.caco-daemon-extra-env | map[string, string] | optional | Portable, config-level daemon process environment applied at caco daemon bringup before the tokio runtime starts, so the daemon and its child git/subprocess operations (notably the reintegration integration-checkout clone) inherit the values (for example GIT_LFS_SKIP_SMUDGE=1 or PULSE_SERVER). Non-Nix equivalent of the Home Manager extraEnv: works in containers, AKS, Codespaces, and manual installs with only a config change plus restart; explicit values override any inherited env for processes spawned after bringup. | |
└ services.caco-git-daemon | map | optional | { mode: embedded, transport: { kind: auto }, max_concurrent: 4, max_queued: 64 } | Node-local repository-service placement and bounded admission. Placement is independent of the configured Git execution backend. Omitted configuration remains embedded unless the node hosts a standalone beads authority, which derives standalone Git ownership so both daemon processes share one repository owner. |
└ services.caco-git-daemon.mode | string | optional | embedded | Repository-service owner: embedded or standalone. Standalone selection fails closed when its local transport is unavailable. |
└ services.caco-git-daemon.max_concurrent | usize | optional | 4 | Maximum node-wide concurrent repository mutations. |
└ services.caco-git-daemon.max_queued | usize | optional | 64 | Maximum active plus queued repository mutations; must cover max_concurrent and cannot exceed 4096. |
└ services.caco-git-daemon.transport | map | optional | { kind: auto } | Owner-private local transport used only in standalone mode. |
└ services.caco-git-daemon.transport.kind | string | optional | auto | Local transport: auto, unix, named_pipe, or loopback. |
└ services.caco-git-daemon.transport.endpoint | string | optional | Explicit socket, pipe, or loopback host:port. Omit for auto; loopback requires an explicit loopback address. | |
└ services.caco-tts-daemon | map | list[map] | optional | Headless TTS daemon(s). Watches the feed for speakable events and plays them to the configured audio output. Accepts a single entry or a list for multiple instances. | |
└ services.caco-tts-daemon.name | string | optional | default | Instance name for multi-daemon setups. Defaults to 'default'. |
└ services.caco-tts-daemon.node | string | required | Node that runs this TTS daemon. | |
└ services.caco-tts-daemon.tts | map | optional | Override TTS settings for this daemon instance. | |
└ services.caco-tts-daemon.tts.n | u32 | optional | 1 | Maximum simultaneous agent speech slots. Default/effective 1; values <=1 play sequentially, values >1 allow that many concurrent TTS daemon playback slots. |
└ services.caco-tts-daemon.tts.overlap_secs | u64 | optional | Optional cap on concurrent TTS daemon playback overlap. Omitted allows full-slot overlap; 0 disables intentional overlap; positive values cap overlap to that many seconds. | |
└ services.caco-tts-daemon.tts.chime | map | optional | Deterministic per-agent chime prepended before TTS playback (generalized note count/length/gap config). Omit to disable; present defaults to a 3-note C minor chime with no transposition. | |
└ services.caco-tts-daemon.tts.chime.enabled | bool | optional | true | Enable or disable this chime object. |
└ services.caco-tts-daemon.tts.chime.root_note | string | optional | C | Scale root note such as C, C#, Db, F sharp, or Bb. |
└ services.caco-tts-daemon.tts.chime.scale | string | optional | minor | Scale type for note slots: major or minor. |
└ services.caco-tts-daemon.tts.chime.transpose_semitones | i32 | optional | 0 | Semitone transposition applied after root/scale resolution. Aliases: transpose, transposition. |
└ services.caco-tts-daemon.tts.chime.num_notes | u32 | optional | 3 | Number of notes derived from the agent id (1..=16). Defaults to 3, the historical fixed chime. |
└ services.caco-tts-daemon.tts.chime.note_length_ms | u32 or list | optional | 130 | Per-note duration in ms: a single uniform value or a per-note list (short lists pad with the 130ms default). |
└ services.caco-tts-daemon.tts.chime.gap_length_ms | u32 or list | optional | 35 | Gap between notes in ms: a single uniform value or a per-gap list of length num_notes-1 (short lists pad with the 35ms default). |
└ services.caco-tts-daemon.tts.model | string | optional | TTS model identifier (provider-dependent). | |
└ services.caco-tts-daemon.tts.command_template | string | optional | Shell command template for ad-hoc TTS adapters. Uses env vars such as $BODY and optional $OUTPUT_FILE. | |
└ services.caco-tts-daemon.tts.voice | string | optional | Default voice name. | |
└ services.caco-tts-daemon.tts.voices | list[string] | optional | Additional voice names merged into the capabilities voice list. | |
└ services.caco-tts-daemon.tts.voice_rotation | bool | optional | true | Auto-assign distinct voices per agent sender. |
└ services.caco-tts-daemon.tts.speed | f32 | optional | Playback speed multiplier (0.25–4.0). 1.0 = normal. | |
└ services.caco-tts-daemon.tts.speed_queue_modifier | f32 | optional | 0.0 | Queue-length-aware speed modifier. Effective speed = min(base + speed_queue_modifier * shared_pending_queue_depth, max_speed). 0.0 (default) preserves base speed. |
└ services.caco-tts-daemon.tts.max_speed | f32 | optional | 3.0 | Upper bound for queue-aware effective playback speed. Default 3.0. |
└ services.caco-tts-daemon.tts.agent_dms | map | optional | Optional direct agent-message readout overlay. Inherits normal TTS settings unless fields here override them. | |
└ services.caco-tts-daemon.tts.agent_dms.read_aloud | bool | optional | false | Read direct agent-message feed events aloud. Default false. |
└ services.caco-tts-daemon.tts.agent_dms.speed | f32 | optional | Optional speed override for direct-message readout. | |
└ services.caco-tts-daemon.tts.agent_dms.speed_queue_modifier | f32 | optional | 0.0 | Queue-aware speed modifier for agent-DM readout (see speech.tts.speed_queue_modifier). 0.0 default preserves base. |
└ services.caco-tts-daemon.tts.agent_dms.max_speed | f32 | optional | 3.0 | Upper bound for queue-aware agent-DM speed. Default 3.0. |
└ services.caco-tts-daemon.tts.lang | list[string] | optional | Ordered preferred TTS language codes. First non-blank entry is the default synthesis language; later entries are alternates/fallbacks. Empty or omitted resolves to en-US. The resolved default persists in TTS daemon runtime state across restarts. | |
└ services.caco-tts-daemon.tts.voice_filter | map | optional | Sox-based voice filter applied post-TTS. Preset, custom sox chain, or rotation pool. | |
└ services.caco-tts-daemon.tts.voice_filter.preset | string | optional | Named filter preset: telephone, hall, lofi, underwater, radio, whisper, cave, megaphone, robot, vintage. | |
└ services.caco-tts-daemon.tts.voice_filter.custom | string | optional | Raw sox effect chain string (e.g. "reverb 50 highpass 300"). | |
└ services.caco-tts-daemon.tts.voice_filter.rotation | map | optional | Rotation pool for per-agent filter assignment. | |
└ services.caco-tts-daemon.tts.voice_filter.rotation.presets | list[string] | optional | Pool of preset names to rotate through. | |
└ services.caco-tts-daemon.tts.voice_filter.rotation.combine_with_voice | bool | optional | true | Combine filter rotation with voice rotation for unique agent identities. |
└ services.caco-tts-daemon.tts.disable_voice_filters | bool | optional | false | Disable voice filters even if configured. Debugging kill switch. |
└ services.caco-tts-daemon.tts.daemon_sync | bool | optional | Proxy TUI speech controls to TTS daemon instead of local playback. | |
└ services.caco-tts-daemon.tts.profiles | map | optional | Named runtime-selectable TTS profile/effect bundles keyed by logical profile name. Each value uses the speech.tts shape; command-template profiles advertise their model label as profile.model or the map key. | |
└ services.caco-tts-daemon.tts.profiles.<profile>.model | string | optional | Runtime model label for this profile; defaults to the profile key when command_template is set. | |
└ services.caco-tts-daemon.tts.profiles.<profile>.command_template | string | optional | Shell command/effect wrapper for this profile. | |
└ services.caco-tts-daemon.tts.profiles.<profile>.voice | string | optional | Default voice for this profile. | |
└ services.caco-tts-daemon.tts.profiles.<profile>.voices | list[string] | optional | Additional voices exposed while this profile registry is configured. | |
└ services.caco-tts-daemon.tts.profiles.<profile>.speed | f32 | optional | Default playback speed for this profile. | |
└ services.caco-tts-daemon.tts.personas | map | optional | Declarative TTS persona/category mappings keyed by persona name. Each persona may provide profile/model/voice/speed/filter/director-note defaults while explicit per-event overrides still win. | |
└ services.caco-tts-daemon.tts.personas.<persona>.profile | string | optional | Named TTS profile/effect bundle for this persona. | |
└ services.caco-tts-daemon.tts.personas.<persona>.model | string | optional | TTS model override for this persona. | |
└ services.caco-tts-daemon.tts.personas.<persona>.voice | string | optional | TTS voice override for this persona. | |
└ services.caco-tts-daemon.tts.personas.<persona>.speed | f32 | optional | Playback speed override for this persona. | |
└ services.caco-tts-daemon.tts.personas.<persona>.director_note | string | optional | Optional director note for downstream TTS resolvers. | |
└ services.caco-tts-daemon.tts.hrtf | map | optional | Optional disabled-by-default HRTF processing seam for decoded TTS audio. Requires operator-provided dataset path and license/provenance metadata before processing is considered available. | |
└ services.caco-tts-daemon.tts.hrtf.enabled | bool | optional | false | Enable HRTF processing. Default false/no-op. |
└ services.caco-tts-daemon.tts.hrtf.dataset_path | string | optional | Path or documented built-in token for impulse-response data. | |
└ services.caco-tts-daemon.tts.hrtf.dataset_license | string | optional | License/provenance note for the selected dataset. | |
└ services.caco-tts-daemon.tts.hrtf.backend | string | optional | Processing backend identifier such as identity_stereo for deterministic tests. | |
└ services.caco-tts-daemon.io | map | optional | Override audio I/O settings for this daemon instance. | |
└ services.caco-tts-daemon.io.output | map | optional | Output audio routing. | |
└ services.caco-tts-daemon.io.output.mode | string | optional | Routing mode: local-default, local-device, pulse-default, or a named pulse output. | |
└ services.caco-tts-daemon.io.output.device | string | optional | Explicit device identifier (only for local-device mode). | |
└ services.caco-tts-daemon.io.input | map | optional | Input audio routing. | |
└ services.caco-tts-daemon.io.input.mode | string | optional | Routing mode: local-default, local-device, pulse-default, or a named pulse output. | |
└ services.caco-tts-daemon.io.input.device | string | optional | Explicit device identifier (only for local-device mode). | |
└ services.caco-tts-daemon.io.outputs | list[map] | optional | Named PulseAudio output endpoints for TUI cycle rotation. | |
└ services.caco-tts-daemon.io.outputs.server | string | required | PulseAudio server address (host:port). | |
└ services.caco-tts-daemon.io.outputs.name | string | required | Human-readable name used in TUI cycle and io.output.mode. | |
└ services.caco-tts-daemon.io.outputs.device | string | optional | Optional PulseAudio sink name; uses the server default when omitted. | |
└ services.caco-tts-daemon.io.inputs | map[string, map] | optional | Named audio input sources. | |
└ services.caco-tts-daemon.io.inputs.type | string | required | Input source type: alsa, pulse, ssh_pulse, or device_mic. | |
└ services.caco-tts-daemon.io.inputs.device | string | optional | default | Audio input device/source name. |
└ services.caco-tts-daemon.io.inputs.server | string | optional | PulseAudio server address for pulse inputs. | |
└ services.caco-tts-daemon.io.inputs.node | string | optional | Target node name for ssh_pulse inputs. | |
└ services.caco-tts-daemon.io.inputs.scheme | string | optional | Device URI scheme for device_mic inputs: android, iphone, or watchos. | |
└ services.caco-tts-daemon.io.inputs.host | string | optional | Device host/IP reachable from the daemon for device_mic inputs. | |
└ services.caco-tts-daemon.io.inputs.port | u16 | optional | Device in-app HTTP server port serving /mic for device_mic inputs. | |
└ services.caco-tts-daemon.io.inputs.token | string | optional | Bearer token for the device_mic /mic endpoint. May be supplied here or resolved from a daemon-known device token at capture time. | |
└ services.caco-stt-daemon | map | list[map] | optional | Headless STT daemon(s). Captures from configured STT input only when unmuted and exposes transcript diffs. Accepts a single entry or a list for multiple instances. | |
└ services.caco-stt-daemon.name | string | optional | default | File-safe instance name for multi-daemon setups (ASCII letters, digits, '-' or '_'). Defaults to 'default'. |
└ services.caco-stt-daemon.node | string | required | Node that runs this STT daemon. | |
└ services.caco-stt-daemon.model | string | optional | STT model override for this daemon instance. | |
└ services.caco-stt-daemon.language | string | optional | Transcription language override. | |
└ services.caco-stt-daemon.input | string | optional | Named STT input route override. | |
└ services.caco-stt-daemon.device | string | optional | STT capture device override. | |
└ services.caco-stt-daemon.scratchpad_id | string | optional | Scratchpad note ID that receives ambient transcript markers (defaults to transcription:ambient:<instance> at runtime). | |
└ services.caco-stt-daemon.unmuted | bool | optional | false | Start capture immediately instead of the muted default. |
└ services.caco-stt-daemon.transcript_max_entries | usize | optional | 1000 | Maximum retained transcript entries. |
└ services.caco-stt-daemon.transcript_max_bytes | u64 | optional | 1048576 | Maximum retained transcript bytes. |
└ services.caco-stt-daemon.passthrough | map | optional | Mirror an external transcript producer instead of capturing: exactly one of url or command. Requires activation capability stt_passthrough_v1, and stt_passthrough_v2 for command/resume/stream/initial or tailnet ws://. | |
└ services.caco-stt-daemon.passthrough.url | string | optional | WebSocket endpoint: wss:// anywhere, ws:// only on loopback or the tailnet (100.64.0.0/10, fd7a:115c:a1e0::/48, *.ts.net). No userinfo, query or fragment. | |
└ services.caco-stt-daemon.passthrough.command | list[string] | optional | Producer argv (no shell) whose stdout carries one frame per line, e.g. [lifetail, --json, follow]. Runs in its own process group with a minimal environment; stderr is discarded. | |
└ services.caco-stt-daemon.passthrough.resume_args | list[string] | optional | Arguments appended to command when a resume cursor is known; {after} becomes the last adopted sequence, e.g. [--after, "{after}"]. | |
└ services.caco-stt-daemon.passthrough.resume_query | string | optional | Query parameter appended to url carrying the last adopted sequence, e.g. after. | |
└ services.caco-stt-daemon.passthrough.stream | string | optional | upstream | Stream identity for sequenced frames without one (lifetail records). |
└ services.caco-stt-daemon.passthrough.initial | string | optional | head | Start without a stored cursor (first start or upstream reset): head follows live text; all replays from sequence 0. |
└ services.caco-stt-daemon.passthrough.token_file | string | optional | Bearer token file for url, re-read on every reconnect; never used with command. | |
└ services.caco-stt-daemon.passthrough.stale_after_secs | u64 | optional | 120 | Seconds without text or liveness before health reports upstream_stale (1-86400). |
└ services.caco-stt-daemon.passthrough.reconnect_max_secs | u64 | optional | 60 | Maximum reconnect/respawn backoff (1-300). |
└ services.caco-stt-daemon.passthrough.max_message_bytes | usize | optional | 65536 | Maximum message or stdout line size (1 B-1 MiB). |