Rust API Reference

Complete AgentNode API surface.

AgentNode#

Builder

use subway_core::AgentNode;
 
let node = AgentNode::builder()
    .name("my-agent.relay")
    .relay("relay.subway.dev:9000")
    .key_path(".subway/keys")
    .with_mdns()
    .with_dht()
    .build()
    .await?;
MethodTypeDescription
builder()→ AgentNodeBuilderCreate a new builder
.name(str)BuilderAgent name (required)
.relay(str)BuilderRelay address
.key_path(str)BuilderCustom key storage path
.with_mdns()BuilderEnable mDNS discovery
.with_dht()BuilderEnable DHT discovery
.build()→ SubwayResult<AgentNode>Connect and return agent

Identity

MethodSignatureDescription
peer_id()→ PeerIdLocal peer identity
name()→ &strRegistered agent name
listen_addrs()→ &[Multiaddr]Local listen addresses
connected_peer_count()→ usizeConnected peer count
is_connected_to(pid)→ boolCheck specific peer

Messaging

MethodSignatureDescription
send(name, msg)→ SubwayResult<()>Fire-and-forget message
on_message(handler)→ ()Register message handler
new_agent_message(type, payload)→ AgentMessageCreate message envelope

RPC

MethodSignatureDescription
call(name, req)→ SubwayResult<RpcResponse>RPC by name (30s timeout)
call_by_peer_id(pid, req)→ SubwayResult<RpcResponse>RPC by PeerId
handle_rpc(handler)→ ()Sync RPC handler
handle_rpc_async(handler)→ ()Async RPC handler (spawns per-request)

Pub/Sub

MethodSignatureDescription
broadcast(topic, msg)→ SubwayResult<()>Publish to topic
subscribe(topic, handler)→ ()Subscribe (wildcards: metrics.*, *)
unsubscribe(topic)→ ()Unsubscribe

Discovery

MethodSignatureDescription
resolve(name)→ SubwayResult<PeerId>Name → PeerId
add_peer(pid, addr)→ SubwayResult<()>Add peer address
dial_peer(addr)→ SubwayResult<()>Dial peer directly