Choose whether an event observes or acts
You choose an explicit action for every route: observe, invalidate, wake, or resume. Only wake and resume may invoke a model.
Worked example
See the idea in context
let mut target = AxEventTarget::new("inventory-agent", invoke_agent);
target.map_input = Some(Arc::new(|event, _|
Ok(json!({"uri": event.data["uri"]}))
));
let route = AxEventRoute {
id: "resource-wake".into(), action: "wake".into(),
r#match: json!({"types":["mcp.resource.updated"]}),
target_id: Some("inventory-agent".into()),
require_authenticated: true, ordering: "strict".into(),
debounce_ms: 0, instance_key: None,
};
let mut runtime = AxEventRuntime::new(vec![route], json!({}))?;
runtime.register_target(target);
runtime.start()?;Run itIn your own project
cargo add axllm
use axllm::{ai, ax};
use serde_json::json;
let llm = ai("openai", json!({"apiKey": std::env::var("OPENAI_API_KEY")?}))?;
let classify = ax("review:string -> sentiment:class \"positive, negative, neutral\"")?;Set OPENAI_APIKEY in your environment before running provider-backed code.
From a clone of the ax repo:
npm run example -- rust src/examples/rust/mcp/resource_wake_agent.rsActive practice
Answer 2 in a row to learn this · attempt 1