Validator UPDATE version (Feb 2026 restart)
Run as sol user Sudo password may be required
Update your system installation
sudo systemctl stop validator.service
sudo apt-get update -y &&
sudo apt-get upgrade -yReboot if you need to load a newer kernel.
Choose which release you want to install
If you dont already have the repo and this is a fresh install, Go to the Xandeum Agave repo, use the instructions to build the software https://github.com/Xandeum/xandeum-agave/tree/v3.0.14-upgrade
Use git checkout after cloning to get the right branch of the Xandeum Agave in your local repo.
git clone https://github.com/Xandeum/xandeum-agave/
cd xandeum-agave
git checkout v3.0.14-upgradeThere are many ways to build the Agave Software. Your specific setup will determine many things, such as the $PATH you keep your files, and how you transition from one version to anouther, and wheter you keep an old version around or not for rollback.
Use the instructions published by Anza to "Install from Source" published various places: https://github.com/Xandeum/xandeum-agave/blob/v3.0.14-upgrade/docs/src/cli/install.md#build-from-source
Instructions if using Agave-Maint-Util:
A tool such as agave-maint-util published by t3chie-404 (Brad @Xandeum) can be used to help handle some of these functions for you. https://github.com/T3chie-404/agave-maint-util
This guide assumes you already have a working validator running and you have already used this agave-maint-util before. If you haven't, use the readme to get familiar and start by going through the system-tuner to set some important parameters and paths.
cd agave-maint-util/
cat start-upgrade.shnote the paths in the configuration settings at the top of the file (copy paste to notepad). They will be set to default when git stash / git pull are performed and will need to be put back how they were. A future release of agave-maint-util will have a proper .env file but has not been implemented yet.
git stash
git pull
Next fix your paths in the start-upgrade.sh config section to match what you had.
Remove old Ledger
rm ~/ledger/* -RfFix cluster genesis and shred version...add these arguments to the file.
vim ~/validator-start.sh
New Cluster Info:
--expected-shred-version 37688 \
--expected-genesis-hash 4Ag7HtMBo7XpYj5YZcSP3PeCwjcrQJuQhaVVgz2BGHnb \
Remove if its in your file:
--no-snapshot-fetch \Full validator-start.sh example file from one of the Xandeum Nodes using only Xandeum known-validators.
#!/bin/bash
exec agave-validator \
--known-validator G6x4w89TJA9oDBSRNcpeanaThqBUJbEv5DJRBZGrQHYV \
--known-validator 5PW1SsXftQqKLF9FU88898BMG1vv3tqYRrVkGkFRwobs \
--known-validator 96wn2RrHFxXNMNJCN64qZCpBPCkHVTuKfWoeRTGrCdDy \
--known-validator DiEyTNni4uPwXaj9AX4pvFWvYFY5FKLEo3RRgN6Q22Lc \
--known-validator G5QXt6hybXuiHjaNVZqA5ccX9ysfLkzj2uzaJnnE5J94 \
--entrypoint xand-5.devnet.xandeum.com:8000 \
--entrypoint xand-4.devnet.xandeum.com:8000 \
--entrypoint xand-3.devnet.xandeum.com:8000 \
--entrypoint xand-2.devnet.xandeum.com:8000 \
--entrypoint xand-1.devnet.xandeum.com:8000 \
--expected-shred-version 37688 \
--expected-genesis-hash 4Ag7HtMBo7XpYj5YZcSP3PeCwjcrQJuQhaVVgz2BGHnb \
--snapshot-interval-slots 500 \
--full-snapshot-interval-slots 10000 \
--identity ~/validator-keypair.json \
--vote-account ~/vote-keypair.json \
--ledger ~/ledger/ \
--dynamic-port-range 8000-10000 \
--rpc-port 8899 \
--log /home/sol/data/logs/solana-validator.log \
--no-poh-speed-test \
--limit-ledger-size 30000000 \
Next, ADD a parameter to validator.service file. In the [Service] section make sure youhave these two parameters
sudo vim /etc/systemd/system/validator.service
LimitNOFILE=2000000
LimitMEMLOCK=2000000000Reload daemon
sudo systemctl daemon-reload
Get branches on Xandeum Agave Repo
cd ~/agave-maint-util/
./start-upgrade.sh --list-branches xandeum--- Showing Available branches for variant: xandeum ---
Using source directory: /home/sol/data/xandeum-agave
Repository URL: https://github.com/Xandeum/xandeum-agave.git
Source directory /home/sol/data/xandeum-agave already exists.
Ensuring correct ownership of existing /home/sol/data/xandeum-agave for user sol...
Fetching updates from remote origin...
Newest 20 (approx) available branches (local and remote-tracking, sorted by most recent commit first):
2026-02-09 23:53:08 +0530 origin/v2.3.13-upgrade
2026-02-04 16:32:18 +0530 origin/rpc-fix
2026-01-29 12:37:06 +0530 origin/v3.0.14-stoinc
2026-01-14 12:21:10 +0530 origin/v3.0.14-upgrade
2025-11-26 11:41:02 +0530 origin/reinheim
2025-11-06 16:58:40 +0530 origin/upgrade
2025-10-31 00:40:44 +0700 origin/v0.3.9-agave
2025-10-08 11:01:05 -0700 origin/agave-v3.0.6
2025-09-19 19:20:53 +0530 origin/ingolstadt
2025-09-19 19:20:53 +0530 origin/xandeum-v3.0.6-upgrade
2025-09-19 16:42:14 +0530 x2.2.0-herrenberg
2025-09-19 16:42:14 +0530 origin/x2.2.0-herrenberg
2025-09-19 16:41:50 +0530 origin/perf-fix
2025-09-06 09:32:47 -0700 origin/fix/perf
2025-08-27 17:42:43 -0700 origin/delay-fix
2025-05-27 23:20:44 +0530 x2.2.0-munich
2025-05-27 23:20:44 +0530 origin/x2.2.0-munich
2025-05-20 19:14:48 +0530 origin/show-atals-rpc-api
2025-04-23 18:10:23 +0530 origin/x2.2.0
2025-04-07 12:19:45 +0530 origin/zmq-socketsIn start-upgrade script: -j (--jobs) can be used to determine number of worker threads to build with. (It can also be set in the CONFIG section of the start-upgrade.sh file.)
cd ~/agave-maint-util/
./start-upgrade.sh origin/v3.0.14-upgrade --variant xandeum -j 12
Build successful for origin/v2.3.13-upgrade.
Creating directory for compiled version: /home/sol/data/compiled/origin_v2.3.13-upgrade/bin
Syncing compiled binaries...
Using build output from custom CARGO_TARGET_DIR: /tmp/cargo-target-1770689871/release
Note: cargo-install-all.sh doesn't respect CARGO_TARGET_DIR, using actual build location
Build complete. Check artifacts in /home/sol/data/compiled/origin_v2.3.13-upgrade/bin. Press Enter to update active_release symlink...
<press enter>Proceeding with symlink update... Backing up current symlink from /home/sol/data/compiled/origin_v2.3.13-upgrade/bin to: /home/sol/data/compiled/active_release_20260212055648_before_upgrade Removing old symlink (if any remaining after backup attempt): /home/sol/data/compiled/active_release Creating new symlink /home/sol/data/compiled/active_release -> /home/sol/data/compiled/origin_v3.0.14-upgrade/bin Verifying new version using binary from symlink (direct path)... Running: /home/sol/data/compiled/active_release/agave-validator -V agave-validator 3.0.14 (src:aefe7c56; feat:3604001754, client:Xandeum) Ref used for this upgrade = origin/v3.0.14-upgrade (compiled into directory: origin_v3.0.14-upgrade) Performing secondary verification (from home directory using system PATH)... Temporarily changed to directory: /home/sol Attempting to run: agave-validator -V (using existing system PATH) agave-validator 3.0.14 (src:aefe7c56; feat:3604001754, client:Xandeum) Secondary verification successful: 'agave-validator' found in system PATH. Secondary verification attempt complete. Verification step complete. Pausing before restart prompt... At this point you can use ctrl+c to cancel...there is no need to restart when the validator is already stopped.
We are ready to start the validator again:
sudo systemctl enable --now validator.serviceCreate your vote account:
solana airdrop 1 ~/validator-keypair.json
solana create-vote-account ~/vote-keypair.json ~/validator-keypair.json ~/withdraw-keypair.json Watch Logs to see if you connect to the new cluster (~2-3 minutes) Your vote account will be staked sometime after your vote account is created. Ping Brad in Discord Operations (vNodes) channel to ensure it is caught.
If you have issues, try looking here: