available soon Current version 0.2.128

Install

Three ways to run UMNode, none of them public yet: the source repository opens with the first public release, and the prebuilt binaries and the Docker image are being set up. Here is what each will look like.

Requirements

From source available soon

The ofzhur/umnode repository is private while UMNode is pre-alpha and opens with the first public release. The build is a plain Go build:

git clone https://github.com/ofzhur/umnode.git
cd umnode

make build               # produces bin/umnode
./bin/umnode             # joins Ethereum mainnet with the bundled config

Or without the Makefile:

go run . --network mainnet --log-level debug

By default UMNode reads cfg/ethereum.yaml from the current working directory and joins mainnet. Override any setting with a flag, or pick another bundled network:

./bin/umnode --network sepolia \
  --block-db data/sepolia/chain --state-db data/sepolia/state \
  --node-db data/sepolia/p2p/enode --inventory-db data/sepolia/p2p/inventory

Every store is bound to the chain it was created for, so give each network its own data directories. ./bin/umnode --help lists every flag; the quickstart, configuration and flag reference cover the rest.

Prebuilt binaries available soon

Static release binaries are not published yet. When they land they will be listed on the downloads page, with checksums, for these targets:

TargetFileStatus
Linux amd64umnode-linux-amd64.tar.gzsoon
Linux arm64umnode-linux-arm64.tar.gzsoon
macOS amd64umnode-darwin-amd64.tar.gzsoon
macOS arm64umnode-darwin-arm64.tar.gzsoon

Docker available soon

A multi-arch image (linux/amd64 and linux/arm64) is being set up and is not published yet. The image is a distroless static build of about 15 MB with cfg/ethereum.yaml baked in for an out-of-the-box mainnet run.

Once it is published, running it will look like this:

docker run --rm -it \
  -v "$PWD/data:/app/data" \
  ofzhur/umnode:latest

No published ports are needed: UMNode dials out and runs discovery outbound but accepts nothing inbound. The data/ mount preserves the peer database and the block store between runs. Mount cfg/ read-only at /app/cfg only to override the bundled config. Flags go after the image name:

docker run --rm -it ofzhur/umnode:latest --log-level debug --max-peers 50

From a checkout of the repository the image is built locally with make docker, which tags ofzhur/umnode:<git-describe> and :latest, and run with make docker-run.

What you should see

On a healthy start UMNode logs that it has loaded the network config, opened its stores and begun discovery. As peers complete the handshake you will see Peer ready lines, and as the head advances the realtime worker logs each block it imports. JSON-RPC is served on 0.0.0.0:8550 by default; open that address in a browser for the built-in method explorer. The quickstart walks through a first run.