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.

public proof

Deployed, verified, and open to inspect

Monad Testnet · chain 10143

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.