Commit 0df3ee2
authored
docs(operators): role-based operator docs with guided setup (#24219)
## Summary
Restructures the operator docs (`docs/docs-operate/operators/`) into a
**role-based guided setup**: an operator picks what they want to run
(full node, solo sequencer, staking provider, or prover) and follows a
path sized to that role, instead of navigating a flat list of setup
pages.
**Rationale.** The current operator docs are hard to navigate: new
operators don't know where to start, and existing operators can't find
answers to recurring questions. The top-level "Build / Operate /
Participate" navigation is abstract and overlaps for anyone who doesn't
already know the network's vocabulary, and the operator landing page is
theory-heavy with no obvious "what do I do next."
This redesign is driven by two data sources:
- **Discord operator channels** (`#mn-sequencer-technical`,
`#new-sequencer-technical`, `#new-prover-technical`), analyzed for
recurring complaints as of 2026-05-15.
- **The Aztec operator feedback survey**, run 2026-05-13 to 2026-05-27.
It follows two principles: (1) the first page an operator sees should
answer *"what can I do here and where do I start,"* not *"what is a
sequencer"*; and (2) if a question has been asked dozens of times in
Discord, the answer should be one or two clicks from the landing page.
**What's actually new in these pages.** The content below didn't exist
in the operator docs before; each page was written from on-chain
verification and the operator-reported pain points:
- **Identity model** (new Essentials page) — the full address-to-role
table (attester, publisher, coinbase, fee recipient, withdrawer, plus
provider admin and rewards-recipient) with slashable/rotatable columns,
a "which address gets which reward" model, where each address lives in
the keystore, how to check each on-chain, and the four most common
confusions as an FAQ.
- **L1 RPC requirements** (new Essentials page) — the three endpoints a
node needs (`ETHEREUM_HOSTS`, `L1_CONSENSUS_HOST_URLS`,
`ETHEREUM_DEBUG_HOSTS`); the post-Fusaka blob-serving requirement with
concrete supernode/semi-supernode versions (Lighthouse v8.0.0+, Prysm
v7.10+ and the flags); the `debug_traceTransaction` history requirement
(~12h / ~3,600 blocks); measured RPC call volume (~170,000/day/node
floor); polling-interval tuning; and a common-errors table. None of this
was canonically documented before.
- **Hardware spec** (new Essentials page) — corrected canonical numbers
(8 core / 8 GB / 1 TB SSD, NVMe recommended, 50,000+ IOPS, 25 Mbps
floor), an explicit per-sequencer note (the spec is per attester and
committee overlap drives real load), co-hosted L1 disk math by network
(~2 TB testnet / ~4 TB mainnet), provider per-attester multiplication,
and prover broker/agent scaling (the 1→4 agent table and the
`aztec.proving_queue.size` metric).
- **Slashing** (new Essentials page) — the eight offenses with their
penalty parameters and which actually fire today, the flat 2,000-AZTEC
penalty and the V5 tiered-penalty forward note, the three thresholds
(200K / 190K / 100K) and the five-slashes-of-headroom math, the veto
council and how to request a veto, how to detect a slash, and the full
**recovery path after ejection** including the genesis-sequencer case
and the zombie initiate/finalize-unstake flow on the dashboard.
- **Claiming rewards** (new Essentials page) — reframed around the
staking dashboard as the primary path. Distinguishes self-staker
claiming (per-sequencer Claim on `/my-position`) from provider claiming
(Operator Commission tab on `/operator`), with the two coinbase
scenarios (separate address vs coinbase=attester) that explain why the
dashboard total can read zero, and the Manage-Addresses tracking-list
steps. Screenshots included.
- **Claiming prover rewards** (new Prover page) — the
previously-undocumented claim flow: how prover rewards accrue per epoch
to `PROVER_ID`, the `claimProverRewards(coinbase, [epochs])` call, the
fact that any wallet can submit it (the prover key never has to sign the
claim), the manual `cast` fallback, and the mainnet + testnet Rollup
addresses with the Registry as source of truth.
- **Reading your logs** (new Reference page) — a catalogue of the most
common log messages labeled **ignore / investigate / urgent**, covering
the keystore ZodError (staker-output file in the keystore dir), libp2p
churn, attestation timeouts, the archiver debug-trace warning, and the
prover payload-size error. Each entry verified against the v4.3.1
source.
- **Monitoring** (new Essentials page) — the handful of metrics that
actually matter (block height, publisher balance, peer count, mempool)
with concrete alert thresholds, why publisher-balance is the key
slashing proxy, the OTEL→Prometheus naming, and how to wire up a stack
or use the community dashboards.
- **Run a Node landing + Popular questions + Operator tooling index** —
the role-picker entry point, the recurring-question shortcuts, and a
curated index of Foundation vs community tools (clearly labeled as
third-party).
A set of loopholes is intentionally **staged, not yet in this PR**
(tracked for follow-up): jailed/genesis-sequencer recovery framing, a
"Sequencer troubleshooting" decision tree, "Managing delegations,"
"Where to stay informed," migration guides for HA topology changes, and
the per-version changelog template extensions (RPC schema / metric-name
/ env-var subsections).
## What's new
- **Navbar: "Operate" → "Run a Node"** — matches the CTA already used on
the homepage; URLs stay at `/operate/...` for backwards compatibility.
<img width="341" height="40" alt="navbar"
src="https://github.com/user-attachments/assets/dba52d25-89dd-43fb-8775-7fe636b182e7"
/>
- **Role-picker landing** at `/operate/operators`: four cards (full
node, solo sequencer, staking provider, prover), each with the role's
purpose, key requirements (stake, hardware, what you earn), what's
distinctive, and a CTA into the matching setup path. Operators decide
what they're setting up before touching any commands.
<img width="689" height="528" alt="role_picker_02"
src="https://github.com/user-attachments/assets/b2ac13ae-e712-4a38-a1b1-6facaeb09360"
/>
<img width="689" height="414" alt="role_picker_01"
src="https://github.com/user-attachments/assets/e5bd49bf-7362-48b4-9a2b-d145bb24e315"
/>
- **"Popular questions" section** below the role-picker: a flat list of
links to the pages that answer the recurring pain points (identity
model, L1 RPC requirements, hardware spec, …), so an operator with one
specific question doesn't have to walk the role tree.
<img width="693" height="346" alt="popular_questions"
src="https://github.com/user-attachments/assets/9872cdaa-6563-4562-9193-385b93372352"
/>
- **Setup paths sized per role.** Full node is a short reference
section. **Solo sequencer and staking provider share one guided
walkthrough** (they're ~80% the same setup) with a track-picker toggle
for the differences (stake source, key management, commission). **Prover
has its own walkthrough** (different architecture and reward model).
- **Essentials concept pages**: identity model, hardware spec, L1 RPC
requirements, slashing, monitoring, claiming rewards.
- **Prover**: overview, setup, verification, troubleshooting, and a new
**Claiming prover rewards** page.
- **Reference → Reading your logs**: a catalogue of common log messages
labeled **ignore / investigate / urgent**.
- **Sidebar restructure**: role tracks become the primary entry points;
the old per-page Setup entries (running-a-node, sequencer-setup,
registering-sequencer, running-a-prover, staking-provider) are reachable
through the tiles, and genuinely advanced topics (HA, bootnode,
building-from-source, syncing, blob storage/upload) move under
**Advanced operations**. Monitoring, Keystore management, Sequencer
management, FAQ, and Reference stay intact.
<img width="229" height="535" alt="sidebar"
src="https://github.com/user-attachments/assets/ff4d0cfd-9b88-4012-9048-ec66c0164a5c"
/>
## Notable changes
Three interactive helpers were added to remove the most error-prone
manual steps. All are client-side React components (no backend); they
read public on-chain data via the operator's own RPC and never handle
private keys.
- **Operator config pane (`OperatorConfig`)** — on the guided playbooks,
the operator pastes their values (network, RPC, addresses, sequencer
count) once via a track-picker, and every code block on the page fills
in with those values. Removes copy-paste-and-edit errors across a
multi-page walkthrough.
<img width="679" height="536" alt="config_pane"
src="https://github.com/user-attachments/assets/093013b5-d120-4d7e-accf-3e99bc727cf5"
/>
- **L1 gas / publisher-funding calculator** — addresses the recurring
"how much ETH does the publisher need" question. The operator pastes
their L1 RPC; the component scans the last 30 days of `propose()`
activity, derives the per-propose gas and the gas-price percentiles
actually paid (including the proposal blob fee), and converts a top-up
amount into a runway estimate at chosen and elevated gas prices. Falls
back to a measured baseline before a scan.
<img width="679" height="516" alt="gas_calculator"
src="https://github.com/user-attachments/assets/c4eafed0-6d10-46f5-ab3f-d89c0ffbbf5e"
/>
- **Prover-rewards claim command generator** — on the new "Claiming
prover rewards" page. The operator enters their RPC, Rollup address, and
`PROVER_ID`; the component runs read-only calls to find every recent
epoch with an unclaimed reward and assembles the exact
`claimProverRewards(coinbase, [epochs])` command with the epoch list
filled in. Solves the "which epochs do I claim, and how" problem that
previously forced provers into Etherscan.
<img width="679" height="201" alt="prover_rewards"
src="https://github.com/user-attachments/assets/f98fa911-85d2-4ca8-958f-2999c99a0d45"
/>
Supporting plumbing:
- New shared components under `src/components/` (`OperatorConfig`,
`RolePicker`, `PopularQuestions`), registered in
`src/theme/MDXComponents.js`.
- `--aztec-card-bg` added to `src/css/custom.css` (used by the role
cards).
## Verification
Builds clean against `next` with `onBrokenLinks: "throw"` (`yarn
preprocess && yarn docusaurus build` → `[SUCCESS] Generated static
files`).97 files changed
Lines changed: 8304 additions & 665 deletions
File tree
- docs
- docs-operate/operators
- concepts
- full-node
- keystore
- monitoring
- prover
- provider
- reference
- changelog
- setup
- solo-sequencer
- tooling
- src
- components
- OperatorConfig
- PopularQuestions
- RolePicker
- css
- theme
- static
- img
- scripts
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 102 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
0 commit comments