Install on Linux
Linux only (apt and dnf families). Pick what you want to do. Each block checks first and installs only what is missing, so if you already have a tool, nothing happens. No login and no cloud account are needed.
What do you want to do?
| I want to… | I need | Go to |
|---|---|---|
| Check a ledger | A browser. Nothing to install. | A |
| Run an Entropa node | The node (one downloaded binary). curl and jq. Docker only if you choose the container. No Scala, Java or Rust. | B, then C |
| Record evidence from my own Scala/Spark pipeline | A node, plus Java 17 and sbt for your pipeline. | B, C, D |
| Build the open-core crates and read the code | git, a C toolchain and Rust. | B, E |
A. Check a ledger (nothing to install)
Open the AI Audit Explorer, the the evidence explorer that runs with your node or the Council Explorer and press Verify in your browser. Every signature, hash, Merkle root and witness statement is checked on your own machine with only the public key. Use Download the bundle to keep a copy.
B. Common set-up (everyone who installs anything)
Run these two blocks once, in the same terminal. The first picks apt or dnf and updates the package list; the second installs only the missing basics.
# Pick your package manager once (apt: Ubuntu, Debian, Mint. dnf: Fedora, RHEL, Rocky, Alma).
if command -v apt >/dev/null 2>&1; then PM="sudo apt install -y"; sudo apt update
elif command -v dnf >/dev/null 2>&1; then PM="sudo dnf install -y"
else echo "Only apt and dnf based Linux is covered here"; fi
for t in curl jq git; do command -v $t >/dev/null 2>&1 || $PM $t; done
curl --version | head -1; jq --version; git --version
C. The node
Download, check the checksum, and install (run each line; it stops you if the checksum does not match):
mkdir -p ~/entropa && cd ~/entropa
BASE=https://github.com/aimozart/entropa-public/releases/download/node-v0.2.0
curl -fLO $BASE/entropa-node-0.2.0-x86_64-linux.tar.gz
curl -fLO $BASE/SHA256SUMS
sha256sum -c SHA256SUMS # must print: ...tar.gz: OK
tar xzf entropa-node-0.2.0-x86_64-linux.tar.gz
mkdir -p ~/.local/bin && install -m 755 entropa-node-0.2.0-x86_64-linux/entropa-platinum entropa-node-0.2.0-x86_64-linux/entropa-witnessd ~/.local/bin/
exec bash -l # a fresh login shell so ~/.local/bin is on your PATH
entropa-platinum init ~/entropa/node && entropa-platinum pubkey ~/entropa/node | head -c 32; echo
Then continue with Getting started. The release page is github.com/aimozart/entropa-public/releases.
Optional: run the node as a container (Docker on apt, Podman on dnf; in a container command, replace docker with podman on the dnf family). Checks first, installs if missing:
# apt family (Ubuntu, Debian): Docker. dnf family (Rocky, RHEL, Alma, Fedora): Podman, which runs the same containers.
if command -v apt >/dev/null 2>&1; then
command -v docker >/dev/null 2>&1 || $PM docker.io
sudo docker run --rm hello-world
else
command -v podman >/dev/null 2>&1 || $PM podman
podman run --rm quay.io/podman/hello
fi
D. Only for your own Scala/Spark pipeline: Java 17 and sbt
Skip this unless your pipeline is Scala/Spark. Your job then records its results by sending the node a small JSON request after each run (counts and a hash, never data), from a shell step with curl or from the job itself with any HTTP client. See Controls evidence.
# Java 17 and sbt for your own Scala/Spark pipeline, installed in your home folder (no sudo, same on apt and dnf).
command -v sbt >/dev/null 2>&1 && java -version 2>&1 | grep -q 'version "17' || {
curl -fL https://github.com/coursier/coursier/releases/latest/download/cs-x86_64-pc-linux.gz | gzip -d > cs
chmod +x cs && ./cs setup --jvm temurin:17 --yes && exec bash -l
}
java -version 2>&1 | head -1
sbt --version
This installs Temurin Java 17 and sbt into your home folder with Coursier: no sudo, the same on every distro, and always exactly Java 17 (Spark 4 needs 17 or 21; this project is built and tested on 17). It does not touch any Java you already have.
The open healthcare pipeline project is where the Scala/Spark work lives; wiring its runs to record evidence is in progress and is not in the public repository yet.
E. Only to build the open-core crates: Rust
# a C toolchain is needed to link Rust programs
command -v cc >/dev/null 2>&1 || { command -v apt >/dev/null 2>&1 && $PM build-essential pkg-config || $PM gcc make pkgconf-pkg-config; }
command -v cargo >/dev/null 2>&1 || { curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y; . "$HOME/.cargo/env"; }
cargo --version
git clone https://github.com/aimozart/entropa-public.git
cd entropa-public && cargo test --workspace
Note: the entropa-node and entropa-core crates on crates.io are libraries (the original open-core), so cargo install entropa-node does not work; add them as dependencies with cargo add. The current node is the separate binary described in section C.
Other public repositories: scryon-health-data (evidence specification and examples) and scryon-council (council specification).
Tested on
Every command block above was run, as written, on fresh cloud images of Ubuntu 24.04.5 LTS (apt) and Rocky Linux 10.2 (dnf; the RHEL family), on 5 November 2026. Results: common tools, the container route, Java 17 with sbt, the Rust toolchain and the open-core test suite (106 tests) all pass on both. The node program was also run on both: create a node, record an AI decision, an audit-evidence event and a council step, verify all three ledgers, serve them over HTTP, and cross-sign a checkpoint with a witness node. Not tested: Fedora itself, Debian, and other releases (they use the same package managers). The exact packages each step installs are listed in the test matrix.
Data
All data in these projects is synthetic: identifier-shaped values come from ranges that are never issued, and every free-text note carries a canary string that tests look for. No real patient or customer data is ever needed or accepted.