An open-source Lean Ethereum consensus client, written in Go and maintained by Gean Labs.
Gean is:
- A consensus client for Lean Ethereum — the successor to today's Beacon Chain, designed for fast finality, quantum-resistant security, and a simpler core protocol.
- Currently running on the Lean Consensus devnet-4 alongside other independent client implementations built by separate teams.
- Fully open-source under the MIT license. Anyone can read, audit, or build on the code.
- Built for clarity and auditability, with a deliberately small codebase that researchers, security reviewers, and contributors can read end-to-end.
- Quantum-resistant by design — uses XMSS, a post-quantum signature scheme, in place of the BLS signatures used in today's Ethereum.
- Built and maintained by Gean Labs as part of the multi-client Lean Ethereum effort to bring the next chapter of Ethereum consensus to production.
- Go 1.25+
- Rust 1.90.0, for building the XMSS FFI
- uv, for generating leanSpec fixtures
- Docker, for devnet workflows
Gean uses make as a thin wrapper around Go, Rust FFI, Docker, and fixture-generation commands. Common targets:
# Build the Rust FFI libraries and the gean and keygen binaries
make build
# Run Go unit tests (excludes spec and FFI tests)
make test
# Build the FFI and run XMSS tests
make test-ffi
# Generate leanSpec fixtures and run spec-conformance tests
make leanSpec/fixtures
make test-spec
# Format Go and Rust sources
make fmt
# Run go vet, cargo fmt --check, and clippy
make lint
# Build the Docker image
make docker-buildRun make help or browse the Makefile for the full set of targets.
To run Gean in a local multi-client devnet through lean-quickstart:
# Clones lean-quickstart, builds the docker image, and starts a local devnet
make run-devnetFor a small Gean-only local network, generate keys and start three nodes in separate terminals:
make run-setup
make run # node 0 (aggregator)
make run-node1 # node 1
make run-node2 # node 2Important: When running nodes manually, at least one node must be started as an aggregator so attestations are aggregated and included in blocks. Without an aggregator the network will produce blocks but never finalize.
Gean currently tracks Lean Consensus devnet-4, pinned to leanSpec@70fc774.
- devnet-4 — currently tracked. The pin is set by
LEAN_SPEC_COMMIT_HASHin the Makefile; changes to the commit propagate throughmake leanSpec/fixturesandmake test-spec.
Support for older devnet versions is discontinued when the next devnet version is adopted.
Gean treats reviewability as a consensus-safety property. A client that can be read end-to-end by a single contributor is a client where consensus-critical behavior has fewer places to hide and fewer layers to mislead an auditor. The same property is what makes multi-client interoperability checks credible: when Gean and another Lean client disagree on a fork choice or a state root, the divergence should be locatable in a small number of files.
The Lean Ethereum specification is early and fast-moving. Gean optimizes for iteration speed against leanSpec rather than for long-term backward compatibility — interfaces, types, and even package shapes are expected to evolve as the spec does. Annotating non-obvious behavior with the leanSpec PR #NNN that justifies it is how that velocity stays compatible with auditability: a future reviewer can reconstruct intent without re-reading every spec discussion that led to a given branch.
Gean uses main for active development. Devnet-specific branches may be cut for stable testing against a particular leanSpec version; the active devnet pin lives in the Makefile.
Gean is part of the multi-client Lean Ethereum ecosystem and learns from the work of other client teams:
Gean is open-source software released under the MIT license.
