EphemNet reverse-tunnel agent

Make any host reachable, even with no public IP

A single static binary. Run it on a host behind NAT — home network, anywhere with no port-forwarding at all — to make it reachable through EphemNet's relay mode. No install process, no root required.

What it does

An outbound-only tunnel, nothing to configure on your router

ephemnet-agent dials out to the relay over TLS — it looks like a normal outbound HTTPS connection, so it passes through home firewalls and NAT without any port-forwarding or router configuration. Once registered, every inbound connection for your domain gets multiplexed over that one connection and forwarded to a local port you choose.

Never decrypted in transit

The relay routes by TLS SNI and forwards the still-encrypted bytes straight through. TLS terminates at your own server, not at the relay.

Auto-reconnect

If the connection drops for any reason, the agent retries automatically — no manual restart needed for a transient network blip.

Get it

Download

One command downloads, verifies, and installs the right build for your platform — re-run it any time to update.

Linux / macOS

curl -fsSL https://eph.network/agent/install.sh | bash

Windows (PowerShell)

iwr -useb https://eph.network/agent/install.ps1 | iex

See install.sh / install.ps1 for every override (pinning a version, install dir, a dev-site base URL). The Windows script asks its questions (where to install, whether to start at login) with native dialogs instead of a terminal prompt, and sets up a per-user Startup entry rather than a Windows service — no admin elevation needed either way.

Android

EphemNet Admin manages your agents and domains from your phone — same no-tracking, one-permission, open-source app described on its own page. Not on the Play Store yet; a direct APK download in the meantime.

ephemnet-agent binaries, every platform

PlatformDownload
Linux (amd64)release builds coming soon
Linux (arm64)release builds coming soon
Linux (32-bit)release builds coming soon
macOS (Apple Silicon)release builds coming soon
macOS (Intel)release builds coming soon
Windows (amd64)release builds coming soon
Windows (32-bit)release builds coming soon
Quickstart

Point it at your domain

Once you have a domain in relay mode and its token:

ephemnet-agent \
  -relay-addr mera.network:443 \
  -domain yourhost.example.com \
  -token <your domain's relay token> \
  -local-addr 127.0.0.1:443

Add -status-addr 127.0.0.1:8093 to also run the local admin page described below — see ephemnet-agent -h for every flag, or just run the installer above, which asks for this and sets it up for you.

Local admin page

Accessing the admin page

Every running ephemnet-agent can serve a small, read-only-by-default status page over plain HTTP, on whatever address you pass to -status-addr — nothing is exposed unless you set this flag. The installer above asks for one and defaults to 127.0.0.1:8093, and (on Linux and macOS) offers to create a real desktop shortcut straight to it.

Once it's running, reach it one of these ways:

What's on the page:

Set -status-auth-token <secret> (HTTP Basic Auth, any username, this as the password) once this page might be reachable by more than one trusted operator — it can mutate routes, not just read status. Defense in depth on top of keeping -status-addr loopback-only, not a replacement for it.

Troubleshooting

Common issues

The admin page shortcut doesn't open anything / "connection refused." The agent process itself isn't running, or wasn't started with -status-addr set. If you set it up as a boot-start service, check it's actually active (systemctl --user status ephemnet-agent on Linux, launchctl list | grep ephemnet-agent on macOS) — the shortcut only opens a browser tab, it never starts the agent itself.

My domain isn't reachable even though the agent shows "connected." Check -local-addr actually points at something listening on this machine, and that the domain's own token matches what the relay has on file for it — the status page's per-route view shows exactly which route is failing and why.

Traffic is slow / the status page shows "throttled." The domain is over its relay allowance and within its 7-day grace window — every connection still gets through, just rate-limited, until a top-up or renewal lifts it (or the window ends and it's refused outright). Top up or renew via the owner portal.

The boot-start service won't survive a reboot (Linux, no root). A per-user systemctl --user service needs loginctl enable-linger <you> — the installer attempts this automatically and tells you if it couldn't (needs a password it can't supply non-interactively).

Anything else: re-run the installer (safe any time, it only ever reinstalls the binary and re-asks setup questions — it never touches an existing config file), or inspect ephemnet-agent -h for the full flag reference.