pub struct SynapsConfig {Show 69 fields
pub model: Option<String>,
pub thinking_budget: Option<u32>,
pub thinking_level: Option<ReasoningLevel>,
pub context_window: Option<u64>,
pub context_management: ContextManagementConfig,
pub startup: StartupConfig,
pub daemon: DaemonConfig,
pub subagent: SubagentLimits,
pub compaction_model: Option<String>,
pub compaction_mode: CompactionMode,
pub compaction_exclude: Vec<ContentClass>,
pub max_tool_output: usize,
pub tool_output_spill_bytes: usize,
pub tool_output_spill_head_bytes: usize,
pub tool_output_spill_tail_bytes: usize,
pub read_dedupe: bool,
pub bash_timeout: u64,
pub bash_max_timeout: u64,
pub subagent_timeout: u64,
pub subagent_cold_resume_compact_tokens: u64,
pub subagent_context_management: ContextManagementMode,
pub subagent_rollover_tokens: u64,
pub subagent_transform_hooks: bool,
pub subagent_thinking: ReasoningLevel,
pub api_retries: u32,
pub refusal_retries: u32,
pub telemetry: String,
pub telemetry_log_generations: u32,
pub cache_diagnostics: bool,
pub cache_ttl: CacheTtlSetting,
pub cache_keepwarm: CacheKeepWarm,
pub cache_keepwarm_auto_max_hours: u32,
pub cache_keepwarm_headless: bool,
pub cache_keepwarm_tools: bool,
pub request_compression: RequestCompressionMode,
pub request_compression_level: u32,
pub client_input: ClientInput,
pub thinking_display: ThinkingDisplay,
pub max_fps: u32,
pub scroll_lines: Option<u16>,
pub theme: Option<String>,
pub theme_transition: ThemeTransitionMode,
pub tui_background_opaque: bool,
pub tui_streaming_glow: bool,
pub tui_smooth_streaming: bool,
pub process_scopes: bool,
pub tool_scope_slice: Option<String>,
pub daemon_scope_slice: Option<String>,
pub agent_name: Option<String>,
pub identity: Option<String>,
pub disabled_plugins: Vec<String>,
pub favorite_models: Vec<String>,
pub disabled_skills: Vec<String>,
pub progressive_tool_disclosure: bool,
pub tools_activation_confirm: ActivationConfirm,
pub tools_deferred_loading: bool,
pub session_persistence: SessionPersistence,
pub disabled_tools: Vec<String>,
pub shell: ShellConfig,
pub server: ServerConfig,
pub bridge: BridgeConfig,
pub auth: AuthConfig,
pub events: EventsConfig,
pub provider_keys: BTreeMap<String, String>,
pub keybinds: HashMap<String, String>,
pub turn_budgets: TurnBudgetsConfig,
pub memory: MemoryConfig,
pub memory_backend: MemoryBackendConfig,
pub warnings: Vec<String>,
}Expand description
Parsed configuration from the config file.
Fields§
§model: Option<String>§thinking_budget: Option<u32>§thinking_level: Option<ReasoningLevel>Named reasoning level, parsed from the same thinking = … key.
When Some, this is the authoritative level. When None, fall back
to thinking_budget for legacy numeric-only values.
context_window: Option<u64>§context_management: ContextManagementConfig§startup: StartupConfigFirst-turn / cold-start behaviour (startup.*).
daemon: DaemonConfigDaemon lifetime knobs (daemon.*); env vars still win.
subagent: SubagentLimitsSubagent fan-out limits (subagent.*).
compaction_model: Option<String>§compaction_mode: CompactionModeWhere compaction summarization runs (spec §9.4): remote provider or local-only (zero network construction).
compaction_exclude: Vec<ContentClass>Content classes excluded from remote compaction disclosure.
max_tool_output: usize§tool_output_spill_bytes: usizeTool output virtualisation: a text tool result bigger than this many
bytes is stored whole in a spill file (<base>/spill/<session>/) and
model history gets a head + tail preview with a pointer to it. 0
turns it off: results go into history exactly as before (cut at
max_tool_output). (tool_output_spill_bytes, default
DEFAULT_TOOL_OUTPUT_SPILL_BYTES.)
tool_output_spill_head_bytes: usizeBytes from the start of a virtualised result kept in history
(tool_output_spill_head_bytes, default
DEFAULT_TOOL_OUTPUT_SPILL_HEAD_BYTES).
tool_output_spill_tail_bytes: usizeBytes from the end of a virtualised result kept in history
(tool_output_spill_tail_bytes, default
DEFAULT_TOOL_OUTPUT_SPILL_TAIL_BYTES).
read_dedupe: boolRead dedupe: a read whose result would be byte-identical to an
earlier read of the same file/range still in history is replaced by
a short stub naming that earlier call, and write/edit results say
there is no need to re-read to verify. Off = legacy tool-result bytes.
(read_dedupe, default on).
bash_timeout: u64§bash_max_timeout: u64§subagent_timeout: u64§subagent_cold_resume_compact_tokens: u64subagent_resume of a worker whose prompt cache has expired replays
a compact context instead of its whole transcript once the history is
at least this many (estimated) tokens: a cold replay rewrites every
token at the cache-write price. 0 disables compaction
(subagent_cold_resume_compact_tokens, default
DEFAULT_SUBAGENT_COLD_RESUME_COMPACT_TOKENS).
subagent_context_management: ContextManagementModeAutomatic context rollover for subagent workers
(subagent_context_management = auto | off, default auto). Workers
evict older rounds into their archive directory instead of growing
until the window is full. Independent of the foreground
context_management.mode.
subagent_rollover_tokens: u64Estimated footprint (tokens) at which a worker’s context rolls over
(subagent_rollover_tokens, at least MIN_SUBAGENT_ROLLOVER_TOKENS,
default DEFAULT_SUBAGENT_ROLLOVER_TOKENS). The window’s own
rollover band wins when it is lower; the successor target is derived
like the foreground’s (min(100k, 2/3 of pressure)).
subagent_transform_hooks: boolSubagent workers run the host’s after_tool_call output transforms
(extensions holding tools.transform_output: compression,
redaction) on their own tool results, as the foreground does. Off =
worker tool results reach history untransformed, as before.
(subagent_transform_hooks, default on).
subagent_thinking: ReasoningLevelWorker default, independent of foreground thinking; per-call overrides win.
api_retries: u32§refusal_retries: u32§telemetry: String§telemetry_log_generations: u32Rotated generations kept for api-log.jsonl and
request-trace.jsonl (telemetry_log_generations, 1–
MAX_TELEMETRY_LOG_GENERATIONS, default 1: just <log>.1).
cache_diagnostics: bool§cache_ttl: CacheTtlSettingPrompt-cache TTL strategy: “auto” (default: 1h on Anthropic OAuth / subscription credentials, 5m on an API key) | “5m” | “1h” | “hybrid”.
cache_keepwarm: CacheKeepWarmPrompt-cache keep-warm while idle (cache_keepwarm): off (default)
| auto | <N>h. See CacheKeepWarm and
docs/specs/cache-ttl-spec.md §7.
cache_keepwarm_auto_max_hours: u32Longest an auto keep-warm idle period may run, in hours
(cache_keepwarm_auto_max_hours, 1–48, default
DEFAULT_CACHE_KEEPWARM_AUTO_MAX_HOURS). An explicit <N>h mode
is its own window and ignores this.
cache_keepwarm_headless: boolLet keep-warm run for daemon sessions driven only by non-interactive
clients (cache_keepwarm_headless, default false): synaps chat,
rpc/server clients over the daemon, piped synaps attach. Off, only a
session a TUI or interactive attach has seen qualifies.
cache_keepwarm_tools: boolKeep the prompt cache warm while a tool round runs
(cache_keepwarm_tools, default true): once a round’s tools have
run for the TTL minus a safety margin (4.5 min on 5m, 55 min on 1h),
re-send that round’s request with a minimal output cap so the next
request reads the prefix instead of rewriting it. Foreground and
workers alike; independent of the idle cache_keepwarm.
request_compression: RequestCompressionModegzip for Anthropic request bodies (request_compression): auto
(default) | on | off. See RequestCompressionMode.
request_compression_level: u32gzip level 1–9 (request_compression_level, default
DEFAULT_REQUEST_COMPRESSION_LEVEL). Higher shrinks more and costs
more CPU: raise it on a slow uplink.
client_input: ClientInputWho may drive a daemon session with several clients attached
(client_input): shared (default) | exclusive. The daemon reads
it at start, for every session it creates or restores. See
ClientInput.
thinking_display: ThinkingDisplaythinking_display: summarized (default) | omitted. The
foreground session’s thinking.display; see ThinkingDisplay.
max_fps: u32Max TUI redraw rate in frames/sec — caps streaming redraws (e.g. 60,
144, 240). User input always redraws immediately regardless. Default
60. Range 1–1000. The frame budget is 1000 / max_fps ms.
scroll_lines: Option<u16>Lines to scroll per mouse-wheel event. Different terminal emulators emit 1–9+ scroll events per physical notch; set this to compensate. Default: 3. Range 1–20.
theme: Option<String>§theme_transition: ThemeTransitionModeAnimated theme transitions: "on" (350 ms cross-fade, default),
"off" (instant snap), or integer milliseconds (0–2000).
tui_background_opaque: boolWhether the TUI paints its own opaque background. false preserves the terminal background.
tui_streaming_glow: boolWhether the prompt shows a glow sweeping across it while a turn streams. Default off.
tui_smooth_streaming: boolWhether the TUI reveals a burst of streamed text (a provider flushing a backlog at once) over a few frames instead of in one. Default on.
process_scopes: boolRun the daemon, bash tool commands and PTY shells each in their own
systemd scope (Linux, when a systemd user manager is reachable), so the
out-of-memory killer can stop one runaway command instead of the whole
terminal scope with the daemon in it. process_scopes = off disables;
env SYNAPS_PROCESS_SCOPES overrides. Default on.
tool_scope_slice: Option<String>The systemd slice for every scope Synaps makes for a tool command
(bash tool commands, PTY shells): tool_scope_slice = synaps_tools.slice
passes --slice=synaps_tools.slice to systemd-run, so an operator
can cap tool work on that slice apart from the desktop’s
app.slice. Unset or empty (the default) leaves systemd’s placement
as it is. Read with the config each spawn loads. Synaps sets no limits
itself. Use a top-level (dash-free) name: CPUWeight only weighs a
slice against its siblings (docs/daemon-mode.md).
daemon_scope_slice: Option<String>The systemd slice for the daemon’s own scope, applied when the daemon
starts (a reload re-execs in the same scope). Separate from
Self::tool_scope_slice, so tools can be capped without the daemon.
Unset or empty: no --slice.
agent_name: Option<String>§identity: Option<String>§disabled_plugins: Vec<String>§favorite_models: Vec<String>§disabled_skills: Vec<String>§progressive_tool_disclosure: boolOpt-in progressive tool disclosure (Task 18). When false, providers receive the existing full tool schema byte-for-byte. When true, each stream starts with the small essential local core plus discovery and authorization gateways; exact activations are added per session.
tools_activation_confirm: ActivationConfirmHost confirmation policy for MODEL-INITIATED activate_tools
(tools.activation_confirm). Auto (default) authorizes without
prompting; Prompt asks the host (y/n confirm dialog); Deny never
authorizes (locked-down hosts). server.auto_approve_confirms = true
still authorizes regardless of this key.
tools_deferred_loading: booltools.deferred_loading (default on). With progressive disclosure on
the native Anthropic transport, every activatable tool is sent from the
first request with defer_loading: true and activate_tools answers
with tool_reference blocks, so an activation never changes the cached
prompt prefix. off restores the per-activation tools-array change.
session_persistence: SessionPersistenceOpt-in session persistence strategy (Task 35, spec §9.8). Json
(default) is the unchanged legacy full-rewrite path; Journal adds
an append-only delta journal with periodic atomic snapshots. See
docs/decisions/T35-session-journal-opt-in.md.
disabled_tools: Vec<String>Built-in tools to disable by runtime name (e.g. “bash”, “ls”). Removed from the registry at boot so they’re never offered to the model.
shell: ShellConfig§server: ServerConfig§bridge: BridgeConfig§auth: AuthConfig§events: EventsConfig§provider_keys: BTreeMap<String, String>§keybinds: HashMap<String, String>§turn_budgets: TurnBudgetsConfigTyped per-role turn budgets (Task 23, spec §8.1).
memory: MemoryConfigContinuous-memory settings surface (Task A2, spec §12).
memory_backend: MemoryBackendConfigHost-owned backend; selecting it does not enable recall or capture.
warnings: Vec<String>Non-fatal problems found while parsing the config file (unknown keys, unparseable values). Surfaced once at startup — never block boot.
Trait Implementations§
Source§impl Clone for SynapsConfig
impl Clone for SynapsConfig
Source§fn clone(&self) -> SynapsConfig
fn clone(&self) -> SynapsConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SynapsConfig
impl Debug for SynapsConfig
Source§impl Default for SynapsConfig
impl Default for SynapsConfig
Source§fn default() -> SynapsConfig
fn default() -> SynapsConfig
Auto Trait Implementations§
impl Freeze for SynapsConfig
impl RefUnwindSafe for SynapsConfig
impl Send for SynapsConfig
impl Sync for SynapsConfig
impl Unpin for SynapsConfig
impl UnsafeUnpin for SynapsConfig
impl UnwindSafe for SynapsConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.