pub struct ProviderAnnouncementMessage {Show 15 fields
pub peer_id: String,
pub provider_address: String,
pub provider_type: String,
pub served_models: Vec<String>,
pub capabilities: Vec<String>,
pub rpc_endpoint: String,
pub status: String,
pub timestamp: i64,
pub ttl_secs: u64,
pub runtime_support: RuntimeSupport,
pub network_profile: NodeNetworkProfile,
pub trust_profile: TrustProfile,
pub worker_roles: Vec<WorkerRole>,
pub hardware: HardwareCapabilities,
pub geography: Option<String>,
}Expand description
Provider announcement message — broadcast over gossipsub topic “tenzro/providers”
every 60s by nodes serving models or TEE services. All peers merge incoming
announcements into their network_providers DashMap so any node can discover
every provider in the network without a central registry.
Fields§
§peer_id: Stringlibp2p peer ID of the announcing node
provider_address: StringWallet/account address of the provider
provider_type: StringProvider type (e.g. “llm”, “tee”, “general”)
served_models: Vec<String>Model IDs currently being served by this node
capabilities: Vec<String>Capability labels (e.g. “inference”, “tee-attestation”)
rpc_endpoint: StringHTTP RPC endpoint for direct inference routing (e.g. “http://10.128.0.5:8545”)
status: StringLifecycle status (e.g. “active”, “draining”)
timestamp: i64Unix timestamp (ms) when this announcement was created
ttl_secs: u64TTL in seconds — entries expire if not refreshed (default 120s)
runtime_support: RuntimeSupportRFC-0007: Runtime capabilities of this provider node
network_profile: NodeNetworkProfileRFC-0007: Network topology profile of this node
trust_profile: TrustProfileRFC-0007: TEE trust provenance for this provider
worker_roles: Vec<WorkerRole>RFC-0007: Worker roles this node can fulfil in distributed inference
hardware: HardwareCapabilitiesHardware envelope of this provider node — RAM, VRAM, disk, CPU, TEE
availability. Populated at announcement-build time from the local
HardwareCapabilities::detect() result so consumers can route by
memory / GPU / TEE class without an extra RPC round-trip.
geography: Option<String>Geographic locality declared by the operator (free-form identifier
such as us-central1-a, eu-west, ap-southeast-1). None means
the provider declined to declare a region; consumers must treat
None as “unknown geography”, not as a wildcard match.
Trait Implementations§
Source§impl Clone for ProviderAnnouncementMessage
impl Clone for ProviderAnnouncementMessage
Source§fn clone(&self) -> ProviderAnnouncementMessage
fn clone(&self) -> ProviderAnnouncementMessage
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ProviderAnnouncementMessage
impl Debug for ProviderAnnouncementMessage
Source§impl<'de> Deserialize<'de> for ProviderAnnouncementMessage
impl<'de> Deserialize<'de> for ProviderAnnouncementMessage
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for ProviderAnnouncementMessage
impl RefUnwindSafe for ProviderAnnouncementMessage
impl Send for ProviderAnnouncementMessage
impl Sync for ProviderAnnouncementMessage
impl Unpin for ProviderAnnouncementMessage
impl UnsafeUnpin for ProviderAnnouncementMessage
impl UnwindSafe for ProviderAnnouncementMessage
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more