Skip to main content

Configuration

Configure a cairn node at creation time. All options have sensible defaults -- a zero-config node works out of the box (Tier 0).

Configuration Options

OptionTypeDefaultDescription
Signal serverstringnullWebSocket URL of the signaling server (wss://...)
Signal auth tokenstringnullBearer token for signaling server authentication
TURN serverstringnullTURN relay URI (turn:host:port)
TURN usernamestringnullTURN credential username
TURN passwordstringnullTURN credential password
Server modebooleanfalseEnable server mode (store-and-forward, personal relay)
Storage pathstringnullPersistence directory for server mode data
Mesh enabledbooleanfalseEnable multi-hop mesh routing
Identity seedbytesrandom32-byte seed for deterministic Ed25519 identity
Listen addressstring0.0.0.0:0Local address to bind for incoming connections

Full Configuration Example

use cairn_p2p::{CairnConfig, create};

let config = CairnConfig {
signal_server: Some("wss://signal.example.com".into()),
signal_auth_token: Some("my-token".into()),
turn_server: Some("turn:relay.example.com:3478".into()),
turn_username: Some("user".into()),
turn_password: Some("pass".into()),
server_mode: false,
storage_path: None,
mesh_enabled: true,
identity_seed: None, // random identity
listen_addr: Some("0.0.0.0:0".into()),
..CairnConfig::default()
};
let node = create(config)?;
node.start().await?;

Defaults

With no configuration, a node uses:

  • DHT/mDNS for peer discovery (no signaling server)
  • Public STUN for NAT traversal (no relay)
  • Random identity generated on each creation
  • No server mode (pure peer-to-peer)
  • No mesh routing (direct connections only)