> For the complete documentation index, see [llms.txt](https://docs.espressosys.com/network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.espressosys.com/network/developer/operators/run-a-node.md).

# Run a Validator Node

The Espresso Network is secured by a permissionless, delegated Proof of Stake validator set. To participate as an operator, you register your node in the stake table contract, have stake delegated to it, and run the Espresso node software pointed at the network of your choice.

This page is the starting point. Pick the network you're targeting below for the exact image tag, genesis file, and environment variables.

## Pick your network

| Network           | When to use it                                                                   | L1               | Operator guide                                                                                                                         |
| ----------------- | -------------------------------------------------------------------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| **Mainnet 1**     | Production. Real ESP staking, real rewards, real users.                          | Ethereum mainnet | [Running a Mainnet 1 Node](https://github.com/EspressoSystems/gitbook/blob/main/releases/mainnet-1/running-a-mainnet-1-node.md)        |
| **Decaf Testnet** | Test integrations and node setups before going to Mainnet. Limited operator set. | Ethereum Sepolia | [Running a Decaf Testnet Node](https://github.com/EspressoSystems/gitbook/blob/main/releases/testnets/decaf-testnet/running-a-node.md) |

{% hint style="info" %}
**Decaf access is gated.** Decaf node operators are limited to a select group. If you're interested in running a node on a future Espresso release, [contact us](https://y3at7jy5knf.typeform.com/to/KgayxNsX?typeform-source=webflow.com).
{% endhint %}

## What every operator does

Every Espresso validator node (regardless of network) goes through the same lifecycle. The per-network operator guide above gives the exact commands and contract addresses; this is the shape of the process:

1. **Generate consensus keys.** Each node needs a BLS staking key (for consensus messages) and a Schnorr state key (for L1 light client attestations).
2. **Register the validator.** Run `staking-cli register-validator` against the stake table contract on the target L1 (Ethereum for Mainnet, Sepolia for Decaf). The Ethereum account derived from `MNEMONIC` + `ACCOUNT_INDEX` becomes the validator address that receives commission.
3. **Get stake delegated.** Either delegate to yourself or attract third-party delegators. The minimum delegation is 1 ESP. Participation is currently limited to the top 100 nodes by delegated stake per epoch.
4. **Run the node.** Pull the network-specific Docker image, set the environment variables, and point it at the network's CDN, state relay, and L1 provider.
5. **Claim rewards.** Rewards do not auto-compound. Use `staking-cli claim-rewards` or the staking UI to claim and, if desired, re-delegate.

The CLI commands are the same shape across networks; only the contract addresses, image tag, and endpoints differ.

## Related references

* [Networks](/network/network/networks.md): public endpoints, contract addresses, block explorers for each network.
* [Stake Table Contract](/network/developer/the-espresso-network/stake-table.md): how validator registration, delegation, and rewards work onchain.
* [Staking Rewards Calculation](/network/developer/the-espresso-network/stake-table/staking-rewards-calculation.md): how block rewards are distributed across validators and delegators.
* [Delegate $ESP](/network/network/delegation-ui.md): UI walkthrough for delegators (the other side of the staking relationship).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.espressosys.com/network/developer/operators/run-a-node.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
