NNYX / shadow engine

shadow engine · private transfers

Send files privately, straight to the other device

Files are encrypted in your browser and transferred directly between devices whenever possible — with an encrypted fallback when a direct connection can't be established. No accounts, no cloud upload, no servers reading your metadata.

new Nyx Market — anonymous encrypted file offers with MON escrow
How privacy works

Nyx uses Monad's 400ms blocks as a zero-trust signaling broker: channel setup, key commitments and the WebRTC handshake happen on-chain in under a second, while the file itself is sliced into 16KB chunks encrypted with AES-256-GCM under a key derived from an X25519 ECDH between sender and receiver. The chain never sees a byte — only metadata it needs to introduce two devices to each other.

No plaintext upload

Your file is encrypted the moment you choose it, and the key never leaves your devices. Relays and the network only ever see ciphertext.

AES-256-GCM · X25519 ECDH

Direct when possible, relay when not

Transfers stream straight from device to device at full speed. If the direct route is blocked, an encrypted relay takes over automatically — you don't have to do anything.

WebRTC DataChannel · encrypted IPFS fallback

No company in the middle

Instead of a server owned by anyone, coordination runs on Monad — a fast public blockchain. There is no account to create and no upload to a cloud.

on-chain signaling · sub-second confirmation

System architecture (technical)
                    ┌──────────────────────────────┐
                    │      Monad Blockchain        │
                    │  - Channel Registry          │
                    │  - SDP Offer / Answer Broker │
                    │  - Fallback CIDs             │
                    └──────────────┬───────────────┘
                                   │  control plane (< 500ms)
            ┌──────────────────────┴──────────────────────┐
            ▼                                             ▼
  ┌───────────────────┐                         ┌───────────────────┐
  │  Sender Device A  │◄═══════════════════════►│  Receiver Device B │
  │  AES-GCM 16KB     │   data plane (WebRTC)   │  stream reassemble│
  └─────────┬─────────┘                         └─────────┬─────────┘
            │        NAT traversal failed?               │
            └──────► ┌─────────────────────────┐ ◄───────┘
                     │ encrypted IPFS blobs     │
                     │ (CID posted to Monad)    │
                     └─────────────────────────┘
Built for Monad — technical pitch
  • Zero-server signaling hub — no Web2 WebSocket server; EVM execution is the communication broker, viable because Monad confirms in ~400ms.
  • Uncontended storage layout — mapping(bytes32 => Channel) keyed by random channel ids keeps concurrent channels on disjoint slots, feeding Monad's parallel executor without state conflicts.
  • Resilient dual-mode P2P — direct WebRTC streams with encrypted on-chain fallback handles, solving the classic Web3 file-transfer reliability problem.