This repository is for running Base, not writing a first app
base/base brings the rollup's public node components into one Rust-heavy repository. It includes execution, consensus, a unified base command, basectl, and the baseup binary installer. Node operators can use a published container or compile the tree through Docker Compose. Protocol contributors can inspect how Base derives L2 data, executes transactions, handles upgrades, and exposes operator controls. Developers who only want to connect a wallet or deploy a contract will find the separate Base documentation more direct.
The scale confirms that audience. Our checkout contained 2,337 files, about 503,002 lines of source, and occupied 57.9 MB before dependencies. GitHub identifies Rust as the primary language, but one dependency builds a Go library through FFI. The root has 25 CI workflow files and a Compose file, while its Docker build definition lives under etc/docker. This is a multi-component protocol workspace rather than a single executable with a short compile loop.
A node needs two Ethereum endpoints and persistent data
The documented Compose setup starts separate execution and node services. Operators must supply an Ethereum L1 execution RPC URL and an L1 beacon endpoint through .env.mainnet or .env.sepolia. The execution service exposes JSON-RPC, WebSocket, metrics, and P2P ports and mounts a host directory for node data. The consensus side adds its own RPC, P2P, metrics, and profiling ports. Firewall rules, disk placement, snapshots, endpoint quotas, and monitoring remain operator responsibilities.
Teams that do not want to compile can pin a published image with NODE_TAG; the README's example uses v1.2.6. The baseup script installs 4 binaries and verifies archive checksums plus GPG signatures. If GitHub's CLI is installed and authenticated, it also verifies SLSA provenance. Supported installer targets are Linux on x86_64 or arm64 and macOS on Apple Silicon. The script writes to a user-owned directory and does not require sudo.
What happened when we ran it
Our sandbox installed 1,983 packages in 84 seconds. The source build did not finish within the 900-second limit, so its result is a timeout rather than a compiler failure. That distinction matters: the log does not prove the code cannot compile on a properly provisioned machine. It does show that a clean build exceeds the budget of an ordinary short CI job in the stated 3-CPU, 12 GB environment.
Tests ran for 536 seconds before failing with exit code 101. The final error came from the custom build command for sp1-recursion-gnark-ffi v6.4.0. It said it was building a Go library, then the Rust build script panicked with an operating-system No such file or directory error. The tail does not identify which file or executable was absent, so we cannot claim a specific missing package. No test result was reached beyond that dependency build failure.
The install completed, but the combined source path consumed more than 23 minutes across build and test attempts. For most node operators, that favors signed release archives or pinned containers. Contributors still need the source route and should reproduce it in the project's documented development environment, confirm the Go-related dependency chain, and reserve enough CI time. A cached maintainer workflow can behave very differently from the fresh unprivileged container we used.
v1.2.0 required a database migration for mainnet nodes
The latest GitHub release returned by the API was v1.2.0, published July 22, 2026. Its notes called the mainnet upgrade and migration required by mid-August and recommended the same change for Sepolia. Moving to Reth V2 storage could be done by downloading a new snapshot or migrating existing V1 data, with the notes warning that the in-place migration takes much longer and does not support non-archival nodes. This is the sort of release that needs a runbook, rollback plan, and adequate maintenance window.
Development continued after that tag. The repository was pushed on August 26, 2026, and GitHub showed 853 stars with 136 combined open issues and pull requests. A GitHub issue search returned 22 open issues. Recent reports discuss blob decoding, selector handling, consensus parsing, installer version ordering, and fork CI. Reports are not confirmed defects merely because they remain open, but their protocol-level subject matter shows why node updates deserve more scrutiny than a normal web dependency bump.
Fork CI and protocol reports raise the contributor cost
Open issue 3164 says a YAML syntax error prevents one standard fork workflow from starting, leaving contributors without that check. Issue 4633 reports that blob decoding validates an encoding-version byte at the wrong offset, while issue 4631 describes different handling of unknown selectors between execution and consensus parsers. Both reports include code locations and reproduction reasoning. Their open status means readers should follow the maintainers' response rather than treating either report as adjudicated.
Base operators have a credible distribution path through signed binaries and containers, and the repository is visibly active. Building everything locally is another matter. Our 900-second timeout and FFI failure make the source tree a poor casual install, while the release migration notes show that production operation has real state-management consequences. Use this repository when Base itself is the system you intend to run or change. Use a hosted RPC or the application guides when your work begins above the node layer.

