Installation

Dugite can be installed from pre-built binaries, container images, or built from source.

Pre-built Binaries

Download the latest release from GitHub Releases:

PlatformArchitectureDownload
Linuxx86_64dugite-x86_64-linux.tar.gz
Linuxaarch64dugite-aarch64-linux.tar.gz
macOSx86_64 (Intel)dugite-x86_64-macos.tar.gz
macOSApple Silicondugite-aarch64-macos.tar.gz
# Example: download and extract for Linux x86_64
curl -LO https://github.com/michaeljfazio/dugite/releases/latest/download/dugite-x86_64-linux.tar.gz
tar xzf dugite-x86_64-linux.tar.gz
sudo mv dugite-node dugite-cli dugite-monitor dugite-config /usr/local/bin/

Verify checksums:

curl -LO https://github.com/michaeljfazio/dugite/releases/latest/download/SHA256SUMS.txt
sha256sum -c SHA256SUMS.txt

Container Image

Multi-architecture container images (amd64 and arm64) are published to GitHub Container Registry:

docker pull ghcr.io/michaeljfazio/dugite:latest

The image uses a distroless base (gcr.io/distroless/cc-debian12:nonroot) for minimal attack surface — no shell, no package manager, runs as nonroot (UID 65532).

Run the node:

docker run -d \
  --name dugite \
  -p 3001:3001 \
  -p 12798:12798 \
  -v dugite-data:/opt/dugite/db \
  ghcr.io/michaeljfazio/dugite:latest

See Kubernetes Deployment for production container deployments.

Building from Source

Prerequisites

Rust Toolchain

Install the latest stable Rust toolchain via rustup:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Verify the installation:

rustc --version
cargo --version

Dugite requires the latest stable Rust toolchain (edition 2021). Use rustup update stable to stay current.

System Dependencies

Dugite's storage layer is pure Rust with no system dependencies beyond the Rust toolchain. Block storage uses append-only chunk files, and the UTxO set uses dugite-lsm, a pure Rust LSM tree. On all platforms, cargo build works out of the box.

Build

Clone the repository:

git clone https://github.com/michaeljfazio/dugite.git
cd dugite

Build in release mode:

cargo build --release

On Linux with kernel 5.1+, you can enable io_uring for improved disk I/O in the UTxO LSM tree:

cargo build --release --features io-uring

This produces four binaries in target/release/:

BinaryDescription
dugite-nodeThe Cardano node
dugite-cliThe cardano-cli compatible command-line interface
dugite-monitorTerminal monitoring dashboard (ratatui-based, real-time metrics via Prometheus polling)
dugite-configInteractive TUI configuration editor with tree navigation, inline editing, and diff view

Install Binaries

To install the binaries into your $CARGO_HOME/bin (typically ~/.cargo/bin/):

cargo install --path crates/dugite-node
cargo install --path crates/dugite-cli
cargo install --path crates/dugite-monitor
cargo install --path crates/dugite-config

Running Tests

Verify everything is working (requires cargo-nextest):

cargo nextest run --workspace

Or with the built-in test runner:

cargo test --workspace

The project enforces a zero-warning policy. You can run the full CI check locally:

cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo nextest run --workspace

Development Build

For faster compilation during development, use the debug profile (the default):

cargo build

Debug builds are significantly faster to compile but produce slower binaries. Always use --release for running a node against a live network.