Rust library
In-process. The run future is the agent, and it owns its own recovery.
let agent = Agent::builder() .model(config, "claude-opus-4-8") .system_prompt("Answer in one or two sentences.") .build()?; // start drives the loop; recover() continues a crashed run from the log match Runtime::new(store).start(&agent, json!({"question": "..."})).await? { RunOutcome::Completed { output, .. } => println!("completed: {output}"), RunOutcome::Parked { reason, .. } => println!("parked: {reason:?}"), }