pub struct MeshConfig {
pub name: String,
pub version: Option<String>,
pub coordinator: Option<String>,
pub auto_coordinator: bool,
pub coordinator_model: Option<String>,
pub memory: Option<MemoryConfig>,
pub agents: Vec<AgentConfig>,
}Expand description
Configuration for a multi-agent mesh.
This struct allows defining multiple agents in a single TOML file.
§Example
name = "research_mesh"
[memory]
backend = "sqlite"
path = "./data/knowledge.db"
[[agents]]
name = "researcher"
model = "ollama::gemma3:latest"
system_prompt = "You are a research assistant."
temperature = 0.7
[[agents]]
name = "summarizer"
model = "ollama::gemma3:latest"
system_prompt = "You are a summarization expert."
temperature = 0.5Fields§
§name: StringName of the mesh
version: Option<String>Version of the mesh configuration
coordinator: Option<String>Name of the agent to use as coordinator (must exist in agents list) Takes precedence over auto_coordinator if both are set
auto_coordinator: boolIf true, mesh will auto-generate a coordinator agent with orchestration capabilities Only used if coordinator is not explicitly set
coordinator_model: Option<String>Default model for auto-generated coordinator (defaults to first agent’s model)
memory: Option<MemoryConfig>Shared memory configuration for all agents (can be overridden per-agent)
agents: Vec<AgentConfig>List of agent configurations
Implementations§
Source§impl MeshConfig
impl MeshConfig
Sourcepub fn from_toml(toml_str: &str) -> Result<Self>
pub fn from_toml(toml_str: &str) -> Result<Self>
Parse a MeshConfig from a TOML string.
§Example
use enki_runtime::config::MeshConfig;
let toml = r#"
name = "my_mesh"
[[agents]]
name = "agent1"
model = "ollama::llama2"
"#;
let config = MeshConfig::from_toml(toml).unwrap();
assert_eq!(config.name, "my_mesh");
assert_eq!(config.agents.len(), 1);Sourcepub fn from_file(path: impl AsRef<Path>) -> Result<Self>
pub fn from_file(path: impl AsRef<Path>) -> Result<Self>
Load a MeshConfig from a TOML file.
§Example
use enki_runtime::config::MeshConfig;
let config = MeshConfig::from_file("agents.toml").unwrap();Sourcepub fn add_agent(self, agent: AgentConfig) -> Self
pub fn add_agent(self, agent: AgentConfig) -> Self
Add an agent configuration.
Sourcepub fn get_agent(&self, name: &str) -> Option<&AgentConfig>
pub fn get_agent(&self, name: &str) -> Option<&AgentConfig>
Get agent config by name.
Sourcepub fn get_coordinator(&self) -> Option<&AgentConfig>
pub fn get_coordinator(&self) -> Option<&AgentConfig>
Get the coordinator agent configuration.
Priority order:
- Explicitly set
coordinatorfield (must exist in agents list) - First agent in the list (default behavior)
Returns None if no agents are defined.
Sourcepub fn get_coordinator_name(&self) -> Option<&str>
pub fn get_coordinator_name(&self) -> Option<&str>
Get the name of the coordinator agent.
Sourcepub fn ensure_coordinator(&mut self)
pub fn ensure_coordinator(&mut self)
Ensure a coordinator agent exists if auto_coordinator is enabled.
This creates a built-in coordinator agent with orchestration capabilities that knows about all other agents in the mesh.
Call this after loading the config and before using the mesh.
Sourcepub fn with_coordinator(self, name: impl Into<String>) -> Self
pub fn with_coordinator(self, name: impl Into<String>) -> Self
Set the coordinator agent by name.
Sourcepub fn with_auto_coordinator(self, model: Option<String>) -> Self
pub fn with_auto_coordinator(self, model: Option<String>) -> Self
Enable auto-coordinator with optional model.
Trait Implementations§
Source§impl Clone for MeshConfig
impl Clone for MeshConfig
Source§fn clone(&self) -> MeshConfig
fn clone(&self) -> MeshConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MeshConfig
impl Debug for MeshConfig
Source§impl Default for MeshConfig
impl Default for MeshConfig
Source§impl<'de> Deserialize<'de> for MeshConfig
impl<'de> Deserialize<'de> for MeshConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for MeshConfig
impl RefUnwindSafe for MeshConfig
impl Send for MeshConfig
impl Sync for MeshConfig
impl Unpin for MeshConfig
impl UnwindSafe for MeshConfig
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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