pub enum Section {
Show 18 variants
ModelProviders,
RiskProfiles,
RuntimeProfiles,
Storage,
Memory,
Skills,
SkillBundles,
Mcp,
McpBundles,
KnowledgeBundles,
TtsProviders,
TranscriptionProviders,
Channels,
Hardware,
Agents,
PeerGroups,
Cron,
Tunnel,
}Expand description
One pickable section. The variant ordering follows the
sections! macro invocation.
With the clap feature on, this enum doubles as the
zeroclaw onboard <section> clap subcommand — no separate
mirror enum in the binary crate.
Variants§
ModelProviders
Pick a model provider to configure (Anthropic, OpenAI, OpenRouter, Ollama, custom OpenAI-compatible gateways, etc.). Multiple aliases per provider are supported — e.g. anthropic.production and anthropic.dev can coexist.
RiskProfiles
Named risk profiles binding allowlists, denylists, and approval thresholds. Agents reference one via agents.<alias>.risk_profile.
RuntimeProfiles
Named runtime tuning profiles (token limits, retry policy, timeouts). Agents reference one via agents.<alias>.runtime_profile.
Storage
SQLite is the safe default for single-node installs (file-based, zero-config, no extra services). Pick Postgres for shared or multi-instance deployments, Qdrant for vector search, Markdown or Lucid for human-readable files. Each backend supports multiple aliased instances; agents reference them via memory.storage_ref.
Memory
Persistent memory backend. SQLite is the default; pick none to disable long-term recall entirely.
Skills
Skills tool settings — where skill markdown lives on disk (defaults to the data dir), and how the skills loader handles community repositories. Add skill BUNDLES under skill-bundles below.
SkillBundles
Named bundles of skill files. Agents reference a bundle to load a set of capabilities at startup.
Mcp
Model Context Protocol settings. Toggle enabled and pick deferred or eager loading. Individual MCP servers live under mcp.servers[].
McpBundles
Named bundles of MCP servers. Agents reference a bundle to pull in a set of MCP tools as one unit.
KnowledgeBundles
Named bundles of knowledge sources (RAG indexes, doc folders). Agents reference a bundle to surface relevant snippets at inference time.
TtsProviders
Text-to-speech providers (OpenAI, ElevenLabs, Google, Edge, Piper). Configure one per voice / language; agents reference them by alias.
TranscriptionProviders
Speech-to-text providers (OpenAI Whisper, Groq, Deepgram, AssemblyAI, Google, local Whisper). Configure one per pipeline; agents reference them by alias.
Channels
Pick which chat platforms ZeroClaw should listen on. You can configure multiple — each channel gets its own alias.
Hardware
Optional: hardware peripherals (Arduino, STM32, GPIO, etc.). Skip if you don’t need them.
Agents
An agent binds a model provider, profiles, bundles, and channels into one dispatchable unit. Add one per persona; reuse the same alias across channels to share state.
PeerGroups
Named groups binding a channel, member agents, and external peers. Mutual opt-in: two agents become peers only when both appear in the same group’s agents list.
Cron
Scheduled tasks. Each cron entry binds a schedule expression to a prompt, channel, and target.
Tunnel
Optional: expose your gateway over the public internet via Cloudflare or ngrok. Pick none to keep it localhost-only.
Implementations§
Source§impl Section
impl Section
Sourcepub const fn as_str(self) -> &'static str
pub const fn as_str(self) -> &'static str
Stable on-the-wire key. Also serves as the TOML
top-level prefix (e.g. providers.models.<type>.<alias>),
the /onboard/<key> URL segment, and the
SectionInfo.key field returned by the gateway.
Sourcepub const fn shape(self) -> SectionShape
pub const fn shape(self) -> SectionShape
Editor shape — the dashboard and the CLI both dispatch off this so the same component lights up for the same section in both surfaces.
Sourcepub const fn help(self) -> &'static str
pub const fn help(self) -> &'static str
Per-section help blurb — single source of truth for
the copy shown above the section’s picker / form on
every surface (CLI ui.note(...), TUI heading,
dashboard SectionInfo.help).
Sourcepub fn from_key(s: &str) -> Option<Section>
pub fn from_key(s: &str) -> Option<Section>
Parse a stable wire key, tolerating both the snake and
kebab spellings of any section. The schema mixes the two:
model_providers (snake) and peer-groups (kebab) are
both valid wire forms produced elsewhere in the codebase.
Callers (dashboard URL routing, gateway picker dispatch,
CLI clap subcommands) can pass either form; from_key
resolves to the same variant. Returns None for keys
outside the known section table. Named from_key rather
than from_str so clippy doesn’t flag it as confusable
with std::str::FromStr (parse failure is None, not
Err(_)).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Section
impl<'de> Deserialize<'de> for Section
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Section, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Section, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl FromArgMatches for Section
impl FromArgMatches for Section
Source§fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Section, Error>
fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Section, Error>
Source§fn from_arg_matches_mut(
__clap_arg_matches: &mut ArgMatches,
) -> Result<Section, Error>
fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Section, Error>
Source§fn update_from_arg_matches(
&mut self,
__clap_arg_matches: &ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§fn update_from_arg_matches_mut<'b>(
&mut self,
__clap_arg_matches: &mut ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches_mut<'b>( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§impl JsonSchema for Section
impl JsonSchema for Section
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl Serialize for Section
impl Serialize for Section
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Source§impl Subcommand for Section
impl Subcommand for Section
Source§fn augment_subcommands<'b>(__clap_app: Command) -> Command
fn augment_subcommands<'b>(__clap_app: Command) -> Command
Source§fn augment_subcommands_for_update<'b>(__clap_app: Command) -> Command
fn augment_subcommands_for_update<'b>(__clap_app: Command) -> Command
Command] so it can instantiate self via
[FromArgMatches::update_from_arg_matches_mut] Read moreSource§fn has_subcommand(__clap_name: &str) -> bool
fn has_subcommand(__clap_name: &str) -> bool
Self can parse a specific subcommandimpl Copy for Section
impl Eq for Section
impl StructuralPartialEq for Section
Auto Trait Implementations§
impl Freeze for Section
impl RefUnwindSafe for Section
impl Send for Section
impl Sync for Section
impl Unpin for Section
impl UnsafeUnpin for Section
impl UnwindSafe for Section
Blanket Implementations§
§impl<T> AnyEq for T
impl<T> AnyEq for T
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,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.