Expand description
OpenCode Server integration for agent orchestration.
Provides HTTP client and SSE event streaming for OpenCode Server mode, enabling structured communication with agents instead of CLI subprocess spawning.
§Architecture
Instead of spawning one CLI process per agent, this module communicates with a single OpenCode server that manages multiple sessions:
SCUD Swarm ──HTTP──► OpenCode Server
◄─SSE── real-time events (tool calls, output, completion)§Benefits
- Lower overhead (single server vs N processes)
- Structured events (tool calls, text deltas, completion)
- Graceful cancellation via HTTP API
- Real-time visibility into agent activity
§Example
use scud::opencode::{OpenCodeManager, global_manager};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let manager = global_manager();
manager.ensure_running().await?;
let session = manager.client().create_session("Task 1").await?;
manager.client().send_message(&session.id, "Do something", None).await?;
Ok(())
}OpenCode Server integration
Provides HTTP client and SSE event streaming for OpenCode Server mode. This module enables SCUD to communicate with OpenCode’s headless server for agent orchestration with structured events and graceful cancellation.
§Architecture
SCUD Swarm ──HTTP──► OpenCode Server (localhost:4096)
◄─SSE── real-time events§Usage
use scud::opencode::{OpenCodeClient, OpenCodeManager};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Get global manager (auto-starts server if needed)
let manager = scud::opencode::global_manager();
manager.ensure_running().await?;
// Create session and send prompt
let client = manager.client();
let session = client.create_session("Task 1").await?;
client.send_message(&session.id, "Implement feature X", None).await?;
Ok(())
}Re-exports§
pub use client::OpenCodeClient;pub use events::EventStream;pub use events::OpenCodeEvent;pub use manager::global_manager;pub use manager::init_global_manager;pub use manager::OpenCodeManager;pub use manager::ServerConfig;pub use manager::DEFAULT_PORT;pub use orchestrator::execute_wave_server;pub use orchestrator::AgentHandle;pub use orchestrator::AgentOrchestrator;pub use types::*;
Modules§
- client
- HTTP client for OpenCode Server
- events
- SSE event streaming for OpenCode Server
- manager
- OpenCode Server lifecycle management
- orchestrator
- Agent orchestration via OpenCode Server
- types
- OpenCode Server API types