Getting started

Quickstart

Hop is a Rust core you embed. Add the dependency, hand it a secret, and address bundles, it handles relaying, retransmit, dedup, and delivery. This is the shape; the full API and the iOS/Android bindings come with the SDK.

1

Add the core

Embed hop-core in your Rust app, or pull the UniFFI bindings into an iOS or Android target.

# Cargo.toml, embed the core
[dependencies]
hop-core = "0.1"   # early access, request access
2

Open a node from a secret

The library never owns identity, you hand it a 32-byte Ed25519 seed and keep it wherever you choose (Keychain, Keystore, iCloud). The secret is the address.

3

Send, to a device, or the internet

Address a sealed payload to another device's key, or send a hops:// request to an endpoint node's key. You don't pick a route; Hop carries it.

4

Receive

Drain your inbox of sealed bundles addressed to you, and open them. Delivery acks and dedup are handled for you.

// open a node from your 32-byte secret (you own key storage)
let node = HopNode::open(secret)?;

// reach a device by its address (its public key)
node.send(
    Destination::Device(peer_address),
    Payload::message("on my way"),
)?;

// call a hops:// service another app hosts (an endpoint SDK), addressed by its key
node.send_service_request(endpoint, "acme/orders", "create", br#"{"item":"widget"}"#)?;

// drain inbox: sealed bundles addressed to you
for msg in node.receive()? { handle(msg.open()?); }

Illustrative, the full API across hop-core and the FFI bindings comes with early access.

Pick your platform

The core only moves bytes; a per-platform driver runs the radios. Start withiOS, Android,macOS, ESP32, orLinux / server.

Get access

Hop is in early access. Request access and tell us what you're building.