eMule Streaming Engine (eSE) is an eMule 0.70b fork for decentralized P2P live streaming over eD2K and Kad. It combines the native Windows client, FFmpeg-based HLS broadcasting and a local web dashboard in one portable Windows x64 package.
SHA-256 checksum Β· Release notes Β· All releases
Important
9.1.0-beta.1 is a public IPv6/Kad6 network-lab beta, not the stable channel. The latest stable build remains eSE 8.1.0.
- Extract the ZIP to a writable folder such as
C:\eSE\. - Run
emule.exe. - Connect to eD2K and Kad.
- Press the eSE toolbar button.
- The dashboard opens at http://localhost:8080/live.
The portable package already includes the dashboard server, FFmpeg, ffprobe,
the local HLS player and language DLLs. User data is stored under
%APPDATA%\eMule\ and %APPDATA%\eSE\.
- Broadcast from OBS/RTMP, screen capture, a media file or a test pattern.
- Distribute live HLS chunks through the eD2K/Kad peer mesh.
- Watch in the bundled browser player or through a local HLS URL.
- Select NVENC, Intel QSV or AMD AMF when the encoder is usable, with a safe CPU/x264 fallback.
- Recover sources after peer loss and reject duplicate or tampered chunks.
- Browse streams with search, thumbnails, favorites and cinema playback.
OBS / screen / media
β
βΌ
emule.exe + FFmpeg ββ eD2K/Kad mesh ββ viewer's emule.exe
β β
βΌ βΌ
local HLS preview localhost HLS playback
Stream discovery does not require a central tracker:
- Kad publishes and resolves stream records.
- PEX gossip shares recent announcements between connected peers.
- LAN multicast discovers nearby streams on
224.0.0.251:5354. - A local cache remembers recently seen streams.
The release package contains a structurally checked and SHA-256-pinned
nodes.dat; it does not fetch a mutable bootstrap file while building or
starting.
The 9.1 beta promotes native IPv6 transport between capable eSE peers. Sources,
callbacks and LiveTV peer lists preserve the full 128-bit address; LiveTV
direct join accepts [IPv6]:port; and SOCKS5 and HTTP CONNECT support IPv6
destinations. IPv6-only peers use neutral credits, while queue anti-abuse
accounting groups endpoints by /64 instead of synthetic IPv4 identities.
Kad2 and Kad6 remain independently selectable and keep separate routing state. A strict same-host IPv6 LiveTV data-plane soak completed two hours at 12 Mbps with 468 valid samples and zero IPv4 fallback. This validates the data plane; it is not presented as certification between two physical machines or as universal public-IPv6 reachability.
NetLab offers separate consent for base measurements, advanced experiments and resource contribution. Reports stay local and sanitized. Punch3, port prediction, relay contribution, KRP and Kad6 Beta Exit remain separately gated and OFF by default.
- Dashboard and stream browser on
127.0.0.1:8080. - Native status/control API on
127.0.0.1:4711. - Remote dashboard and received-HLS access require explicit authentication.
- Port 8080 is never exposed automatically through UPnP.
- Request limits, path validation, signed chunks and protocol capability checks fail closed.
- Release artifacts include file hashes and build provenance.
Endpoint-free links use:
ed2k://|live|KEY||TITLE|/
The link does not contain an IP address or port; the viewer resolves a source through Kad. This does not make either endpoint anonymous by itself.
The 8.1 control tunnel hides the viewer from the broadcaster and Kad search path, but its production circuit has one relay hop: the exit can identify the viewer, and the media path can still be direct. The 9.1.0 beta therefore makes no claim of strong anonymity, universal High ID, IPv6 support through every ISP/router combination or traversal of every NAT.
| Service | Default | Protocol | Exposure |
|---|---|---|---|
| eMule client | 4662 | TCP | Inbound P2P |
| eMule/Kad | 4672 | UDP | Kad and UDP transport |
| Native WebServer/API | 4711 | TCP | Local control by default |
| eSE dashboard | 8080 | TCP | Local by default; never auto-mapped |
| RTMP ingest | 1935 | TCP | Needed remotely only when OBS is on another PC |
| LAN discovery | 5354 | UDP multicast | TTL 1; local subnet only |
Only expose the dashboard, API or RTMP ports when the use case requires it.
- Windows 10 or 11 x64.
- Visual Studio 2022 with Desktop development with C++, MFC and ATL.
- Node.js 22 and npm.
- Python 3.
- The pinned
libutpsubmodule.
git clone --recurse-submodules https://github.com/diad87/eMule-eSE-LiveTV.git
Set-Location eMule-eSE-LiveTVFor a local developer build:
.\tools\build_all.ps1 `
-ReleaseTag v0.70b-eSE9.1.0-beta.1 `
-AllowDirty `
-MaxCpuCount 1-AllowDirty is a development override. Release artifacts must be built from a
clean tagged commit without that switch. The full pipeline runs preflight,
core tests, C++ and Node builds, integration tests, language builds,
deterministic packaging and package smoke tests.
Artifacts are written under:
dist\<release-tag>\
βββ package\
βββ eSE-LiveTV-<release-tag>-x64.zip
βββ eSE-LiveTV-<release-tag>-x64.zip.sha256
Run the complete local test set with:
.\tools\run_alpha_tests.ps1 -Suite All| Document | Purpose |
|---|---|
| User guide | Install, watch, broadcast and troubleshoot |
| Beta release notes | IPv6/Kad6 changes, evidence, safety defaults, limitations and rollback |
| Architecture | Runtime processes, data flow and code layout |
| Changes from eMule 0.70b | Implemented fork changes |
| Protocol registry | Fork wire namespaces and compatibility rules |
| Documentation index | Complete first-party documentation list |
| Third-party licenses | Bundled component attribution |
eMule and this fork are licensed under the GNU General Public License v2.
- Original client: eMule Project.
- Native dependencies include CryptoPP, mbedTLS, miniupnpc, libutp, zlib, libpng, id3lib, CxImage and ResizableLib.
- The portable runtime includes Node.js, FFmpeg and packaged npm modules.
Downstream distributors must preserve the GPL notices and the attributions in THIRD_PARTY_LICENSES.md.