Build from source
ezbuild.sh prepares the checksum-pinned patched OpenSSL and
nghttp2 and builds Release binaries into build/bin. It
leaves the separate BaseFWX checkout alone.
Reach the internet through a server you control. YUME carries TCP, UDP
and IP packets inside an encrypted connection shaped like Chrome
visiting a website. Run the yume client and
yumed server, or embed the same engine through its C library.
Yume (夢) means dream in Japanese. The dream behind it is internet freedom for everyone. Security comes first, then stealth, then usable speed.
balanced preset kept about 95 % of plain TCP speed in emulator runs.
Application data is sealed by YTP/1, then wrapped in WebSocket, HTTP/2 and TLS. The opening follows a captured Chrome visit. Admission, authentication and service policy determine which traffic can pass.
yumed opens only what its policy allows.
src/runtime/native_client_runtime.cppsrc/providers/h2_web_front_door.cppsrc/providers/ytp1_h2_admission.cppsrc/engine/session_engine.cppsrc/providers/openssl_security_provider.cppsrc/runtime/native_credentials.cppsrc/runtime/native_egress_policy.cppsrc/providers/cover_site.cppsrc/engine/session_engine.cppsrc/ytp/protocol.hppsrc/providers/openssl_security_provider.cppsrc/engine/session_engine.cppsrc/providers/h2_duplex_carrier.cppsrc/stealth/websocket_codec.cppsrc/stealth/h2_carrier.cppsrc/providers/tls13_secure_channel.cppsrc/stealth/tls_client_profile.cppsrc/providers/asio_tcp_byte_channel_provider.cppyume takes traffic from SOCKS5 (TCP and UDP), local forwards or a managed Linux TUN device. yumed serves the cover site and the tunnel on one port, and opens only the destinations its policy allows.
The opt-in libyume runs the same endpoint inside another program: authenticated named streams, packet channels, and routed TCP and UDP.
TCP connections can leave through two or three servers in one operator's cluster, with separate protection on every hop.
yumed hands a service's streams to a module program over a private UNIX socket. Chat, file and codec modules are planned on libraries that already exist.
The implementation status lists what each part is tested with.
YUME builds from source on Linux x86-64. Add --tests to build
the test executables.
ezbuild.sh prepares the checksum-pinned patched OpenSSL and
nghttp2 and builds Release binaries into build/bin. It
leaves the separate BaseFWX checkout alone.
Binary releases are published on GitHub with checksums and a manifest. Until the first one, build from source.
yume-amd64-linux.tar.xz: client bundle with yume, yume-setup, yume-doctor, licensing documents, the quick start, and manifest.jsonyumed-amd64-linux: daemon executableDebian metadata builds the native client and daemon packages. The service stays disabled until an operator installs and validates a kit.
yume: client, setup and doctor tools, manuals, and examplesyume-daemon: server, bootstrap configuration, locked service account, and hardened systemd unit
The Linux desktop GUI imports kits and starts, stops and watches
clients through their control sockets. Build it with
-DYUME_BUILD_GUI=ON. The Android client lives in its own
repository and runs native YTP/1 through the C library's device bridge.
Programs that embed the C library build against the same source tree,
and its interface can still change between development versions.
Authentication, admission, and authorization are separate checks, and each one fails closed.
| Layer | YTP/1 |
|---|---|
| Client identity | A composite Ed25519 + ML-DSA-87 identity per client, and explicit trust in the server's composite identity. Both signatures must verify. |
| Key establishment | ML-KEM-1024 + X25519 + a distinct 32-byte access PSK per client identity, with roles, identities, transcript, capabilities, parameters, and the TLS exporter bound into the key schedule. |
| Record layer | One-use directional AES-256-GCM keys. The default epoch allows 1 MiB or 512 records, with a 500 ms send lifetime. Peers can agree on a larger epoch. Rotation starts halfway to a limit. Data waits if that limit is reached before confirmation. Streams and the connection have credit and bounded allocations. |
| Policy surface | No security modes and no suite negotiation. Named service capabilities are authenticated, and every OPEN is authorized and bounded on its own. |
| Carrier | Persistent TLS 1.3 + HTTP/2 + WebSocket on one connection, shaped by one immutable captured browser profile. A default-off capability in the pinned OpenSSL reproduces the profile's ClientHello structure. |
| Admission and cover | An exporter-bound, replay-protected HMAC proof promotes one HTTP/2 stream to a carrier. Requests that fail admission stay in cover handling: GET and HEAD serve static routes, other methods get a fixed 405. TLS and resource refusals are described in the stealth reference. |
yumed ends the tunnel, so it knows which client connected
and where its traffic goes. HTTPS inside the tunnel keeps page content
between the app and the site, as it does on any network. The
threat model
shows what each party can see, and the
stealth model covers
the browser profile and the captures behind it.
The quick start walks through these steps. Credentials are owner-only files, and a client bundle must move to its machine through a trusted channel.
Clone the tree and run ezbuild.sh.
yume-setup writes a server and client kit: identities, access PSK, admission key, TLS material, configuration, and a cover site.
yumed serves the cover site and the authenticated tunnel on one listener.
The client offers SOCKS5, local forwards, or a managed Linux TUN.
git clone https://github.com/FixCraft-Inc/yume.git
cd yume
./ezbuild.sh
./build/bin/yume-setup init \
--host yume.example.com --port 8443 \
--output ~/yume-kit --client-name laptop
./build/bin/yumed --config ~/yume-kit/server/yumed.json --validate
./build/bin/yumed --config ~/yume-kit/server/yumed.json
./build/bin/yume --config ~/yume-kit/client/yume.json
curl --socks5-hostname 127.0.0.1:1080 https://example.com/
Before you open a server to the public, give it your own cover site and a certificate for its domain. The operations guide lists what to publish to its users.
Port 443 needs CAP_NET_BIND_SERVICE, which the packaged
service grants and nothing more. Cloudflare in HTTP mode terminates TLS
and breaks YUME. Use Spectrum or another TCP passthrough if you front the
daemon with it.
The release workflow requires SHA-256 checksums and detached GPG signatures. It verifies both artifacts, the aggregate checksum list and the final manifest before uploading them.
Verify with the per-artifact .sha256 file or the aggregate list.
The .sig sidecars cover both artifacts, the checksum list and the manifest.
release-manifest.json records each artifact's component, OS, architecture, size, linkage, and SHA-256. Signatures travel in the .sig sidecars.
Start with the quick start and the operations guide. The YTP/1 development guide covers build options, setup tools, embedding, and verification gates.