Comunicazione P2P deterministica, cifrata e serverless.
Ouroboros unisce due prodotti in una sola piattaforma:
- Handshake: sessioni punto-punto cifrate con fallback di rete aggressivo.
- EtherSync: spazi condivisi derivati da passphrase per messaggi e file chunked.
Repository: https://github.com/OmarPrampolini/Ouroboros
Licenza: MIT
L'obiettivo e semplice: creare comunicazione privata senza dipendere da discovery centralizzata o da un backend cloud obbligatorio.
In pratica:
- se due peer sono online insieme, Handshake ottimizza il collegamento live;
- se i peer hanno presenza intermittente, EtherSync offre uno spazio gossip cifrato condiviso.
- Derivazione deterministica da passphrase (tag/parametri/rendezvous).
- API locale autenticata con token in RAM.
- Flussi QR (Offer / Hybrid / Phrase) funzionanti.
- Cascata trasporti con fallback (LAN/WAN/assist/Tor e casi UDP ostili).
- GUI Tauri con modalita guidate, separate per Handshake ed EtherSync.
- Lifecycle daemon robusto in GUI:
- start/stop,
- reconnect a daemon gia attivo,
- reclaim porta quando occupata,
- log live RAM per debugging.
- EtherSync space con publish messaggi e file chunked.
- Board UI EtherSync migliorata (messages + event timeline).
- Replay backlog su join EtherSync: quando rientri nello stesso space con la stessa passphrase, il nodo rigioca la finestra recente disponibile localmente e pubblica eventi
space_replay_started/space_replay_completed.
- Persistenza storica distribuita "sempre e comunque" non e ancora assoluta.
- Se nessun peer mantiene i dati online/in storage, lo storico non e recuperabile.
All'apertura GUI trovi due ingressi distinti:
-
A. Handshake Matrix
- sessione live 1:1,
- pairing via passphrase o QR,
- ottimizzato per connessione immediata e fallback.
-
B. EtherSync Gold
- spazio condiviso cifrato derivato da passphrase,
- publish/subscribe eventi,
- file transfer chunked,
- UX dedicata con board operativa.
- Set passphrase -> derivazione deterministica.
- Connessione via
/v1/connectcon modalita classica, offer, hybrid, target, phrase, guaranteed. - Stato runtime esposto da endpoint diagnostici.
space_idderivato deterministicamente da passphrase.- Pubblicazione su gossip/slot.
- Join space con subscription stream eventi.
- Replay locale su join per backlog recente.
EtherSync e un sistema gossip cifrato, non un DB centrale.
Questo implica:
- stessa passphrase -> stesso spazio logico;
- il recupero storico dipende dai nodi che hanno visto/mantenuto i messaggi;
- oggi il replay al join copre la finestra recente presente nel nodo locale;
- per retention forte a lungo termine serve almeno un nodo sempre acceso o storage persistente esplicito.
Tradotto in modo operativo: un Raspberry acceso con il tuo nodo puo fungere da seed stabile dello spazio.
git clone https://github.com/OmarPrampolini/Ouroboros.git
cd Ouroboros
cargo build --release
cargo run --releaseDefault API bind: 127.0.0.1:8731
cargo build --release
# Windows:
# copy target\release\handshacke.exe ui\src-tauri\bin\handshacke.exe
# Linux/macOS:
# cp target/release/handshacke ui/src-tauri/bin/handshacke
cd ui
npm install
npm run devHandshake:
- Classic
- Offer QR
- Hybrid QR
- Target direct
- Phrase (Tor)
- Guaranteed relay
EtherSync:
- Start node
- Join space
- Publish messages/files
- Monitor board + timeline + replay events
Connessione e sessione:
POST /v1/connectGET /v1/statusPOST /v1/disconnectPOST /v1/offerPOST /v1/qr/hybridPOST /v1/phrase/openPOST /v1/phrase/joinGET /v1/phrase/statusPOST /v1/phrase/closeGET /v1/circuit
Messaggistica:
POST /v1/sendGET /v1/recv
EtherSync:
POST /v1/ethersync/startPOST /v1/ethersync/stopGET /v1/ethersync/statusPOST /v1/ethersync/peers/addPOST /v1/ethersync/spaces/joinPOST /v1/ethersync/spaces/publishPOST /v1/ethersync/files/publishGET /v1/ethersync/events
Diagnostica:
GET /v1/metricsGET /v1/capabilitiesGET /v1/connect/fallbacksGET /v1/network/nat-metrics
- Cifratura payload con primitive moderne.
- Token API richiesto lato GUI/daemon.
- Limiti anti-abuso e controlli replay/time window.
- Nessuna persistenza forzata delle chiavi applicative in chiaro.
Riferimenti:
- Completare replay distribuito piu profondo (oltre finestra locale).
- Migliorare retention multi-peer e osservabilita storage.
- Raffinare UX guided per tutti i flow edge-case.
- Consolidare benchmark comparativi per claim SOTA difendibile.
Ouroboros non vuole essere "solo un'altra chat": vuole essere un layer di comunicazione privato, deterministico e controllabile end-to-end, con UX reale da prodotto.