> ## 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.

# Platforms and transports

> Supported platforms and transports for Mesh SDK v0.27.0: React Native on iOS and Android over BLE, Python over local IP, Rust firmware and internet relays.

## SDK surfaces

| Surface | Installation | Deployment requirements |
| - | - | - |
| React Native | `@offline-protocol/mesh-sdk@0.27.0` | Native iOS or Android app; not Expo Go or a browser. |
| Python | Build the v0.27.0 native library and install the Python binding | Python 3.10+, matching native library and persistent storage. |
| Rust | `offline-protocol@=0.27.0` from crates.io | Supply transport I/O and storage for the target. |
| Constrained leaf | `offline-protocol-leaf` source | Firmware integration, entropy, storage and radio I/O; a full peer participates in session setup. |

## Transport compatibility

| Path | React Native | Python / embedded considerations |
| - | - | - |
| Bluetooth LE | iOS and Android native bridges | Central via `bleak`, peripheral via `bless` (installed by default except on Windows). The SDK starts a peripheral when BLE is enabled; qualify host support and permissions. |
| Wi-Fi / peer streams | Not a working data path in v0.27.0. The bundled Android Wi-Fi Direct and iOS MultipeerConnectivity managers do not speak peer-stream framing, so the slot announces no peer and refuses sends. Use BLE or a provisioned relay. | Python's `wifi_direct` slot carries authenticated TCP peer streams over an existing IP network. It does not create a Wi-Fi Direct group. |
| Internet relay | WebSocket connection to a configured relay | Python includes a client. A constrained MCU requires its own relay client or a companion full peer. |
| Reticulum | Requires a configured daemon/gateway that the SDK package does not ship | Python integrations must provide the working transport callback; enabling a flag alone does not supply the bridge. |
| Nostr | Requires reachable relays | Python integrations must provide the working transport callback. Nostr relay access requires a network path. |

A shared transport name does not establish cross-platform interoperability. In particular, iOS MultipeerConnectivity is not Android Wi-Fi Direct. Qualify the exact device pair and path; use BLE for the phone quickstart.

## Before you deploy

Confirm radio roles, permissions, background execution, payload size, battery use, storage capacity and restart behaviour on the actual hardware. Test internet loss separately from peer-link loss. A simulator build checks application integration, not radio delivery.

See [React Native installation](/docs/mesh-sdk/installation-rn), [Python](/docs/mesh-sdk/python) and [embedded integration](/docs/mesh-sdk/embedded).

## Obtain relay access

Turn on **Hosted relay** in the application's Mesh SDK tab in the developer portal. Every plan includes relay deliveries (10,000 a month on Free), and usage beyond the quota is billed at the published rate; see [hosted plans and usage](/docs/operations/licensing#hosted-plans-and-usage). Each device authenticates to the relay with its signed-in user's OfflineID session token as `authToken`. Guest sessions, portal API keys, and developer or admin tokens are not accepted. Then set the relay WebSocket `serverAddress` to `wss://relay.offlineprotocol.com`. Local peer-to-peer traffic is never metered on any plan.
