| Crates.io | cabal |
| lib.rs | cabal |
| version | 0.1.0 |
| created_at | 2025-12-14 22:53:54.919319+00 |
| updated_at | 2025-12-14 22:53:54.919319+00 |
| description | Hierarchical agent orchestration system - the scheming group |
| homepage | |
| repository | https://github.com/moltenlabs/molten |
| max_upload_size | |
| id | 1985228 |
| size | 89,697 |
Hierarchical agent orchestration system - the scheming group.
Cabal is the orchestration layer for hierarchical AI agent systems. It manages agent lifecycles, coordinates task execution, and handles communication between agents.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ORCHESTRATOR (Level 0) β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Task Planner β β Agent Factoryβ β Result Mergerβ β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββΌββββββββββββββββββββ
βΌ βΌ βΌ
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β Domain Lead β β Domain Lead β β Domain Lead β
β (Level 1) β β (Level 1) β β (Level 1) β
ββββββββ¬βββββββ ββββββββ¬βββββββ ββββββββ¬βββββββ
β β β
ββββββ΄βββββ ββββββ΄βββββ ββββββ΄βββββ
βΌ βΌ βΌ βΌ βΌ βΌ
βββββββ βββββββ βββββββ βββββββ βββββββ βββββββ
β W1 β β W2 β β W3 β β W4 β β W5 β β W6 β
βββββββ βββββββ βββββββ βββββββ βββββββ βββββββ
[dependencies]
cabal = "0.1"
use cabal::{Orchestrator, GoblinChannel, Op, Event};
use trinkets::ToolRegistry;
#[tokio::main]
async fn main() {
// Create orchestrator with tool registry
let registry = ToolRegistry::new();
let (orchestrator, channel) = Orchestrator::with_channel(registry);
// Spawn orchestrator in background
tokio::spawn(orchestrator.run());
// Send operations
channel.send(Op::user_input("Build a REST API")).unwrap();
// Handle events
while let Some(event) = channel.recv().await {
match event {
Event::AgentSpawned { agent_id, role, .. } => {
println!("Agent {} spawned as {:?}", agent_id, role);
}
Event::TaskComplete { result, .. } => {
println!("Done: {}", result.summary);
break;
}
_ => {}
}
}
}
use warhorn::AgentRole;
// Orchestrator - top-level coordinator
let orchestrator = AgentRole::Orchestrator;
// Domain leads - coordinate specific areas
let frontend_lead = AgentRole::DomainLead {
domain: "frontend".into()
};
// Workers - execute specific tasks
let worker = AgentRole::Worker;
// Specialists - experts in specific areas
let security = AgentRole::Specialist {
specialty: "security".into()
};
MIT OR Apache-2.0