Encrypted datagrams hop device to device, over BLE, Wi-Fi, and the internet, until they reach the person or service you meant. No tower required. Held until they land or expire, not dropped for a missing network.
Your browser is running the real Hop protocol: every node above is the actual hop-core, compiled to WebAssembly, carrying real encrypted messages. Only the devices and their radios are simulated.

Held on the devices around you, re-offered at every encounter, delivered the moment a way opens. No tower. No server required.
Disaster, off-grid sensors, a region cut off, a phone with no plan, same problem: no reliable path, right now. Most offline products rebuild that transport and weld it to a single app. Hop is that layer, done once, a sealed, store-and-forward datagram. The narrow waist for intermittent networks: many apps above, many bearers below. The core only moves bytes, a thin per-platform driver runs the radios.
The same fabric, wherever coordination outruns connectivity.

Relay peer to peer instead of fighting for a cell.

No tower, no server, the people on scene are the network.

Messages hop person to person until they reach the group.

A long-range 900 MHz bridge stretches the mesh across the gap.

Sensors, vehicles, and crews stay in sync past Wi-Fi's edge.

Crews and equipment relay through each other across the site.
A pure-Rust core with native bindings via UniFFI. Open a node from a key, address a sealed payload, drain your inbox, the mesh handles relaying, custody, and delivery.
// open a node from your 32-byte secret, storage is managed for you let node = HopNode::open(secret)?; // reach a device by its address (its public key), sealed, store-and-forward node.send(peer, Payload::message("on my way"))?; // drain the inbox: sealed bundles addressed to you for msg in node.receive()? { handle(msg.open()?); }
// open a node from your 32-byte secret, storage is managed for you let node = try HopNode(secret: secret) // reach a device by its address (its public key), sealed, store-and-forward try node.send(to: peer, payload: .message("on my way")) // drain the inbox: sealed bundles addressed to you for msg in try node.receive() { handle(try msg.open()) }
// open a node from your 32-byte secret, storage is managed for you val node = HopNode.open(secret) // reach a device by its address (its public key), sealed, store-and-forward node.send(peer, Payload.message("on my way")) // drain the inbox: sealed bundles addressed to you for (msg in node.receive()) handle(msg.open())
The device does the work, so the SDK is open and free. The cloud backbone costs money to run, so that's what you pay for, only when you use it.
Embed hop-core on iOS & Android. Source-available, free forever.
Managed relay fleet, durable mailboxes, internet egress, hops:// endpoints.
Terms beyond the FSL non-compete, for products that need them.
On-prem fleets, private backbones, and support for field operations.
Embed the free SDK today. Add the cloud backbone when you need to reach across the world.