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 needGo to
Check a ledgerA browser. Nothing to install.A
Run an Entropa nodeThe 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 pipelineA node, plus Java 17 and sbt for your pipeline.B, C, D
Build the open-core crates and read the codegit, 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

The Entropa node is proprietary software distributed as a free binary: the source code is not published. Release 0.2.0 (x86_64 Linux, glibc 2.34 or newer: Ubuntu 22.04+, Debian 12+, RHEL, Rocky and Alma 9+, Fedora) contains the node and the checkpoint witness. No Java, Scala or Rust is needed to run it. Provided as is, without warranty (terms).

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.