Installing Prysm from source with Bazel

Prysm can be installed on GNU/Linux, MacOS, and Arm64 using our build tool, Bazel. This page includes instructions for performing this method.


NOTICE: The Prysm installation script is the easiest and most efficient way of installing the latest binaries. Instructions for using it can be found here.

Have questions? Stop by the #documentation channel on Discord and let us know.

System requirements

Minimum specifications

These specifications must be met in order to successfully run the Prysm client.

  • Operating System: 64-bit GNU/Linux, MacOS
  • Processor: Intel Core i5โ€“760 or AMD FX-8100 or better
  • Memory: 4GB RAM
  • Storage: 20GB available space SSD
  • Internet: Broadband connection

Recommended specifications

These hardware specifications are recommended, but not required to run the Prysm client.

  • Processor: Intel Core i7โ€“4770 or AMD FX-8310 or better
  • Memory: 8GB RAM
  • Storage: 100GB available space SSD


  • A modern UNIX operating system
  • The latest release (3.2.0 onwards) of Bazel installed
  • The cmake package installed
  • The git package installed

Installing the beacon chain and validator

  1. Open a terminal window. Ensure you are running the most recent version of Bazel by issuing the command:
bazel version
  1. Clone Prysm's main repository and enter the directory:
git clone
cd prysm
  1. Build both the beacon chain node and the validator client:
bazel build //beacon-chain:beacon-chain
bazel build //validator:validator

Bazel will automatically pull and install any dependencies as well, including Go and necessary compilers.

Connecting to the testnet: running a beacon node

Below are instructions for initialising a beacon node and connecting to the public testnet. To further understand the role that the beacon node plays in Prysm, see this section of the documentation.


It is recommended to open up port tcp/13000 and udp/12000 on your local router to improve connectivity and receive more peers from the network. To do so, navigate to in your browser and login if required. Follow along with the interface to modify your routers firewall settings. When this task is completed, append the parameter--p2p-host-ip=$(curl -s to your selected beacon startup command presented in this section to use the newly opened port.

To start your beacon node with Bazel, issue the following command:

bazel run //beacon-chain -- --datadir=$HOME/.eth2

This will sync up the beacon node with the latest head block in the network. If the network hasn't started yet, it will process eth1 deposits from the deposit contract so far and await the genesis time.

Syncing the Blockchain

The beacon node you are using should be completely synced before submitting your deposit for the validator client, otherwise the validator will not be able to validate and will inflict minor inactivity balance penalties. No need to worry about this if the chain has not yet started.

Now that your beacon chain is setup, you can then run a validator on the Medalla testnet by following our detailed guidelines here