← Schema index / Config Reference

nodes schema (301-450)

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.

Node definitions — machines in the cluster.

Field pathTypeRequiredDefaultCanonical description
└ nodes.speech.stt.agent.smart_appendbooloptionalfalseWhether smart append (per-chunk cleanup) is enabled.
└ nodes.speech.stt.agent.enter_after_completedbooloptionalfalseSend Enter keypress after transcription completes.
└ nodes.speech.stt.terminalmapoptionalPer-target STT config for terminal/shell panes.
└ nodes.speech.stt.terminal.rewritingbooloptionalfalseWhether smart rewriting is enabled for this target.
└ nodes.speech.stt.terminal.smart_appendbooloptionalfalseWhether smart append (per-chunk cleanup) is enabled.
└ nodes.speech.stt.terminal.enter_after_completedbooloptionalfalseSend Enter keypress after transcription completes.
└ nodes.speech.stt.scratchpadmapoptionalPer-target STT config for scratchpad notes.
└ nodes.speech.stt.scratchpad.rewritingbooloptionalfalseWhether smart rewriting is enabled for this target.
└ nodes.speech.stt.scratchpad.smart_appendbooloptionalfalseWhether smart append (per-chunk cleanup) is enabled.
└ nodes.speech.stt.scratchpad.enter_after_completedbooloptionalfalseSend Enter keypress after transcription completes.
└ nodes.speech.stt.text_fieldmapoptionalPer-target STT config for text fields / chat compose.
└ nodes.speech.stt.text_field.rewritingbooloptionalfalseWhether smart rewriting is enabled for this target.
└ nodes.speech.stt.text_field.smart_appendbooloptionalfalseWhether smart append (per-chunk cleanup) is enabled.
└ nodes.speech.stt.text_field.enter_after_completedbooloptionalfalseSend Enter keypress after transcription completes.
└ nodes.speech.stt.beadmapoptionalPer-target STT config for bead create form fields.
└ nodes.speech.stt.bead.rewritingbooloptionalfalseWhether smart rewriting is enabled for this target.
└ nodes.speech.stt.bead.smart_appendbooloptionalfalseWhether smart append (per-chunk cleanup) is enabled.
└ nodes.speech.stt.bead.enter_after_completedbooloptionalfalseSend Enter keypress after transcription completes.
└ nodes.speech.iomapoptionalAudio I/O routing.
└ nodes.speech.io.outputmapoptionalOutput audio routing.
└ nodes.speech.io.output.modestringoptionalRouting mode: local-default, local-device, pulse-default, or a named pulse output.
└ nodes.speech.io.output.devicestringoptionalExplicit device identifier (only for local-device mode).
└ nodes.speech.io.inputmapoptionalInput audio routing.
└ nodes.speech.io.input.modestringoptionalRouting mode: local-default, local-device, pulse-default, or a named pulse output.
└ nodes.speech.io.input.devicestringoptionalExplicit device identifier (only for local-device mode).
└ nodes.speech.io.outputslist[map]optionalNamed PulseAudio output endpoints for TUI cycle rotation.
└ nodes.speech.io.outputs.serverstringrequiredPulseAudio server address (host:port).
└ nodes.speech.io.outputs.namestringrequiredHuman-readable name used in TUI cycle and io.output.mode.
└ nodes.speech.io.outputs.devicestringoptionalOptional PulseAudio sink name; uses the server default when omitted.
└ nodes.speech.io.inputsmap[string, map]optionalNamed audio input sources.
└ nodes.speech.io.inputs.typestringrequiredInput source type: alsa, pulse, ssh_pulse, or device_mic.
└ nodes.speech.io.inputs.devicestringoptionaldefaultAudio input device/source name.
└ nodes.speech.io.inputs.serverstringoptionalPulseAudio server address for pulse inputs.
└ nodes.speech.io.inputs.nodestringoptionalTarget node name for ssh_pulse inputs.
└ nodes.speech.io.inputs.schemestringoptionalDevice URI scheme for device_mic inputs: android, iphone, or watchos.
└ nodes.speech.io.inputs.hoststringoptionalDevice host/IP reachable from the daemon for device_mic inputs.
└ nodes.speech.io.inputs.portu16optionalDevice in-app HTTP server port serving /mic for device_mic inputs.
└ nodes.speech.io.inputs.tokenstringoptionalBearer token for the device_mic /mic endpoint. May be supplied here or resolved from a daemon-known device token at capture time.
└ nodes.speech.read_messages_aloudbooloptionalfalseAuto read-aloud incoming messages on startup.
└ nodes.speech.agent_audiomap[agent_id, agent_audio_override]optionalPer-agent audio overrides (mute, voice, voice_filter, speed). Independent from daemon-side mute. See.
└ nodes.speech.audiomapoptionalCluster-wide and dimension-scoped audio mute policy: global_mute, default_agent_mute, and by_project/by_node/by_surface/by_profile/by_agent_role/by_agent_name. See and.
└ nodes.syncmapoptionalNode-level sync overrides.
└ nodes.tuimapoptionalNode-level TUI overrides.
└ nodes.servicesmapoptionalNode-scoped service listeners.
└ nodes.services.caco-daemonmaprequiredDaemon listener for this node.
└ nodes.services.caco-daemon.portu16requiredLocal service port.
└ nodes.services.caco-daemon.cluster_portu16optionalport + 1000Cluster-facing port.
└ nodes.services.caco-daemon.public_cluster_portu16optionalcluster_portExternally advertised cluster port.
└ nodes.services.caco-daemon.bind_hoststringoptionalnode.hostExplicit cluster-listener bind host; literal 'tailnet' is temporarily rejected after pending a one-node socket/peer-connectivity canary with rollback.
└ nodes.services.caco-daemon.local_bind_hoststringoptional127.0.0.1Explicit local bearer-API bind host; adds a loopback-plus-Tailnet candidate, but literal 'tailnet' remains rejected pending the one-node runtime canary with rollback.
└ nodes.services.caco-daemon.sidecaru16optionalSidecar port.
└ nodes.services.caco-daemon.sidecar_cluster_portu16optionalsidecar + 1000Sidecar cluster port.
└ nodes.services.caco-tts-daemonmap | list[map]optionalHeadless TTS daemon for this node.
└ nodes.services.caco-tts-daemon.namestringoptionaldefaultInstance name for multi-daemon setups. Defaults to 'default'.
└ nodes.services.caco-tts-daemon.ttsmapoptionalOverride TTS settings for this daemon instance.
└ nodes.services.caco-tts-daemon.tts.nu32optional1Maximum simultaneous agent speech slots. Default/effective 1; values <=1 play sequentially, values >1 allow that many concurrent TTS daemon playback slots.
└ nodes.services.caco-tts-daemon.tts.overlap_secsu64optionalOptional cap on concurrent TTS daemon playback overlap. Omitted allows full-slot overlap; 0 disables intentional overlap; positive values cap overlap to that many seconds.
└ nodes.services.caco-tts-daemon.tts.chimemapoptionalDeterministic 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.
└ nodes.services.caco-tts-daemon.tts.chime.enabledbooloptionaltrueEnable or disable this chime object.
└ nodes.services.caco-tts-daemon.tts.chime.root_notestringoptionalCScale root note such as C, C#, Db, F sharp, or Bb.
└ nodes.services.caco-tts-daemon.tts.chime.scalestringoptionalminorScale type for note slots: major or minor.
└ nodes.services.caco-tts-daemon.tts.chime.transpose_semitonesi32optional0Semitone transposition applied after root/scale resolution. Aliases: transpose, transposition.
└ nodes.services.caco-tts-daemon.tts.chime.num_notesu32optional3Number of notes derived from the agent id (1..=16). Defaults to 3, the historical fixed chime.
└ nodes.services.caco-tts-daemon.tts.chime.note_length_msu32 or listoptional130Per-note duration in ms: a single uniform value or a per-note list (short lists pad with the 130ms default).
└ nodes.services.caco-tts-daemon.tts.chime.gap_length_msu32 or listoptional35Gap 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).
└ nodes.services.caco-tts-daemon.tts.modelstringoptionalTTS model identifier (provider-dependent).
└ nodes.services.caco-tts-daemon.tts.command_templatestringoptionalShell command template for ad-hoc TTS adapters. Uses env vars such as $BODY and optional $OUTPUT_FILE.
└ nodes.services.caco-tts-daemon.tts.voicestringoptionalDefault voice name.
└ nodes.services.caco-tts-daemon.tts.voiceslist[string]optionalAdditional voice names merged into the capabilities voice list.
└ nodes.services.caco-tts-daemon.tts.voice_rotationbooloptionaltrueAuto-assign distinct voices per agent sender.
└ nodes.services.caco-tts-daemon.tts.speedf32optionalPlayback speed multiplier (0.25–4.0). 1.0 = normal.
└ nodes.services.caco-tts-daemon.tts.speed_queue_modifierf32optional0.0Queue-length-aware speed modifier. Effective speed = min(base + speed_queue_modifier * shared_pending_queue_depth, max_speed). 0.0 (default) preserves base speed.
└ nodes.services.caco-tts-daemon.tts.max_speedf32optional3.0Upper bound for queue-aware effective playback speed. Default 3.0.
└ nodes.services.caco-tts-daemon.tts.agent_dmsmapoptionalOptional direct agent-message readout overlay. Inherits normal TTS settings unless fields here override them.
└ nodes.services.caco-tts-daemon.tts.agent_dms.read_aloudbooloptionalfalseRead direct agent-message feed events aloud. Default false.
└ nodes.services.caco-tts-daemon.tts.agent_dms.speedf32optionalOptional speed override for direct-message readout.
└ nodes.services.caco-tts-daemon.tts.agent_dms.speed_queue_modifierf32optional0.0Queue-aware speed modifier for agent-DM readout (see speech.tts.speed_queue_modifier). 0.0 default preserves base.
└ nodes.services.caco-tts-daemon.tts.agent_dms.max_speedf32optional3.0Upper bound for queue-aware agent-DM speed. Default 3.0.
└ nodes.services.caco-tts-daemon.tts.langlist[string]optionalOrdered 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.
└ nodes.services.caco-tts-daemon.tts.voice_filtermapoptionalSox-based voice filter applied post-TTS. Preset, custom sox chain, or rotation pool.
└ nodes.services.caco-tts-daemon.tts.voice_filter.presetstringoptionalNamed filter preset: telephone, hall, lofi, underwater, radio, whisper, cave, megaphone, robot, vintage.
└ nodes.services.caco-tts-daemon.tts.voice_filter.customstringoptionalRaw sox effect chain string (e.g. "reverb 50 highpass 300").
└ nodes.services.caco-tts-daemon.tts.voice_filter.rotationmapoptionalRotation pool for per-agent filter assignment.
└ nodes.services.caco-tts-daemon.tts.voice_filter.rotation.presetslist[string]optionalPool of preset names to rotate through.
└ nodes.services.caco-tts-daemon.tts.voice_filter.rotation.combine_with_voicebooloptionaltrueCombine filter rotation with voice rotation for unique agent identities.
└ nodes.services.caco-tts-daemon.tts.disable_voice_filtersbooloptionalfalseDisable voice filters even if configured. Debugging kill switch.
└ nodes.services.caco-tts-daemon.tts.daemon_syncbooloptionalProxy TUI speech controls to TTS daemon instead of local playback.
└ nodes.services.caco-tts-daemon.tts.profilesmapoptionalNamed 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.
└ nodes.services.caco-tts-daemon.tts.profiles.<profile>.modelstringoptionalRuntime model label for this profile; defaults to the profile key when command_template is set.
└ nodes.services.caco-tts-daemon.tts.profiles.<profile>.command_templatestringoptionalShell command/effect wrapper for this profile.
└ nodes.services.caco-tts-daemon.tts.profiles.<profile>.voicestringoptionalDefault voice for this profile.
└ nodes.services.caco-tts-daemon.tts.profiles.<profile>.voiceslist[string]optionalAdditional voices exposed while this profile registry is configured.
└ nodes.services.caco-tts-daemon.tts.profiles.<profile>.speedf32optionalDefault playback speed for this profile.
└ nodes.services.caco-tts-daemon.tts.personasmapoptionalDeclarative 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.
└ nodes.services.caco-tts-daemon.tts.personas.<persona>.profilestringoptionalNamed TTS profile/effect bundle for this persona.
└ nodes.services.caco-tts-daemon.tts.personas.<persona>.modelstringoptionalTTS model override for this persona.
└ nodes.services.caco-tts-daemon.tts.personas.<persona>.voicestringoptionalTTS voice override for this persona.
└ nodes.services.caco-tts-daemon.tts.personas.<persona>.speedf32optionalPlayback speed override for this persona.
└ nodes.services.caco-tts-daemon.tts.personas.<persona>.director_notestringoptionalOptional director note for downstream TTS resolvers.
└ nodes.services.caco-tts-daemon.tts.hrtfmapoptionalOptional disabled-by-default HRTF processing seam for decoded TTS audio. Requires operator-provided dataset path and license/provenance metadata before processing is considered available.
└ nodes.services.caco-tts-daemon.tts.hrtf.enabledbooloptionalfalseEnable HRTF processing. Default false/no-op.
└ nodes.services.caco-tts-daemon.tts.hrtf.dataset_pathstringoptionalPath or documented built-in token for impulse-response data.
└ nodes.services.caco-tts-daemon.tts.hrtf.dataset_licensestringoptionalLicense/provenance note for the selected dataset.
└ nodes.services.caco-tts-daemon.tts.hrtf.backendstringoptionalProcessing backend identifier such as identity_stereo for deterministic tests.
└ nodes.services.caco-tts-daemon.iomapoptionalOverride audio I/O settings for this daemon instance.
└ nodes.services.caco-tts-daemon.io.outputmapoptionalOutput audio routing.
└ nodes.services.caco-tts-daemon.io.output.modestringoptionalRouting mode: local-default, local-device, pulse-default, or a named pulse output.
└ nodes.services.caco-tts-daemon.io.output.devicestringoptionalExplicit device identifier (only for local-device mode).
└ nodes.services.caco-tts-daemon.io.inputmapoptionalInput audio routing.
└ nodes.services.caco-tts-daemon.io.input.modestringoptionalRouting mode: local-default, local-device, pulse-default, or a named pulse output.
└ nodes.services.caco-tts-daemon.io.input.devicestringoptionalExplicit device identifier (only for local-device mode).
└ nodes.services.caco-tts-daemon.io.outputslist[map]optionalNamed PulseAudio output endpoints for TUI cycle rotation.
└ nodes.services.caco-tts-daemon.io.outputs.serverstringrequiredPulseAudio server address (host:port).
└ nodes.services.caco-tts-daemon.io.outputs.namestringrequiredHuman-readable name used in TUI cycle and io.output.mode.
└ nodes.services.caco-tts-daemon.io.outputs.devicestringoptionalOptional PulseAudio sink name; uses the server default when omitted.
└ nodes.services.caco-tts-daemon.io.inputsmap[string, map]optionalNamed audio input sources.
└ nodes.services.caco-tts-daemon.io.inputs.typestringrequiredInput source type: alsa, pulse, ssh_pulse, or device_mic.
└ nodes.services.caco-tts-daemon.io.inputs.devicestringoptionaldefaultAudio input device/source name.
└ nodes.services.caco-tts-daemon.io.inputs.serverstringoptionalPulseAudio server address for pulse inputs.
└ nodes.services.caco-tts-daemon.io.inputs.nodestringoptionalTarget node name for ssh_pulse inputs.
└ nodes.services.caco-tts-daemon.io.inputs.schemestringoptionalDevice URI scheme for device_mic inputs: android, iphone, or watchos.
└ nodes.services.caco-tts-daemon.io.inputs.hoststringoptionalDevice host/IP reachable from the daemon for device_mic inputs.
└ nodes.services.caco-tts-daemon.io.inputs.portu16optionalDevice in-app HTTP server port serving /mic for device_mic inputs.
└ nodes.services.caco-tts-daemon.io.inputs.tokenstringoptionalBearer token for the device_mic /mic endpoint. May be supplied here or resolved from a daemon-known device token at capture time.
└ nodes.services.caco-stt-daemonmap | list[map]optionalHeadless STT daemon for this node. Starts muted unless unmuted is explicitly true.
└ nodes.services.caco-stt-daemon.namestringoptionaldefaultFile-safe instance name for multi-daemon setups (ASCII letters, digits, '-' or '_'). Defaults to 'default'.
└ nodes.services.caco-stt-daemon.modelstringoptionalSTT model override for this daemon instance.
└ nodes.services.caco-stt-daemon.languagestringoptionalTranscription language override.
└ nodes.services.caco-stt-daemon.inputstringoptionalNamed STT input route override.
└ nodes.services.caco-stt-daemon.devicestringoptionalSTT capture device override.
└ nodes.services.caco-stt-daemon.scratchpad_idstringoptionalScratchpad note ID that receives ambient transcript markers (defaults to transcription:ambient:<instance> at runtime).
└ nodes.services.caco-stt-daemon.unmutedbooloptionalfalseStart capture immediately instead of the muted default.
└ nodes.services.caco-stt-daemon.transcript_max_entriesusizeoptional1000Maximum retained transcript entries.
└ nodes.services.caco-stt-daemon.transcript_max_bytesu64optional1048576Maximum retained transcript bytes.
└ nodes.services.caco-stt-daemon.passthroughmapoptionalMirror 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://.
└ nodes.services.caco-stt-daemon.passthrough.urlstringoptionalWebSocket 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.
└ nodes.services.caco-stt-daemon.passthrough.commandlist[string]optionalProducer 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.
└ nodes.services.caco-stt-daemon.passthrough.resume_argslist[string]optionalArguments appended to command when a resume cursor is known; {after} becomes the last adopted sequence, e.g. [--after, "{after}"].
└ nodes.services.caco-stt-daemon.passthrough.resume_querystringoptionalQuery parameter appended to url carrying the last adopted sequence, e.g. after.
└ nodes.services.caco-stt-daemon.passthrough.streamstringoptionalupstreamStream identity for sequenced frames without one (lifetail records).
└ nodes.services.caco-stt-daemon.passthrough.initialstringoptionalheadStart without a stored cursor (first start or upstream reset): head follows live text; all replays from sequence 0.
└ nodes.services.caco-stt-daemon.passthrough.token_filestringoptionalBearer token file for url, re-read on every reconnect; never used with command.
└ nodes.services.caco-stt-daemon.passthrough.stale_after_secsu64optional120Seconds without text or liveness before health reports upstream_stale (1-86400).
└ nodes.services.caco-stt-daemon.passthrough.reconnect_max_secsu64optional60Maximum reconnect/respawn backoff (1-300).
└ nodes.services.caco-stt-daemon.passthrough.max_message_bytesusizeoptional65536Maximum message or stdout line size (1 B-1 MiB).
└ nodes.services.caco-git-daemonmapoptionalNode-scoped repository-service placement override for isolated canaries; omitted values inherit top-level services.caco-git-daemon.
└ nodes.services.caco-git-daemon.modestringoptionalinheritRepository-service owner: embedded or standalone.
└ nodes.services.caco-git-daemon.max_concurrentusizeoptional4Maximum node-wide concurrent repository mutations.
└ nodes.services.caco-git-daemon.max_queuedusizeoptional64Maximum active plus queued repository mutations.
└ nodes.services.caco-git-daemon.transportmapoptional{ kind: auto }Owner-private local transport used in standalone mode.