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

# Deploy to production

> Qualify an Offline Protocol deployment for production: workflow acceptance, identity lifecycle, persistence, background operation and operating limits.

## Establish the deployment contract

Record the SDK version, device models, OS versions, transports, topology, enrollment policy and expected workload. Define retention, maximum offline duration, queue capacity and the application's acceptance rules.

## Preserve identity and state

Keep the same application/profile namespace across normal restarts. Store MLS material and protocol state through the platform's supported providers. Treat logout, reinstall, key loss and device replacement as explicit lifecycle operations. Do not delete state as a general troubleshooting step.

On Android, process restart requires an application-owned receiving path. Review `registerMeshWakeTask` and its manifest opt-in in the [React Native integration guide](https://github.com/Offline-Protocol/offline-protocol-sdk/blob/v0.27.0/docs/react-native-integration.md). Register handlers before starting the protocol, including in background work.

## Test the failure boundaries

* Internet disconnected while peers continue communicating.
* Peer partition, local work and later reconnection.
* Process termination and restart with pending records.
* Queue expiry and capacity exhaustion.
* Rejected or duplicate business operations.
* Backend outage, recovery and acceptance reconciliation.
* Provider disappearance during a request, including uncertain outcomes.

Capture measured results for your deployment. Do not apply a simulator or local-LAN result to another radio or topology.

## Operate the deployment

Provide actionable errors, pending count, oldest-work age and a support route. Hosted telemetry is optional; a local workflow must not depend on uploading analytics to operate.

Pin versions, document the supported upgrade path and rehearse recovery before expanding the fleet. Read [Upgrades](/docs/operations/upgrades) and [Licensing and hosted services](/docs/operations/licensing).

Optional telemetry is metered. Its client-side key can be extracted from the application binary; scope it to Mesh SDK, monitor usage and [revoke it in the portal](/docs/getting-started/get-api-key) when needed.
