Secure transport. Flexible exits.
TCP and UDP relay over TLS and QUIC.
Get connected · Ecosystem · Architecture · Observability · Documentation · Wire protocol
Nowhere gives TCP and UDP traffic a secure path to the exit you choose. Run it close to your applications, on a public relay, or at a remote exit. One Rust binary provides Portal, Vector and Egress.
| Capability | What you get |
|---|---|
| Encrypted transport | TLS or QUIC for TCP and UDP traffic |
| Exit placement | Direct access, a SOCKS5 upstream or a remote Egress |
| Standard ingress | Connect applications through SOCKS5 |
| Optional Morph | Shared-key masking of the transport wire image |
| Operational visibility | Local status and structured telemetry |
Start with a stable Rust toolchain and a reachable Portal host.
cargo build --release --lockedUse the generated value for <generated-key> on both peers:
./target/release/nowhere generate-keyListen on port 2000; allow both TCP and UDP through the firewall:
./target/release/nowhere "portal://<generated-key>@*:2000"Compare this fingerprint with Portal's trusted startup log, then set pin=<sha256>:
./target/release/nowhere fingerprint "nowhere://<generated-key>@portal.example:2000?morph=1"Run Vector, then point applications at SOCKS5 127.0.0.1:1080:
./target/release/nowhere \
"vector://<generated-key>@portal.example:2000?pin=<sha256>&in=127.0.0.1:1080"Run on either host to inspect its local instances:
./target/release/nowhere statusConnect, deploy and operate with focused tools. Interfaces and integration requirements are documented in the ecosystem guide.
|
CLIENT Anywhere Native connections on Apple platforms. App Store |
DEPLOY nowhere-sh Linux deployment and service management. Quick start |
|
CONTROL OpenCtrl Process control through REST and SSE. API reference |
OPERATE NowhereDash Fleet operations from a web dashboard. Quick start |
Vector connects applications to Portal. Portal forwards directly, through SOCKS5, or through an Egress that connects back to it. Arrows show connection establishment; traffic travels in both directions.
+----------+ TLS / QUIC +----------+ Direct / SOCKS5 +----------+
| Vector |---------------->| Portal |------------------>| Target |
+----------+ +----------+ +----------+
^
| QUIC
+----------+ TCP / UDP +----------+
| Egress |------------------>| Target |
+----------+ +----------+
Configure each role with a URL. Portal declares one or two listener carriers; Vector selects one carrier and Egress selects QUIC. Choose ports and address families through the endpoint path. See Configuration.
Ingress and exit can live on different hosts. Egress opens an outbound connection, so its host needs no inbound relay port. See Architecture for the connection model.
Connection-bound authentication and explicit Flow setup give every transfer a clear beginning and lifetime. The wire specification describes the complete contract for independent implementations.
Morph is enabled by default (morph=1) for shared-key masking below TLS and QUIC.
Use morph=0 to disable it. Certificate verification
and transport security still apply. See Morph.
Place target access where it belongs. With out=egress, one registered exit serves
Portal's clients over QUIC. Follow the Egress guide to set it up.
Read local instance identity and traffic statistics with nowhere status. Telemetry runs inside
each service, even without a terminal or log output. Build monitoring integrations
against the public Telemetry interface.
Vector and Egress verify system CA trust and the server name, or an exact certificate pin. Serve a CA-issued certificate for hostname-based trust:
nowhere "portal://<generated-key>@*:2000?tls=2&crt=/etc/nowhere/cert.pem&key=/etc/nowhere/key.pem"
nowhere "vector://<generated-key>@portal.example:2000?in=127.0.0.1:1080"| Guide | Focus |
|---|---|
| Quick start | First connection |
| Ecosystem | Clients, deployment and control |
| Configuration | URLs, defaults and runtime settings |
| Egress | Remote exits and registration |
| Wire protocol | Authentication, framing and Morph |
| Security | Trust and resource boundaries |
| Operations | Service lifecycle and diagnostics |
| Platforms | Native targets and containers |
| Telemetry | Discovery, schemas and messages |
Explore the complete documentation index.
Validate locally with the standard Rust checks:
cargo fmt --all -- --check
cargo test --all-targets --locked
cargo clippy --all-targets --locked -- -D warnings
cargo build --release --lockedCI runs on Linux, macOS and Windows. The testing guide covers native checks, Linux containers and performance measurements; Platforms provides build and deployment details.
Licensed under the GNU General Public License v3.0.
© 2026 NodePassProject. All rights reserved.
