Secure P2P Remote Access

Remote access,
without the headaches

SSH-like shell access without port forwarding, VPNs, or third-party routing. Direct encrypted peer-to-peer connections with a single binary.

Get Started How It Works
$ curl -fsSL https://hop.keik.ai/install.sh | bash
macOS (Apple Silicon & Intel) · Linux (x86_64, ARM64, ARMv7)

Why hop?

Existing tools all have tradeoffs. hop was built to eliminate them.

End-to-End Encrypted

TLS 1.3 over QUIC. Your traffic is never decrypted by a relay or third-party service. Keys stay on your machines.

NAT Traversal Built In

Works behind ISP NAT, double NAT, and carrier-grade NAT. No port forwarding or router configuration needed.

Single Binary

One download. No runtime dependencies, no daemon required for basic use, no accounts to create. Just run it.

One-Time Invite Links

Share a link or token to grant access. Each invite is single-use and cryptographically verified. No shared passwords.

Remote Execution

Run commands without opening a shell. hop server -- cmd executes remotely and returns the output — perfect for scripts and automation.

AI Orchestration

Let AI agents manage your fleet. hop mcp exposes a sandboxed JavaScript runtime and skill library to tools like Claude Code—run commands, transfer files, and manage roles through natural language.

File Transfer Built In

Copy files with hop cp or sync directories with hop sync. No separate SCP/rsync needed—transfers use the same encrypted P2P connection.

Persistent Sessions

Your shell survives disconnects. If your connection drops, hop reconnects and resumes where you left off — no tmux needed.

Fleet Management

Manage dozens to thousands of machines with role-based access, tagging, and aggregate invites. Learn more →

Encrypted Secrets

Store API keys and OAuth tokens encrypted at rest. ChaCha20-Poly1305 with keys derived from your Ed25519 identity. Access from CLI, JS runtime, or MCP.

Built-in Automation

Schedule cron jobs, enable capabilities like health monitoring and email briefings. hop cap enable email-monitor runs daily AI-powered email triage.

API Integration

Call any HTTP API directly from JS scripts. hop.http() with bearer tokens, JSON bodies, and sandbox-aware networking. No curl needed.

Kernel-Level Sandboxing

Restrict peers to read-only, no-network, or scoped paths. OS-native enforcement via macOS Seatbelt and Linux Landlock. Use presets (monitor, audit, deploy) or custom policies. Clients can self-restrict for defense-in-depth.

How hop compares

No accounts, no port forwarding, no third-party routing.

hop
SSH / Tailscale / ngrok
Port forwarding
Not needed
SSH requires it
Account required
No
Tailscale, ngrok require accounts
Traffic routing
Direct P2P
ngrok routes through their servers
Setup
One curl command
VPN config, daemon install, signup
NAT traversal
Automatic (QUIC)
Tailscale (WireGuard), SSH (none)
File transfer
Built in (cp & sync)
Separate tool (scp/rsync over SSH)
Session persistence
Built-in (auto-reconnect)
Requires tmux/screen
AI integration
Built-in MCP server
None (external tools only)
Built-in automation
Cron + capabilities
External tools (crontab, Ansible)
Encrypted secrets
Built-in (AES-256)
Vault, external KMS
Remote management
hop myhost secrets/cap
SSH + separate tools
Kernel sandboxing
Built-in (Seatbelt / Landlock)
Manual config (SELinux, AppArmor)

How it works

Shell access and file transfer in a few commands.

Start hosting

Run hop host on the machine you want to access. It generates an identity and starts listening for connections.

Share an invite

Run hop invite to generate a one-time token. Send it to whoever needs access—it's single-use and time-limited.

Connect

The other person runs hop connect <token> and gets a secure shell. Future connections are just hop <name>.

Terminal
# On your server $ hop host Listening... Node ID: 5f4a8c... # Generate an invite $ hop invite Invite token: eyJ0eX... # On your laptop — first time, use the invite token $ hop connect eyJ0eX... Saved as known host: server # After that, just use the name $ hop server server $ _ # Run a command without opening a shell $ hop server -- ps aux USER PID %CPU COMMAND root 1 0.0 /sbin/init # Copy files to the server $ hop cp -r ./project server:~/project # Sync a directory (rsync-compatible) $ hop sync -i server:~/project/src ./src >f+++++++++ main.rs 4,512 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=1/2) >f.st...... lib.rs 1,203 100% 11.75kB/s 0:00:00 (xfr#2, to-chk=0/2) total size is 5,715 2 file(s) in 0.1s

Install

One command to download, verify, and install.

Quick Install (all platforms)

Install latest
$ curl -fsSL https://hop.keik.ai/install.sh | bash
Install specific version
$ curl -fsSL https://hop.keik.ai/install.sh | bash -s -- --version 0.4.4
Custom install directory
$ curl -fsSL https://hop.keik.ai/install.sh | bash -s -- --dir ~/.local/bin

Downloads the binary, verifies the SHA-256 checksum, and installs to /usr/local/bin. Works with curl or wget.

Supported Platforms

💻
macOS
Apple Silicon (arm64) & Intel (x86_64)
🐧
Linux
x86_64, ARM64 & ARMv7

Run as a System Daemon

One command to install hop as a persistent system service on macOS or Linux.

Always-On Server

The daemon installer detects your platform and sets up hop as a native system service that starts automatically at boot. Ideal for home servers, dev boxes, VPS instances, or any always-on machine.

  • Installs binary to /usr/local/bin/hop
  • Registers a native service (LaunchDaemon on macOS, systemd on Linux)
  • Starts hop host automatically at boot
  • Automatic restarts on crash
  • Works on macOS (Apple Silicon & Intel) and Linux (x86_64, ARM64, ARMv7)
$ curl -fsSL https://hop.keik.ai/install-daemon.sh | bash

Detects your platform, installs the binary, sets up the system service, and starts the daemon. Prompts for sudo.

Terminal
# The daemon is running — create an invite $ hop invite Invite token: eyJ0eX... # Connect from your laptop $ hop myserver myserver $ _

AI-Powered Fleet Management

hop mcp turns hop into an MCP server that AI coding tools can use to manage your infrastructure.

Model Context Protocol

Expose fleet management to AI agents through the standard MCP protocol. Claude Code, Cursor, and other compatible tools can orchestrate your infrastructure through natural language.

  • Sandboxed JS Runtime — execute JavaScript with full fleet bindings: remote exec, HTTP requests, secrets, metrics, and more
  • 90+ Built-in Skills — searchable library across 14 categories that agents use to discover fleet, security, monitoring, and deployment patterns
  • Claude Code, Cursor, etc. — standard MCP protocol, plug into any compatible AI tool
  • Safe by Design — memory limits, execution timeouts, no shell escape. Agents operate within defined boundaries
  • Sandbox Presets — restrict agents to read-only monitoring, auditing, or scoped deploys. Clients can self-restrict for defense-in-depth
Terminal
# Add hop as an MCP server in Claude Code $ hop mcp # AI agent queries available skills → hop_skills(query: "deploy to production hosts") # AI agent executes fleet operations → hop_exec(` const hosts = await hop.fleet.list("production"); for (const h of hosts) { await hop.exec("systemctl restart myapp", { host: h.name }); } `)

Managing a fleet of machines?

hop scales from a single machine to thousands. Define roles, tag hosts, and invite your team with one command. Same simplicity, any scale.

Fleet Management →

Automate your infrastructure with AI

Schedule cron jobs, monitor email, call external APIs — all from a single binary. Set up once, runs forever.

Automation & Orchestration →