open-standards/wai/wai-fleet/Cargo.toml
Transaction Science d82b136176 wai-fleet: a fleet as a service, enrolments and records kept append-only, reports signed and kept with their bundles
The HTTP API of extensions/fleet.md §9 over a directory it owns (two
append-only logs, reports written whole, a lock, everything verified again on
start), and wai-fleet collect, which gives each line of a node's summary file,
a path or an http(s) address, to a running service. Its tests sign the
corpus's report byte for byte, recover the directory, cut off a line a crash
cut short, read every corpus summary back through the reference relay's own
types, and collect records the relay's own code signed from a file over HTTP;
smoke.sh checks the API over HTTP and the bundle with fleet_verify.py.

wai-rs: Held checks a record or an enrolment before it is kept, so the
service keeps one only once it is on disk.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 15:31:13 -04:00

41 lines
1.9 KiB
TOML

[package]
name = "wai-fleet"
version = "0.1.0"
edition = "2024"
rust-version = "1.97"
license = "Apache-2.0"
description = "A WAI fleet as a service: an organisation's nodes enrolled by their signing keys, the session summaries and per-hop records they sign verified and kept append-only, and the fleet report the organisation signs for a period, exported as a bundle that verifies offline."
repository = "https://git.transaction.science/Transaction-Science/open-standards"
publish = false
# Its own workspace and Cargo.lock, like the other crates beside wai-rs.
[workspace]
# The relay's wtransport, vendored with its WebTransport session close, as the relay's own
# workspace patches it (joule-code/joule-code-rs/vendor/wtransport/VENDORED.md): the relay is a
# dev-dependency here, for its own types in the tests.
[patch.crates-io]
wtransport = { path = "../../joule-code/joule-code-rs/vendor/wtransport" }
[dependencies]
axum = "0.8"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "sync", "signal", "io-util", "time"] }
serde_json = { version = "1", features = ["preserve_order"] }
ed25519-dalek = "2"
getrandom = "0.4"
# `wai-fleet collect` reads a node's published summary file over https: rustls with ring, as the
# relay's own upstream does, and the platform's roots.
rustls = { version = "0.23", default-features = false, features = ["ring", "std"] }
tokio-rustls = { version = "0.26", default-features = false, features = ["ring"] }
rustls-native-certs = "0.8"
wai = { path = "../wai-rs", default-features = false, features = ["fleet"] }
[profile.release]
lto = "thin"
[dev-dependencies]
sha2 = "0.10"
# The reference relay, for its own types: the corpus's summaries read and re-serialised by them,
# and summaries and per-hop records signed by its own code, collected from a file it would write.
joule-moq-relay = { path = "../../joule-code/joule-code-rs/crates/joule-moq-relay" }
hex = "0.4"