Skip to content
minipaw
Esc
↑↓navigate↵open⌘Jpreview
On this page

Introduction

minipaw pipes stdin/stdout between two machines, peer to peer. Like netcat, but it gets through NATs, needs no accounts, and every byte is end-to-end encrypted.

One side listens and prints a ticket; the other pastes it. Whatever goes into one side comes out of the other.

$ minipaw                                  # machine A
# 🐾 listening; connect with:
minipaw mpAQDEiiVb-s5zPPFvR0SjX0lVJgAkCAESINgMwzfDtX-D_vKZ0slyfVb4K-lw-ijkyHNLfPt1UkM2

$ echo hello | minipaw mpAQDEiiVb-s5zPPF…  # machine B
  • Gets through NATs. Both sides meet through a relay, then hole punching upgrades the connection to a direct path when the networks allow.
  • No accounts. The ticket is the whole address. There’s nothing to sign up for and no control plane.
  • End-to-end encrypted. The relay only ever sees ciphertext, and both sides are authenticated by their peer IDs.

minipaw is an alternative to tailcat built on minip2p, a small libp2p implementation in Rust. The networking is also a Rust library you can embed.

Was this page helpful?