zlicenser 0.1.4

Client library for the zlicenser hardware-bound software licensing framework.
Documentation

zlicenser

Client library and user-facing apps for the zlicenser licensing framework.

This is the customer side of the ecosystem. Customers use the GUI or TUI to browse the marketplace, purchase licenses from vendors, and run .zlb protected applications. The library crate handles the enrollment protocol, local license storage, hardware fingerprint collection, and the shim that decrypts and executes protected binaries without ever writing plaintext to disk.

What's in this repo

src/                     # library crate source (published to crates.io)
bin/zlicenser-tui/       # ratatui terminal app
bin/zlicenser-gui/       # Tauri 2 + SvelteKit desktop app
bindings/python/         # PyO3 + maturin
bindings/nodejs/         # napi-rs
bindings/go/             # CGo + cbindgen
xtask/                   # build automation
docs/                    # mdBook documentation

The workspace root Cargo.toml is both the workspace manifest and the published library crate. Everything under bin/ and bindings/ is publish = false.

Building

Rust toolchain: install via rustup. The rust-toolchain.toml pins to a specific stable version.

The library and TUI have no extra system dependencies. The GUI needs a few more things because of Tauri.

Ubuntu

sudo apt install -y \
  libwebkit2gtk-4.1-dev libgtk-3-dev \
  libayatana-appindicator3-dev librsvg2-dev pkg-config \
  python3-dev python3-pip
pip3 install maturin
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

Fedora

sudo dnf install -y \
  webkit2gtk4.1-devel gtk3-devel \
  libayatana-appindicator-gtk3-devel librsvg2-devel pkgconf \
  python3-devel python3-pip
pip3 install maturin
sudo dnf install -y nodejs

Node.js is only needed for the GUI frontend and the Node.js bindings. Python deps are only needed for the Python bindings.

Platform

Linux x86_64 only. The shim uses memfd_create + execve for in-memory execution, and hardware fingerprinting reads from Linux-specific interfaces. Windows and macOS are not in scope for this project. zlicenser-pro, a future commercial release, may support other operating systems.

Related repositories

License

Apache-2.0, see LICENSE.