wasm-agent 0.1.0

ReAct agent loop for WASM/edge environments: Thought-Action-Observation with tool dispatch
Documentation

wasm-agent

ReAct agent loop for WASM and edge environments — Thought-Action-Observation with tool dispatch.

A minimal, dependency-light agent loop that runs in WebAssembly, Cloudflare Workers, Fastly Compute, and any environment where you can't use OS threads or a full Tokio runtime.

What's inside

  • ReActLoop — Thought → Action → Observation cycle with configurable max iterations
  • ToolRegistry — register sync or async tools as closures; dispatch by name
  • AgentContext — scratchpad memory for the current reasoning chain
  • StopCondition — pluggable termination: goal reached, max steps, timeout, error threshold
  • Trace — structured log of every thought/action/observation for debugging

Features

  • WASM-compatible — no OS threads, no std::time, no filesystem
  • Tool dispatch — tools are plain functions; no macros or derive required
  • Traceable — full reasoning trace returned alongside the final answer
  • Resumable — serialize agent state mid-loop and resume later

Quick start

use wasm_agent::{ReActLoop, ToolRegistry};

let mut tools = ToolRegistry::new();
tools.register("search", |query: &str| {
    format!("Results for: {}", query)
});

let agent = ReActLoop::new(tools)
    .max_steps(10);

let result = agent.run("What is the capital of France?").await?;
println!("Answer: {}", result.answer);
println!("Steps taken: {}", result.trace.len());

Add to your project

[dependencies]

wasm-agent = { git = "https://github.com/Mattbusel/wasm-agent" }

Test coverage

cargo test