Configuration
ProtocolConfig
interface ProtocolConfig {
appId: string;
userId: string;
transports?: TransportsConfig;
encryption?: EncryptionConfig;
dors?: DorsConfig;
relay?: RelayConfig;
network?: NetworkConfig;
reliability?: ReliabilityConfig;
fileTransfer?: FileTransferConfig;
path?: PathConfig;
}
TransportsConfig
interface TransportsConfig {
ble?: {
enabled: boolean; // default: true
};
internet?: {
enabled: boolean; // default: false
serverAddress?: string; // WebSocket URL
autoReconnect?: boolean; // default: true
reconnectDelay?: number; // ms
authToken?: string; // Auth token (falls back to deviceId)
};
wifiDirect?: {
enabled: boolean; // default: false (Android only)
deviceName?: string;
autoAccept?: boolean;
groupOwnerIntent?: number; // 0-15
};
}
EncryptionConfig
Controls MLS-based end-to-end encryption. Encryption is enabled by default.interface EncryptionConfig {
enabled?: boolean; // default: true
autoKeyExchange?: boolean; // default: true — auto-send key packages on peer discovery
storePending?: boolean; // default: true — queue messages until session is ready
requireEncryption?: boolean; // default: false — fail sends if encryption unavailable
pendingQueue?: PendingQueueConfig;
}
interface PendingQueueConfig {
maxPendingPerPeer?: number; // default: 64
maxPendingGlobal?: number; // default: 4096
pendingTtlMs?: number; // default: 120000 (2 minutes)
overflowPolicy?: 'drop_oldest' | 'drop_newest'; // default: 'drop_oldest'
}
DorsConfig
Controls transport switching behavior.interface DorsConfig {
preferOnline?: boolean; // default: false
switchHysteresis?: number; // default: 15.0
switchCooldownSecs?: number; // default: 20
bleToWifiRetryThreshold?: number; // default: 2
minSuccessRateBeforeEscalation?: number; // default: 0.3 — BLE success rate floor
minBleSamplesBeforeSuccessRateEscalation?: number; // default: 5
rssiSwitchThreshold?: number; // default: -85 dBm
congestionQueueThreshold?: number; // default: 50
stabilityWindowSecs?: number; // default: 8
poorSignalDurationSecs?: number; // default: 10
ttlEscalationThreshold?: number; // default: 2
congestionDurationSecs?: number; // default: 10
ttlEscalationHoldSecs?: number; // default: 20
historyWindowSize?: number; // default: 10
queueRecoveryRatio?: number; // default: 0.5
}
RelayConfig
interface RelayConfig {
allowRelay?: boolean; // Allow device to act as relay
minBatteryForRelay?: number; // Minimum battery for relaying
relayThreshold?: number; // Connection threshold for relay promotion
relayPriority?: RelayPriority; // 'never' | 'auto' | 'always'
}
NetworkConfig
interface NetworkConfig {
initialTtl?: number; // default: 8
}
ReliabilityConfig
interface ReliabilityConfig {
ack?: {
defaultTimeoutMs?: number; // default: 5000
maxPendingAcks?: number; // default: 1000
};
retry?: {
maxRetries?: number; // default: 5
initialDelayMs?: number; // default: 1000
maxDelayMs?: number; // default: 30000
backoffMultiplier?: number; // default: 2.0
outboxMaxLifetimeMs?: number; // default: 3600000
};
dedup?: {
maxTrackedMessages?: number; // default: 10000
retentionTimeSecs?: number; // default: 3600
};
}
PathConfig
interface PathConfig {
forwardToTopK?: number; // default: 3
maxCongestionLevel?: number; // default: 0.8
}
FileTransferConfig
interface FileTransferConfig {
chunkSize?: number; // default: 32768 (32KB)
maxFileSize?: number; // default: 104857600 (100MB)
}
Next: API Methods
Explore all available methods for messaging, encryption, groups, and more.