# How to run a PoS devnet on geth and prysm Takes minutes to set up! This has been mostly copied from https://docs.prylabs.network/docs/advanced/proof-of-stake-devnet. Create devnet directory `mkdir devnet && cd devnet` Install prysm (CL): ``` git clone https://github.com/prysmaticlabs/prysm && cd prysm go build -o=../beacon-chain ./cmd/beacon-chain go build -o=../validator ./cmd/validator go build -o=../prysmctl ./cmd/prysmctl cd .. ``` Install geth(EL): ```git clone https://github.com/ethereum/go-ethereum && cd go-ethereum make geth cp ./build/bin/geth ../geth cd .. ``` I have used a test jwt token from prysm documentation, should be ok for now: `0xfad2709d0bb03bf0e8ba3c99bea194575d3e98863133d1af638ed056d1d59345` Paste this into `jwt.hex` in devnet directory Create `genesis.json` in `devnet` directory Create `config.yml` in `devnet` directory Create `genesis.ssz` in devnet directory Run geth: `./geth --datadir=gethdata init genesis.json` `./geth --http --http.api eth,net,web3 --ws --ws.api eth,net,web3 --authrpc.jwtsecret jwt.hex --datadir gethdata --nodiscover --syncmode full --discovery.port 30304 --port 30304 --http.port 8547 --ws.port 8548 --authrpc.port 8552` Run prysm CL: `./beacon-chain --datadir beacondata --min-sync-peers 1 --genesis-state genesis.ssz --bootstrap-node= --interop-eth1data-votes --chain-config-file config.yml --contract-deployment-block 0 --chain-id 32382 --accept-terms-of-use --jwt-secret jwt.hex --suggested-fee-recipient 0x123463a4B065722E99115D6c222f267d9cABb524 --minimum-peers-per-subnet 0 --enable-debug-rpc-endpoints --execution-endpoint gethdata/geth.ipc --peer=$PEER --p2p-udp-port 12001 --p2p-tcp-port 13001 --grpc-gateway-port 3501 --rpc-port 4001` secret key of signer : `2e0834786285daccd064ca17f1654f67b4aef298acbb82cef9ec422fb4975622`