Straight answers,
including the awkward ones

What WireHop does, what it does not do, where it runs, and what it costs. If something here reads like marketing rather than an answer, that is a bug.

Basics

What it is, and what it costs.

What is WireHop, in one sentence?

One binary, named hop, that lets you reach your own machines from anywhere and connect them into a private network, without an account, a coordination server, or port forwarding.

What does it cost?

Nothing. It is open source under MIT or Apache-2.0, and there is no hosted service to buy. There is no paid tier today, and nothing in the tool is gated behind one.

If there is no server, how do two machines find each other?

They exchange keys once, through an invite you carry across yourself. After that each machine tries to reach the other directly, punching through NAT (the address translation your router does). When a direct path cannot be made, an encrypted relay forwards packets it cannot read.

The relay sees that two machines are talking and roughly how much. It cannot see what they say. You can run your own with hop host --relay.

Is it really "no server", or is that marketing?

There is no coordination server: no account, no directory of your machines, nothing that has to be up for your network to work. Membership is a document your own machines replicate between themselves.

There are relays, which are pure packet forwarders for the cases where NAT defeats a direct connection. They hold no membership data and cannot decrypt traffic. If that distinction matters to you, run your own.

What happens to my network if this project disappears?

It keeps working. Your machines already hold their keys and their membership document, and nothing phones home for permission. You would stop getting updates, and the default relays would eventually go away, which matters only for machines that cannot connect directly. The source is permissively licensed, so a fork is always available.

Do I need to run a daemon?

Only on machines you want to reach. A laptop you connect from needs no daemon and no root: install and go.

The default install is client-only. Add --host to install the daemon.

Install and platforms

What runs where, and how to get it. The install page has the commands.

Which operating systems are supported?

macOS (Apple Silicon and Intel) and Linux (x86_64, arm64, armv7).

Windows is not supported natively. It works under WSL2, which is a Linux install. Native Windows would need a different network layer and is not on the roadmap.

Do I have to pipe curl into bash?

No. Read the script first (curl -fsSL https://wirehop.org/install.sh | less), or skip it: download the binary for your platform from the GitHub releases page along with its .sha256 and .sig, verify both, and put it on your PATH. The installer does exactly that.

macOS users can install the signed and notarized .pkg instead.

How do I know the binary I downloaded is the one you built?

Every release artifact ships a SHA-256 and an RSA signature. The installer checks both against a public key embedded in it, and refuses to install on a mismatch rather than warning and continuing.

Releases are built, signed and published by a GitHub Actions workflow you can read, so the artifacts trace back to a specific commit. macOS packages are additionally signed and notarized with Apple.

To check a download yourself, with nothing but curl and openssl:

curl -fsSLO https://github.com/Keikai-Inc/wirehop/releases/latest/download/hop-linux-x86_64
curl -fsSLO https://github.com/Keikai-Inc/wirehop/releases/latest/download/hop-linux-x86_64.sig
curl -fsSLO https://wirehop.org/wirehop-release.pub
openssl dgst -sha256 -verify wirehop-release.pub -signature hop-linux-x86_64.sig hop-linux-x86_64

It prints Verified OK or fails. The same key is embedded in install.sh, so you can compare the two.

Does it need root?

The client does not. Installing the host daemon does, because it runs at boot and can create a network device.

The daemon may listen as root, but shells, commands and file transfers all run as the ordinary user bound into the invite, and that user is fixed when the invite is made.

How do I update or uninstall?

Re-run the installer to update. To remove it, delete the binary, and on a host machine stop and remove the daemon service. Configuration lives in ~/.config/hop (user) or /Library/Application Support/hop and /etc/hop (system).

Can I install it with npm, brew or cargo?

npm: yes, npx -y @wirehop/wirehop. It downloads the same signed binary and verifies the checksum and signature before installing.

Homebrew and cargo install: not yet.

Linux compatibility

The binaries are statically linked, so your distribution's age does not matter. The only floor is the kernel, and it is 2.6.27, from 2008.

Tested on current Ubuntu, Debian, Alpine, Rocky, Fedora, openSUSE and Amazon Linux; runs on anything newer than RHEL 6 and on Raspberry Pi OS in both 32 and 64 bit. The full table, with kernel versions and what was actually tested.

Why is a kernel from 2008 the limit?

The async runtime needs eventfd2 and epoll_create1, which arrived in Linux 2.6.27. Everything newer that WireHop touches is optional and falls back if missing, including getrandom, io_uring, and the QUIC segmentation offload that speeds up bulk transfer.

This was measured by making each newer call fail the way an old kernel makes it fail, then checking the binary still starts. It has not been run on an actually-old kernel, so treat the very bottom of the range as reasoned rather than proven.

I am on RHEL 7 or something equally old. Anything I should know?

Current releases run there directly. Releases up to v0.9.33 were compressed with a tool whose unpacking step needed Linux 3.17, which RHEL 7 does not have, so those specific builds fail immediately on startup.

Every release also publishes an uncompressed build (hop-linux-<arch>-uncompressed) as insurance, and the installer picks it automatically on kernels below 3.17. You do not have to do anything.

Does it work in Docker, or on a VPS with a weird kernel?

Yes for reaching machines, running commands, and copying files. The private network needs a TUN device (/dev/net/tun), which containers only have if you grant it. Without one, WireHop logs that the network could not start and keeps everything else working rather than failing.

Which CPU architectures?

x86_64, arm64 (aarch64), and armv7 for 32-bit ARM such as older Raspberry Pi. There is no 32-bit x86, RISC-V, or MIPS build.

Networking

NAT, firewalls, and what happens when the network moves.

Do I need to open ports or configure my router?

No. Both machines make outbound connections and meet in the middle. Nothing needs to be reachable from the internet, and nothing needs a static address.

Will it work behind carrier-grade NAT, or on mobile data?

Yes. Direct connection is attempted first and often succeeds even there. When it cannot, traffic falls back to an encrypted relay automatically. You do not choose; it switches on its own.

What happens when I close my laptop or change networks?

Sessions survive it. The remote shell keeps running, and the connection re-establishes on the new network. Reconnection typically takes a second or two.

Can I reach devices that cannot run WireHop, like a printer or NAS?

Yes. One machine on that network can bridge it, so the rest of your machines reach those devices by address. You can also forward a single remote port to your laptop, the way ssh -L does.

Does it conflict with Tailscale or another VPN?

They coexist. WireHop checks whether the 100.64.0.0/10 address range is already in use and skips starting its own network rather than fighting over it. Reaching machines, running commands and copying files keep working either way.

Security

The short version. The security model has the long one, including what this does not protect you from.

What can someone do with a stolen invite?

Exactly what the invite allows, until it expires or is redeemed. Invites are single-use and time-limited (15 minutes by default), and carry the restrictions you set: which machines, which commands, which paths, read-only or not.

Treat an unredeemed invite like a password. Short expiries limit the window; they do not close it.

Is my traffic really end-to-end encrypted?

Yes, QUIC with TLS 1.3 between your machines. A relay forwards packets it cannot decrypt. Identity is an Ed25519 keypair generated on each machine that never leaves it.

Has it been audited?

No. There has been no third-party security audit. The source is public and the threat model is written down, which is not the same thing, and we would rather say so than imply otherwise.

How do I revoke a machine?

hop fleet prune, or an admin revoke. The revocation replicates to the rest of your machines. Each machine also keeps its own local audit log of connections, sessions and commands, readable with hop audit; there is no central collector.

Do you collect telemetry?

No. Nothing is reported anywhere. There is no analytics, no crash reporting, and no account to attach any of it to.

AI agents

The agent page covers the setup; these are the questions that follow it.

Why does an AI agent need this rather than a normal VPN?

Because every hosted alternative requires a human to create an account in a browser and paste a key. An agent stops there and asks you to finish. WireHop has no account step, so an agent can go from unreachable machines to a working network on its own.

What can an agent do if it is compromised?

Whatever its invite allows, and no more. It cannot raise its own access, cannot reach machines its role does not cover (forwarding is deny-by-default), and cannot act without leaving a record on each machine.

Give an agent the smallest invite that does the job. A monitoring agent wants read-only access with two allowed commands, not full membership.

Do you host anything for AI tools?

No. The tool server runs locally under your own identity. Nothing is hosted, and nothing takes custody of your credentials.

Alternatives

Where other tools are the better answer.

WireHop
SSH / Tailscale / ngrok
What has to be up for it to work
Nothing of ours. A relay only when NAT blocks a direct path, and you can run your own
Tailscale needs its coordinator; ngrok its servers
Account required
No
Tailscale and ngrok require accounts
Setup
One command, under a minute
VPN config, daemon, signup
Works through NAT
Automatically, anywhere
SSH needs port-forwarding
Private network
Built in
Tailscale only (separate tool)
Usable by AI agents
Yes: one skill, works today
None
Third-party security audit
Not yet. The threat model and a standing self-audit are published
Tailscale: yes, published
Should I use this instead of Tailscale?

Not always. Tailscale is better if you need Windows, iOS or Android clients, a web console, single sign-on, centralized audit, or a published security audit.

WireHop is better if you want an agent to set it up alone, want no account and no coordination server, or want the shell, file sync and fleet commands in the same tool as the network. The full comparison is honest in both directions.

SSH already works for me. Why change?

Then do not. SSH is everywhere and battle-tested. WireHop wins when the machine is not reachable, when you want to act on many machines at once, or when you want an agent operating them. Not otherwise.

Can I use it to share access with customers, or expose a service publicly?

No, and it is not built for either. There is no multi-tenant model and no per-customer isolation, and it does not publish anything to the public internet. Port forwarding brings a remote port to you, like ssh -L. For public exposure use a tunnel service; for customer access use something designed for it.

The project

Who makes it and how it is built.

Who is behind it, and how is it funded?

Keikai Inc. It is open source under MIT or Apache-2.0, with no paid tier and no outside funding attached to it. If that changes, the license on what is already published cannot be taken back.

Is it production ready?

It is pre-1.0 and used daily by its authors. Releases are gated on automated tests that yank networks, restart hosts and measure how long recovery takes, and every Linux build must start on old distributions before it can ship.

Being straight about it: there has been no third-party audit, the version number is below 1.0 for a reason, and the surface is large. Judge it accordingly.

How do I report a bug or a vulnerability?

Bugs: GitHub issues. Vulnerabilities: private security advisories on the repository, not a public issue. We aim to acknowledge within 72 hours.

Can I contribute?

Yes. The repository has a contributing guide, and CI runs on pull requests from forks without needing any secret, so your build goes green like anyone else's.