Filament
Crate Map
Crate map for Filament — every sub-crate, what it exposes, and how to wire core, crypto, link, packet, and transport together.
Purpose
Experimental transport/runtime stack composed from filament core, crypto, link, packet, transport, types, interfaces, and utilities.
This page follows the real source shape for Filament and explains the workflow a developer is likely to use first.
Developer workflow
Start from the smallest constructor or builder, perform one meaningful operation, inspect the returned state, then add the relevant policy, storage, or network integration. The examples below should be expanded whenever the crate API changes.
Primary types to know
Announce— filament/filament-transport/src/announce.rsAnnounceManager— filament/filament-transport/src/announce.rsAnnounceQueue— filament/filament-transport/src/announce.rsAutoInterface— filament/filament-interfaces/src/auto.rsAutoInterfaceBuilder— filament/filament-interfaces/src/auto.rsAutoInterfaceConfig— filament/filament-interfaces/src/auto.rsBandwidthManager— filament/filament-transport/src/bandwidth.rsChannel— filament/filament-link/src/channel.rsChannelMessage— filament/filament-link/src/channel.rsConfig— filament/filament-core/src/config.rsDestinationHash— filament/filament-transport/src/types.rsDestinationHash— filament/filament-types/src/primitives.rs
Example shape
// Filament ships as 8 small crates. This file enumerates the headline export
// of each so a developer can pivot to the right surface quickly.
use filament_core::{Config, Instance, InstanceMode}; // core orchestrator
use filament_packet::{Header, Packet, PacketValidator}; // wire layer
use filament_link::{Link, LinkOptions, LinkProof, LinkState}; // session layer
use filament_transport::{ForwardingEngine, PathDiscovery, RoutingTable}; // routing
use filament_interfaces::{InterfaceManager, TCPClientInterface, UDPInterface}; // I/O
use filament_crypto::{KeyPair, sign, verify}; // crypto utilities
use filament_types::{Bytes32, Hash}; // shared aliases
fn main() {
// The five lines below match the public surface used by examples in the
// filament workspace. Each crate is independently versioned, so importing
// a single crate keeps build graphs small in downstream consumers.
let _ = (
InstanceMode::Server,
Header::default(),
LinkState::Pending,
TCPClientInterface::name(),
);
println!("filament crate map: 8 crates, one orchestrator (Instance)");
}