Skip to main content

Crate weavegraph

Crate weavegraph 

Source
Expand description
GraphBuilder -> App::compile -> AppRunner
                   |              |
                   |              +-> Scheduler -> Nodes -> NodePartial
                   |                               |
                   |                               +-> Reducers -> VersionedState
                   |                               +-> EventBus (diagnostics / LLM)
                   |
                   +-> RuntimeConfig (persistence, sinks, execution knobs)

Weavegraph is a graph-driven workflow framework for concurrent, stateful execution. You define nodes and edges with graphs::GraphBuilder, compile to an app::App, and run with either high-level invocation helpers or the lower-level runtimes::AppRunner.

§Quick Start

use async_trait::async_trait;
use weavegraph::graphs::GraphBuilder;
use weavegraph::message::Message;
use weavegraph::node::{Node, NodeContext, NodeError, NodePartial};
use weavegraph::state::{StateSnapshot, VersionedState};
use weavegraph::types::NodeKind;

struct EchoNode;

#[async_trait]
impl Node for EchoNode {
    async fn run(
        &self,
        snapshot: StateSnapshot,
        _ctx: NodeContext,
    ) -> Result<NodePartial, NodeError> {
        let reply = snapshot
            .messages
            .last()
            .map(|m| format!("Echo: {}", m.content))
            .unwrap_or_else(|| "Echo: (no input)".to_string());

        Ok(NodePartial::new().with_messages(vec![Message::assistant(&reply)]))
    }
}

let app = GraphBuilder::new()
    .add_node(NodeKind::Custom("echo".into()), EchoNode)
    .add_edge(NodeKind::Start, NodeKind::Custom("echo".into()))
    .add_edge(NodeKind::Custom("echo".into()), NodeKind::End)
    .compile()?;

let initial = VersionedState::new_with_user_message("hello");
let final_state = app.invoke(initial).await?;
assert!(!final_state.snapshot().messages.is_empty());

§Feature Flags

FeatureDefaultPurpose
sqlite-migrationsyesEnables SQLite persistence support via sqlx and migration wiring.
sqlitenoEnables SQLite checkpointer APIs and runtime backend.
postgres-migrationsnoEnables Postgres migration support for checkpointer setup.
postgresnoEnables PostgreSQL checkpointer APIs and runtime backend.
rignoEnables Rig-based LLM interop and adapters.
llmnoCompatibility alias to rig for 0.3.x (planned removal in 0.4.0).
diagnosticsnoAdds miette diagnostic metadata to error types.
examplesnoPulls additional deps used by selected examples.
petgraph-compatnoExposes petgraph conversion helpers for graph analysis and visualization.

§Documentation

  • docs/QUICKSTART.md for API-first onboarding and composition patterns.
  • docs/OPERATIONS.md for runtime operations, persistence, and deployment concerns.
  • docs/STREAMING.md for event streaming patterns and production guidance.
  • docs/ARCHITECTURE.md for internal architecture and execution model details.

Re-exports§

pub use control::FrontierCommand;
pub use control::NodeRoute;

Modules§

app
channels
control
Control-flow primitives emitted by nodes to influence subsequent scheduling.
event_bus
Event bus utilities providing fan-out, sinks, and subscriber APIs.
graphs
Graph definition and compilation for workflow execution.
llm
Framework-agnostic LLM abstractions and optional adapters.
message
node
Node execution framework for the Weavegraph workflow system.
reducers
runtimes
Workflow runtime infrastructure for session management and state persistence.
schedulers
state
State management for the Weavegraph workflow framework.
telemetry
types
Core types for the Weavegraph workflow framework.
utils
Utilities module for common functionality across the Weavegraph framework.