Skip to main content

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.