Use a module in Rust
atlibs-host is the host behind the CLI, a crate taken by git at a pinned rev. examples/rust-host is
a whole program; copy the directory to start your own.
examples/rust-host/Cargo.toml
[dependencies]
atlibs-host = { git = "https://knotless.dev/johnandersen777.bsky.social/atlibs", rev = "7df7c6a" }
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }
serde_json = "1"
tokio = { version = "1", features = ["full"] }
examples/rust-host/src/main.rs
let module = Module::from_manifest(read("wasm")?, &spec)?;
let ctx = Ctx { runner: Arc::new(Bound { wasm: Wasm::new(5000), bytes: module.bytes.clone(), sha256: None }), ledger: None, now: None };
// signed out: public reads only (a Session here acts as an account)
let fetch: Arc<dyn Fetch> = Arc::new(reqwest::Client::new());
let call = Arc::new(HostCall { fetch, session: None, attest: None });
let input = json!({ "did": did, "collection": "com.fedfork.exec.wasm.module" });
let ran = run_module(&ctx, &module, "count", input.as_object().unwrap(), call, Options::default()).await;
cd examples/rust-host
atlibs add bobvmbuilder.bsky.social/hello
cargo run --release -- modules/hello did:plc:ocnuqjlzgohypj3zoznermms
{"collection":"com.fedfork.exec.wasm.module","records":…}
The first build takes a few minutes (wasmtime). Sessions, compositions, client metadata: Rust servers.
Previous: CLI | Next: Write a module