swactor/crates/distribution/Cargo.toml
Zachery Aaron Shores-Chmielewski ae9ca3bcf3 feat: datastream feature cleaning
Promote pipeline-parallel-inference to a first-class app and consolidate observability on the datastream wire, decoupling the dashboard crate from `distribution`.

- apps/pipeline-parallel-inference: move the example out of `examples/` into `apps/` as its own workspace, rename binaries to `pp-worker`/`pp-orchestrator`, and strip release binaries
- cluster: add `ClusterNode`, a synchronous facade over the actorized distribution protocol (IrohDriver + per-node Runtime hosting Swim/Registry/Metadata/Directory actors with a `MembershipFanout`), replacing ad-hoc `driver.node()`/`tick()` call sites
- fleet: add per-node fleet telemetry that ships identity/resource records as `DatastreamFrame`s over the cluster transport to the orchestrator's `DatastreamSink`, folded into a `FleetView` on a 3s tick
- provision: add best-effort, opt-in SSH boot-phase telemetry (`PP_DEPLOY_KEY`) that streams rented-node boot logs onto the orchestrator's datastream as `proc.boot.<stage>.*`
- dashboard: rewire the crate dependency from `distribution` to `datastream`, drop the standalone `swactor-datastream-dashboard` binary, and rewrite `datastream_source.rs` to demux per-node frames into Overview/Distribution/Fleet views with live-node TTL filtering
- distribution: refresh dist/netmap plugin copy and README from "Kademlia routing" to gossip-directory terminology

Signed-off-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
2026-06-09 13:29:07 +04:00

53 lines
2 KiB
TOML

[package]
name = "distribution"
version = "0.1.0"
edition = "2024"
[features]
default = []
# `dep:iroh-relay` is pulled in here (with only the empty `test-utils` feature)
# so the client side can name `CaRootsConfig::insecure_skip_verify()` for a
# custom relay's self-signed QAD cert. iroh already depends on iroh-relay
# transitively, so this adds no real weight — it only flips the cfg gate.
iroh = ["dep:iroh", "dep:tokio", "dep:iroh-metrics", "dep:iroh-relay", "tokio/time"]
relay = [
"iroh",
# The standalone relay binary additionally needs the (heavy) server side.
"iroh-relay/server",
"tokio/macros",
"tokio/signal",
"tokio/time",
]
[dependencies]
swactor = { path = "../..", features = ["serde", "transport"] }
swactor-transport = { path = "../transport" }
datastream = { path = "../datastream" }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
uuid = { version = "1", features = ["v4", "serde"] }
iroh = { version = "0.98", optional = true }
# `test-utils` (an empty feature) exposes two cfg-gated APIs we rely on:
# - client: `CaRootsConfig::insecure_skip_verify()` (trust a custom relay's
# self-signed QAD cert) — needs only `test-utils`.
# - relay binary: `server::testing::self_signed_tls_certs_and_config()` for
# the QAD cert — needs `test-utils` + `server` (the latter via the `relay`
# feature). Using the helper keeps the `rustls::ServerConfig` version in
# lockstep with what `QuicConfig` expects.
iroh-relay = { version = "0.98", features = ["test-utils"], optional = true }
iroh-metrics = { version = "0.38", optional = true }
tokio = { version = "1", features = ["rt-multi-thread"], optional = true }
[target.'cfg(target_os = "linux")'.dependencies]
libc = "0.2"
[dev-dependencies]
serde_json = "1"
proptest = "1"
iroh-relay = { version = "0.98", features = ["server", "test-utils"] }
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "io-util", "time"] }
[[bin]]
name = "swactor-iroh-relay"
path = "src/bin/swactor-iroh-relay.rs"
required-features = ["relay"]