> ## Documentation Index
> Fetch the complete documentation index at: https://www.offlineprotocol.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> These docs target Mesh SDK v0.27.0. Match the installed package and binding before generating code. Start at /getting-started/agents for task-specific reading paths.
> Call the company and product Offline Protocol, never Offline alone. Current packages: @offline-protocol/mesh-sdk 0.27.0 (React Native), @offline-protocol/id-react 0.2.0, @offline-protocol/id-react-native 0.3.3, @offline-protocol/pol 0.1.2 and @offline-protocol/cli 0.2.6. Canonical docs URLs start with https://www.offlineprotocol.com/docs.
> The Mesh SDK runs in a native app or gateway. A browser OfflineID SDK integration does not provide browser mesh transport. Local mesh operation does not require a portal API key.
> Service RPC is signed plaintext in v0.27.0. Message delivery, durable local acceptance and backend commit are distinct outcomes. Use the workflow guide for the required application logic.
> Offline Protocol CLI 0.2.6 is on npm (@offline-protocol/cli, command offline). Its local MCP server runs with offline mcp serve and requires no login or key. Hosted MCP is at https://mcp.offlineprotocol.com/mcp with an application API key in Authorization: Bearer and a matching x-app-id; organization keys are rejected. Follow /tools/overview for setup and do not invent commands beyond it. MCP provides integration context and planning, not mesh execution; file-writing tools are local only.
> Phone Wi-Fi Direct and MultipeerConnectivity carry no data in v0.27.0. Use BLE or a provisioned relay. The receiver core ACKs before application persistence; use application acceptance for durable workflows.
> Proof of Location is Sepolia testnet witness evidence, not zero-knowledge proof or proof of presence. The geohash is public onchain. Read /proof-of-location/security before integration.

# Configuration types

> Exact TypeScript configuration interfaces in the published Mesh SDK React Native v0.27.0 package, generated from its type declarations.

These declarations are generated from the published SDK package. See [Configuration](/docs/mesh-sdk/configuration) for defaults, lifecycle and deployment guidance. Comments are omitted here so a stale declaration comment cannot override the runtime defaults documented in that guide.

## ProtocolConfig

```typescript theme={null}
export interface ProtocolConfig {
  appId: string;
  profile: string;
  transports?: TransportsConfig;
  binaryWireEnabled?: boolean;
  fileTransfer?: FileTransferConfig;
  encryption?: EncryptionConfig;
  group?: {
    maxGroupMembers?: number;
    relayEnabled?: boolean;
    relayBroadcastEnabled?: boolean;
    enforceAdminCommits?: boolean;
  };
  dors?: {
    preferOnline?: boolean;
    switchHysteresis?: number;
    switchCooldownSecs?: number;
    bleToWifiRetryThreshold?: number;
    minSuccessRateBeforeEscalation?: number;
    minBleSamplesBeforeSuccessRateEscalation?: number;
    rssiSwitchThreshold?: number;
    congestionQueueThreshold?: number;
    stabilityWindowSecs?: number;
    poorSignalDurationSecs?: number;
    ttlEscalationThreshold?: number;
    congestionDurationSecs?: number;
    ttlEscalationHoldSecs?: number;
    historyWindowSize?: number;
    queueRecoveryRatio?: number;
    lowBatteryThreshold?: number;
    relayMinBatteryLevel?: number;
    relayOptimalConnectionCount?: number;
  };
  meshRelay?: MeshRelayConfig;
  relay?: RelayConfig;
  network?: NetworkConfig;
  reliability?: ReliabilityConfig;
  data?: DataConfig;
  security?: SecurityConfig;
  controlFreshnessEnforced?: boolean;
}
```

## TransportsConfig

```typescript theme={null}
export interface TransportsConfig {
  ble?: BleTransportConfig;
  internet?: InternetTransportConfig;
  wifiDirect?: WifiDirectTransportConfig;
  reticulum?: ReticulumTransportConfig;
  nostr?: NostrTransportConfig;
}
```

## BleTransportConfig

```typescript theme={null}
export interface BleTransportConfig {
  enabled: boolean;
}
```

## InternetTransportConfig

```typescript theme={null}
export interface InternetTransportConfig {
  enabled: boolean;
  serverAddress?: string;
  autoReconnect?: boolean;
  reconnectDelay?: number;
  authToken?: string;
}
```

## WifiDirectTransportConfig

```typescript theme={null}
export interface WifiDirectTransportConfig {
  enabled: boolean;
  deviceName?: string;
  autoAccept?: boolean;
  groupOwnerIntent?: number;
}
```

## ReticulumTransportConfig

```typescript theme={null}
export interface ReticulumTransportConfig {
  enabled: boolean;
  daemonAddress?: string;
  autoReconnect?: boolean;
  maxReconnectAttempts?: number;
}
```

## NostrTransportConfig

```typescript theme={null}
export interface NostrTransportConfig {
  enabled: boolean;
  relayUrls?: string[];
  connectionTimeout?: number;
  autoReconnect?: boolean;
  reconnectDelay?: number;
  maxReconnectAttempts?: number;
  sealingEnabled?: boolean;
  coldContactEnabled?: boolean;
  usernameDiscoveryEnabled?: boolean;
}
```

## FileTransferConfig

```typescript theme={null}
export interface FileTransferConfig {
  chunkSize?: number;
  maxFileSize?: number;
}
```

## EncryptionConfig

```typescript theme={null}
export interface EncryptionConfig {
  enabled?: boolean;
  autoKeyExchange?: boolean;
  storePending?: boolean;
  requireEncryption?: boolean;
  compactEnvelopeEnabled?: boolean;
  richPayloadEnabled?: boolean;
  cryptoRecoveryEnabled?: boolean;
  pendingQueue?: PendingQueueConfig;
}
```

## PendingQueueConfig

```typescript theme={null}
export interface PendingQueueConfig {
  maxPendingPerPeer?: number;
  maxPendingGlobal?: number;
  pendingTtlMs?: number;
  overflowPolicy?: OverflowPolicy;
}
```

## OverflowPolicy

```typescript theme={null}
export type OverflowPolicy = 'drop_oldest' | 'drop_newest';
```

## MeshRelayConfig

```typescript theme={null}
export interface MeshRelayConfig {
  maxTtl?: number;
  denseMaxTtl?: number;
  denseDegree?: number;
  fanout?: number;
  jitterMinMs?: number;
  jitterMaxMs?: number;
  ratePerSec?: number;
  burst?: number;
  peerRatePerSec?: number;
  peerBurst?: number;
  queueCapacity?: number;
  biasMinScale?: number;
  biasMaxHandicapMs?: number;
  activityWindowMs?: number;
  activityMinForwards?: number;
  activityIdleWindows?: number;
}
```

## RelayConfig

```typescript theme={null}
export interface RelayConfig {
  allowRelay?: boolean;
  minBatteryForRelay?: number;
  relayPriority?: RelayPriority;
}
```

## RelayPriority

```typescript theme={null}
export type RelayPriority = 'never' | 'auto' | 'always';
```

## NetworkConfig

```typescript theme={null}
export interface NetworkConfig {
  initialTtl?: number;
}
```

## ReliabilityConfig

```typescript theme={null}
export interface ReliabilityConfig {
  ack?: AckConfig;
  retry?: RetryConfig;
  dedup?: DedupConfig;
}
```

## AckConfig

```typescript theme={null}
export interface AckConfig {
  defaultTimeoutMs?: number;
  maxPendingAcks?: number;
}
```

## RetryConfig

```typescript theme={null}
export interface RetryConfig {
  maxRetries?: number;
  initialDelayMs?: number;
  maxDelayMs?: number;
  backoffMultiplier?: number;
  outboxMaxLifetimeMs?: number;
  pendingMessageMaxLifetimeMs?: number;
  edgeDrivenUnreachableDm?: boolean;
}
```

## DedupConfig

```typescript theme={null}
export interface DedupConfig {
  maxTrackedMessages?: number;
  retentionTimeSecs?: number;
}
```

## DataConfig

```typescript theme={null}
export interface DataConfig {
  enabled?: boolean;
}
```

## SecurityConfig

```typescript theme={null}
export interface SecurityConfig {
  controlFreshnessEnforced?: boolean;
}
```

## TelemetryConfig

```typescript theme={null}
export interface TelemetryConfig {
  apiKey: string;
  appId: string;
  appVersion?: string;
  debug?: boolean;
  flushIntervalMs?: number;
  maxBatchBytes?: number;
  maxBufferedRecords?: number;
  includeDeviceId?: boolean;
  scrubIds?: boolean;
  mlsVerbosity?: MlsVerbosity;
  metricsCadenceMs?: number;
  routingDiagnostic?: boolean;
  mlsSamplingBypass?: boolean;
}
```

## MlsVerbosity

```typescript theme={null}
export type MlsVerbosity = 'off' | 'lifecycle' | 'diagnostic';
```
