Skip to content

n33levo/rift

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ Rift

AirDrop for Localhost. Pairing-grade P2P tunneling for ports + config.
Bring a teammate's service to your localhostnot a public URL.

Rust License Built with libp2p


Rift TUI

Highlights

  • Low-latency QUIC tunnel (libp2p)
  • 🔒 End-to-end encrypted by default (Noise + ChaCha20-Poly1305)
  • 🧩 Local-to-local port mapping (their localhostyour localhost)
  • 🧪 EnvVault to sync selected env/config
  • 🧭 P2P-first discovery + NAT traversal (where possible)

The Problem

Pairing on real systems is always the same mess:

  • "Push to staging so I can see it" (slow)
  • "Share your screen" (pain)
  • "Paste your .env in Slack" (please don't)

You don't want a public URL — you want your teammate's service to behave like it's running locally.


The Solution

Rift maps their localhost into yours.

Your machine                       Teammate's machine
localhost:3000  ◄── E2E-encrypted ─►  localhost:3000

No public endpoints. No deploy. No ceremony.
Just "connect" → debug immediately.


🔒 Security & Trust (Read This First)

  • Explicit approval: every inbound session requires a host Y/N prompt.
  • 🔐 Encrypted by default: tunnel traffic is wrapped in Noise over QUIC (ChaCha20-Poly1305).
  • 🕳️ P2P-first: data flows peer-to-peer when possible; if relays are used for connectivity, payloads remain end-to-end encrypted.
  • 🧾 Secrets are opt-in: config sharing is explicit (you choose what to send). Rift never silently uploads secrets anywhere.

Threat model: built for pairing/debugging with teammates you trust — not for anonymous public access.

→ Full security details


Install

brew install n33levo/rift/rift
Other installation methods

From source:

git clone https://github.com/n33levo/rift
cd rift && cargo build --release

Quickstart

# On the machine running the service:
rift share 3000

# On your machine:
rift connect rift://12D3KooW.../3000

Now their service is reachable on your http://localhost:3000.

Optional: share just enough config (EnvVault)

# Host
rift share 3000 --secrets .env.rift

# Client
rift connect rift://.../3000 --request-secrets

Stop doing "set these 47 env vars" archaeology.

→ Full CLI reference


Use Cases

  • 🔧 Backend ↔ Frontend pairing (no staging deploy)
  • 🗄️ Databases on localhost (Postgres/Redis/Mongo)
  • 🧠 GPU inference as localhost (model server on a GPU box → your laptop)
  • 📈 Dashboards & demos (Streamlit/Gradio) without hosting
  • 🔭 Observability ports (TensorBoard, metrics UIs)
  • 🧰 Internal tooling behind NAT

👉 More: docs/USE_CASES.md


How It Works

Discovery → Encrypted QUIC session → Host approval → TCP bridge (local ↔ local)

Built on libp2p:

  • mDNS discovery on LAN
  • QUIC transport + Noise encryption
  • NAT traversal (DCUtR) where possible

→ Architecture deep dive


Not For

Rift is not a public hosting platform.

If you need a public URL for customers/PMs, use ngrok / Cloudflare Tunnel / Vercel previews.
Use Rift when you want pairing-grade, local-to-local debugging with teammates.


Docs


Contributing

CONTRIBUTING.md


MIT License

Built with ⚡ by developers tired of deploying to staging

⭐ Give it a star if you've ever said "works on my machine" ⭐

About

Rift: Pairing-Grade Localhost Tunneling. brew install n33levo/rift/rift

Resources

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published