NexaNode is a lightweight, gossip‑based P2P node that stores and relays end‑to‑end encrypted messages. No central servers, no single point of failure.
non‑blocking I/O
persistent & fast
dynamic fanout
signature verify
current peers: 15+ • health‑checked
A modern P2P node designed for security, scalability, and simplicity.
Messages are encrypted client‑side; nodes only see encrypted payloads. Verification with Ed25519 signatures.
Every message includes a unique nonce. Used nonces are tracked in SQLite to prevent replay attacks.
Messages propagate via TTL‑based gossip with dynamic fanout (2–4 peers). Efficient and resilient.
Automatic background pings; unhealthy peers are removed. Healthy peers only list for relays.
Periodic peer discovery via bootstrap nodes and known peers. New peers are persisted automatically.
asyncio + SQLite connection pool. WAL mode and optimised pragmas for high concurrency.
Every NexaNode runs the same stack and communicates via JSON/TCP. Messages hop through the network until they reach the recipient.
/send with encrypted payload + signature
validated message in SQLite
propagate to healthy peers (exclude sender)
/receive – messages are deleted after fetch
All messages are ephemeral and expire after 7 days
Start your own NexaNode and join the network. All you need is Python 3.9+ and a shared network secret.
$ python node.py --host 0.0.0.0 --port 5555 \
--network-secret "your-secret-phrase" \
--bootstrap-nodes "node1.domain.id:5555,node2.domain.id:5555"
Used for authentication between nodes. Keep it private to your network.
Entry points to the network. They help you discover other peers.
SQLite file (node.db) stores messages, peers and nonces.