Downloads And Platforms¶
Use the newest dated nightly prerelease for current public beta testing. Choose your operating system and CPU, then download a runnable package rather than a manifest or source archive. Rust or a compiler is not required to use the native packages.
Active beta. Beta 3 is the next development target, without a release date. See first launch before starting the daemon, and the release scope for the current holds and compatibility rules.
Choose A Native Package¶
The filenames below are suffixes following emulebb-rust-v<VERSION>. x64,
x86_64 and amd64 refer to the same CPU family; ARM64 and aarch64 refer to
the other native family. Match the package to the system running the daemon,
which can differ from the computer displaying its browser console.
| System | CPU | Runnable package |
|---|---|---|
| Windows | x64 / ARM64 | -windows-x64.zip / -windows-arm64.zip |
| Linux, package-managed | x64 / ARM64 | -linux-amd64.deb / -linux-arm64.deb |
| Linux, portable GNU | x64 / ARM64 | -linux-x86_64.AppImage / -linux-aarch64.AppImage |
| Linux, static musl | x64 / ARM64 | -linux-amd64-musl.tar.zst / -linux-arm64-musl.tar.zst |
| macOS | Intel / Apple Silicon | -macos-x64.dmg / -macos-arm64.dmg |
Windows: extract the complete ZIP into a writable application directory.
Keep webui beside emulebb-rust.exe, then run the executable. The hosted runner
version is not an established oldest supported Windows version.
Linux DEB: install the matching file through the host package manager, for
example sudo apt install ./<downloaded-file>.deb, then run emulebb-rust.
The dated nightly below declares libc6 (>= 2.38), libgcc-s1 (>= 4.2) and
ca-certificates. Inspect the chosen build's package dependencies; these are not
a promise that every Debian/Ubuntu release can run it.
Linux AppImage: mark the matching file executable and run it. This packages the GNU daemon; it is not libc-independent. Host kernel, library and AppImage runtime/FUSE compatibility still matter. An exact oldest distribution or FUSE requirement has not been established here.
Linux musl: use a tar/zstd-capable extractor, enter the extracted
emulebb-rust directory and run ./emulebb-rust, keeping adjacent webui files.
A compatible CPU/kernel and system CA certificates are still needed. No exact
oldest kernel or minimum RAM/storage guarantee is established. A Linux musl
binary is not an Android binary.
macOS: open the matching DMG and copy the app to a writable installation location. The app is unsigned and not notarized; follow the normal macOS Privacy & Security approval flow. Launching the app starts the daemon/browser console; quitting stops it. The package declares macOS 12.0, while the retained native smoke below ran on macOS 15. Treat those as different facts. GUI users can recover the API key from their private profile bootstrap file.
Containers¶
Pull runnable images from
ghcr.io/emulebb/emulebb-rust.
Both Ubuntu and Alpine variants publish Linux amd64 and arm64 manifests.
| Tag | Meaning |
|---|---|
<VERSION>-ubuntu, <VERSION> |
Versioned Ubuntu variant; Ubuntu is the default |
<VERSION>-alpine |
Versioned Alpine variant |
nightly-ubuntu, nightly |
Moving nightly Ubuntu aliases |
nightly-alpine |
Moving nightly Alpine alias |
There is no published latest alias. Use a verified @sha256:<digest> reference
for an exact deployment; moving nightly tags can change. An .oci.tar.manifest.json
release attachment is publication evidence, not a runnable container archive.
A container engine must support the selected CPU. Provide writable /config
and /data mounts, configure PUID/PGID as appropriate for their ownership,
and keep persistent state when replacing the container. The s6 image places the
implicit profile at /config/emulebb-rust and completed downloads at /data/ed2k.
For local control, bind host REST port 4711 to loopback. The daemon speaks plain HTTP; remote TLS belongs at a trusted reverse proxy. Restrict access and keep the API key private. P2P TCP/UDP routing and reachability need their own deliberate container/network configuration; opening REST does not open P2P ports. The optional Gluetun example is an advanced deployment reference, not a requirement or general VPN-safety proof.
Experimental Android Developer Bundles¶
-android-arm64-v8a.tar.zst and -android-x86_64.tar.zst contain native CLI
developer builds targeting API 28+ with 16KB-compatible ELF alignment. Follow the
bundled developer README/launcher for controlled ADB work.
These are not APKs, app-store installations or a supported Android app. Compilation/test linking and ELF audit are recorded; device runtime and test execution are NOT RUN. Completed-file delivery, default-route discovery, transfers and VPN behavior remain unqualified. APK/JNI/signing work is separate.
What Each Supporting File Does¶
| Asset family | Purpose |
|---|---|
| ZIP, DEB, AppImage, DMG, musl tar/zstd | Runnable native packages |
| Android tar/zstd | Experimental CLI developer packages |
SHA256SUMS |
Compare downloaded bytes before launch |
*.manifest.json |
Package version/source/CPU, payload hashes or OCI publication metadata |
*-candidate-manifest.json |
Whole candidate inventory and source/evidence binding |
*.sbom.spdx.json |
Component/license inventory |
*-package-smoke-*.json |
Exact-source native execution scope and results |
*-compile-elf.json |
Android compile/ELF evidence, not runtime proof |
*-security.json, *.vulnerabilities.txt, *-scanner.txt |
Image policy results and scanner identity |
*-security-SHA256SUMS, *.oci.digest |
Image evidence checksums and published digests |
| Release notes | Changes, provenance context and profile/schema warnings |
| GitHub Source code ZIP/tar.gz | Source snapshots; not runnable client packages |
GitHub provenance attestations bind subjects to workflow/source identity. They are separate from ordinary release downloads. Native packages can be unsigned while their build provenance is attested. A checksum alone verifies byte equality, not the identity or trustworthiness of its publisher.
Download SHA256SUMS from the same release as your package. In PowerShell,
Get-FileHash -Algorithm SHA256 -LiteralPath <downloaded-file> prints the hash;
compare it to the exact filename's entry. On Linux, sha256sum <downloaded-file>
provides the corresponding comparison; on macOS use shasum -a 256 <downloaded-file>.
Do not launch a file whose hash differs. Advanced users can verify published
attestations with gh attestation verify <downloaded-file> --repo emulebb/emulebb-rust.
Dated Proof, Not A Blanket Support Claim¶
Published nightly
0.1.0-beta.2.nightly.20261110.g78f74541
binds product and workflow source 78f74541ad9985ccc5cfe6987e1c2e3b41134249.
Run 42761216405, attempt 2
completed 31 jobs and published 81 assets, including the experimental Android
bundles. GitHub's automatic source archives are additional, separate files.
Eight native/musl package reports cover startup, API/WebUI assets, a synthetic local transfer, partial restart and shutdown on their native hosted CPU/OS. Public discovery was disabled for those local tests. Rendered-browser proof is recorded for Windows x64; asset checks on other platforms are not equivalent. Native OCI smoke/security evidence covers Ubuntu/Alpine on both CPUs under its configured policy, not a zero-vulnerability guarantee.
Independent publication verification checked small metadata/hashes and registry objects; it did not locally execute the large packages or pull image layers. Later main revisions need their own publication evidence. Deep public-network evidence is concentrated on Windows/Linux x64. None of this proves current-head 100k-file performance, long-soak reliability, universal minimum-OS support or Android device operation.