P2P · Encrypted · Cross-Platform

Copy files across machines

KopioRapido's bridge connects machines behind NAT and firewalls using encrypted peer-to-peer connections. Browse, copy, sync, and mirror files between any two machines—no shared network required.

How it works

Three machines, one connection protocol

1
🚀

Initialize on each machine

Install the p2p plugin, then run kp p2p init on every machine. Each gets a unique identity and announces it on the public DHT — with a hosted relay fallback for the strictest NATs.

kp plugin add p2p && kp p2p init work-pc
2
🔗

Connect by identity

From Machine A, connect to Machine B using its short key. The connection is encrypted end-to-end via Noise protocol.

kp p2p connect kp:5a3x8q7f work-pc
3
📂

Use alias paths anywhere

All copy, sync, mirror, move, and list commands work with remote aliases: mylaptop:/path

kp copy work-pc:/Documents ~/backup/docs

Remote features

Full file operations across any distance

🔒

Approve-on-Connect

Every inbound connection starts in a pending state. A human must approve before any file operations are allowed. No surprises, no unauthorized access.

🔑

Optional Passphrase

Add a scrypt-hashed passphrase as a second factor. Wrong passphrase = connection rejected. Saved passphrases survive restarts.

📁

Folder Sandboxing

Limit each peer to specific folders using --path during approval. Blast radius is bounded from the start.

🔄

Delta Sync Over Wire

Mtime is preserved across the wire. Delta sync skips unchanged files—second sync copies nothing, third sync copies only changes.

🌐

Two-Hop Transfers

Copy from one remote machine to another via a hub bridge. The relay streams files without buffering—no full-file caching.

📈

Live Progress

Per-file status text during remote operations. See exactly which file is being copied, deleted, or synced—no silent waiting.

🛡️

Blocklist & Revocation

Deny a peer permanently (blocklist + disconnect). Revoke authorization to re-enable pending status on next dial. Full control.

♻️

Auto-Connect & Retry

Connections survive restarts. Stale or failed connections auto-reconnect. Transient errors (timeout, reset) trigger retry with full recovery.

All remote commands

Everything you need to manage cross-machine file operations

Setup & Status
terminal
kp plugin add p2p              # one-time install
kp p2p init work-pc             # identity + DHT announce
kp p2p autostart on             # login auto-start
kp p2p diagnostics              # uptime, identity, connections
kp p2p status                   # active, pending, passphrase
Connect & Manage
terminal
kp p2p connect kp:5a3x8q7f work-pc
KP_P2P_PASSPHRASE=mykey kp p2p connect kp:5a3x8q7f work-pc
kp p2p disconnect work-pc
kp p2p list                       # saved connections
kp p2p remove work-pc             # forget a peer
Authorization
terminal
kp p2p pending                  # awaiting-approval list
kp p2p allow kp:key pc
kp p2p allow kp:key pc /docs /backup   # folder limits
kp p2p deny kp:key                 # block + disconnect
kp p2p revoke kp:key             # remove auth only
kp p2p permissions              # show allowed paths
Remote File Ops
terminal
kp list work-pc:/Users
kp p2p mkdir work-pc:/new-dir
kp p2p delete work-pc:/old
kp copy work-pc:/src ~/local/dst
kp move mylaptop:/data work-pc:/backup
kp sync work-pc:/docs ~/docs      # Delta sync
kp mirror work-pc:/media ~/media
Two-Hop Relay
terminal
# Copy from one remote to another via hub
kp copy work-pc:/files office-pc:/backup

# Two-hop sync (both directions)
kp bidirectional-sync work-pc:/data office-pc:/data

# Mirror remote to remote
kp mirror work-pc:/assets office-pc:/cdn
Passphrase Management
terminal
KP_P2P_PASSPHRASE=secret kp p2p passphrase set   # set on this bridge
kp p2p passphrase clear                       # remove passphrase
kp p2p passphrase status          # show enabled/disabled

# Connect with passphrase
kp p2p connect kp:key \
  --alias peer --passphrase secret

Architecture

Small bridge daemon on each machine, P2P encrypted connection between them

🖥️ Machine A (Linux)
CLI (kp)Local HTTP API
Node.js Bridgelocalhost:49999
Noise protocol (Curve25519)
HyperDHT discovery & NAT traversal
🖥️ Machine B (Windows)
Node.js Bridgelocalhost:49999
CLI (kp)Local HTTP API

Discovery

HyperDHT public DHT with topic-based announcement

Encryption

Noise protocol (Curve25519 + ChaCha20-Poly1305)

Protocol

Protomux multiplexed channels (12 defined channels)

Key Formats

Base64 (32 bytes), kp: short keys (z32), hs:// connection URLs

Security model

Layered defense: key identity → passphrase → human approval → folder limits

1

Public Key Identity

Each bridge presents a Curve25519 public key during the DHT handshake. This is unforgeable—the peer's node ID on the DHT is their public key.

2

E2E Encryption

All data encrypted via Noise protocol. The DHT connection itself is encrypted end-to-end. No middlebox can read or modify traffic.

3

Passphrase (Optional Second Factor)

Scrypt-hashed passphrase verified during HELLO handshake. Wrong passphrase = immediate connection destruction. Stored in bridge.json.

4

Human Approval (Pending State)

Unknown inbound connections are held pending. No file operations until a human approves via kp p2p allow.

5

Folder Sandboxing

Per-peer folder limits restrict access to specific directories. The bridge enforces these on every file operation—no bypass possible.

Remote connections FAQ

Common questions about cross-machine operations

No. KopioRapido uses HyperDHT for peer discovery and NAT traversal. Machines behind different routers, firewalls, or even on different continents can connect. When direct NAT traversal isn't possible, kp automatically falls back to alternative routed transports — the connection still works end-to-end.

Yes. All data is encrypted end-to-end using the Noise protocol with Curve25519 key exchange and ChaCha20-Poly1305 encryption. This is built into the HyperDHT layer—no additional setup required.

You'll be prompted to enter the passphrase. If it's wrong, the connection is rejected immediately. If you saved the passphrase (via KP_P2P_PASSPHRASE during kp p2p connect), it's used automatically on subsequent connections.

Yes. When approving a peer with kp p2p allow, you can pass allowed folders as arguments. The peer can only browse and transfer files within those directories. This is enforced by the bridge on every operation.

When you copy or sync between two remote machines (not involving your local machine), KopioRapido streams the data through your local bridge as a relay. Your bridge downloads from the source peer and uploads to the destination peer. Files stream through—no full-file buffering.

No. Every machine running remote operations needs the Node.js bridge daemon running locally. The bridge handles all P2P communication, file operations, and authorization. The CLI talks to its local bridge via HTTP.

Yes, optionally. During kp p2p init (or kp p2p autostart on), you can enable auto-start. On Windows this uses an HKCU Run key entry with a hidden VBScript; on Linux a systemd user unit. The bridge starts silently in the background.

KopioRapido has built-in retry resilience. If a connection fails due to timeout, reset, or network issues, the bridge automatically reconnects and retries the transfer. You don't need to restart or resume manually.

Get KopioRapido

Download for your platform. Remote connections work on Windows, macOS, and Linux.

Download KopioRapido