defmodule ExReticulum do @moduledoc """ Elixir NIF wrapper for the Reticulum-rs mesh networking stack. ExReticulum enables Elixir applications to participate as full nodes in Reticulum networks — creating identities, announcing destinations, establishing encrypted links, and routing packets. ## Quick Start # Generate an identity {:ok, identity} = ExReticulum.Identity.generate() # Start a transport node {:ok, transport} = ExReticulum.Transport.start_link( identity: identity, name: "my_node" ) # Add a network interface {:ok, :added} = ExReticulum.Transport.add_interface( transport, :tcp_client, address: "127.0.0.1:4242" ) # Create and announce a destination {:ok, dest} = ExReticulum.Transport.add_destination( transport, identity, "myapp", "service" ) {:ok, :announced} = ExReticulum.Transport.announce(transport, dest) # Subscribe to incoming announces {:ok, :subscribed} = ExReticulum.Transport.subscribe(transport, :announces) ## Modules - `ExReticulum.Identity` — Cryptographic identity management (Ed25519/X25519 key pairs) - `ExReticulum.Transport` — Core networking GenServer managing interfaces, destinations, and events - `ExReticulum.Destination` — Addressable network endpoints - `ExReticulum.Link` — Bidirectional encrypted communication channels - `ExReticulum.Interface` — Network interface configuration helpers - `ExReticulum.Announce` — Announce event struct received from the network - `ExReticulum.LinkEvent` — Link state change event struct - `ExReticulum.ReceivedData` — Incoming data event struct - `ExReticulum.Error` — Exception raised by bang variants """ end