Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
7af0b76
docs: restructure validator operator docs based on feedback
Apr 16, 2026
7346e23
docs: split operator docs into actionable pages
Apr 17, 2026
b6ec6d7
docs: simplify overview, extract initial setup and troubleshooting pages
Apr 17, 2026
165a00e
docs: add key security warnings to initial setup and managing keys pages
Apr 17, 2026
5a660da
docs: move initial registration to initial setup page
Apr 17, 2026
f1f9dad
docs: add 'Tempo team will never ask for your private key' to all key…
Apr 17, 2026
44f3665
docs: copy permissioned validator info box to initial setup page
Apr 20, 2026
c494b87
docs: restructure initial registration into 3 ordered steps
Apr 20, 2026
7d0e4e3
docs: remove deprecated --consensus.fee-recipient mention from initia…
Apr 20, 2026
a050b9a
docs: update signing share recovery — node recovers from network auto…
Apr 20, 2026
fd88c5b
docs: rename 'checking validator state' to 'checking validator status'
Apr 20, 2026
29960de
docs: fix validator lookup example to match ValidatorInfoOutput/Valid…
Apr 20, 2026
29180c3
docs: move single validator lookup to top of status page, remove vali…
Apr 20, 2026
f1d0ff2
docs: fix validator lookup example to match IValidatorConfig::Validat…
Apr 20, 2026
ccc1b89
docs: fix validator example output to match SingleValidatorOutput fro…
Apr 20, 2026
2798116
docs: clean up state transitions diagram — horizontal flow, epoch labels
Apr 20, 2026
2a771f5
docs: fix state transitions — syncer immediately on registration, 3 s…
Apr 20, 2026
8d30cd7
docs: remove misplaced data reset warning from validator status page
Apr 20, 2026
1a76473
docs: add entry/exit elements to state transitions diagram
Apr 20, 2026
c65517e
docs: switch state transitions to block-beta diagram for cleaner layout
Apr 20, 2026
1bc3865
docs: use 'block' instead of 'block-beta' for mermaid diagram
Apr 20, 2026
44b667f
docs: fix broken diagram — use flowchart TD instead of unsupported block
Apr 20, 2026
b7bff0d
docs: revert to block-beta diagram
Apr 20, 2026
895f5d2
docs: replace block-beta with flowchart TD — block-beta crashes in Vocs
Apr 20, 2026
6b82f79
Apply suggestion from @emmajam
emmajam Apr 21, 2026
455032f
Apply suggestion from @emmajam
emmajam Apr 21, 2026
b2c4e1e
Apply suggestion from @emmajam
emmajam Apr 21, 2026
b8eda8a
docs: add network upgrade cadence guidelines
emmajam Apr 21, 2026
52a94c9
docs: add dedicated upgrade cadence page, revert network-upgrades cha…
emmajam Apr 21, 2026
4488df7
Apply suggestion from @emmajam
emmajam Apr 21, 2026
662e4b5
docs: add time synchronization guidance for node operators (INF-379)
emmajam Apr 21, 2026
af4a40d
share recovery + syncer -> registration
hamdiallam Apr 21, 2026
fb8f3da
chore: address the comments
emmajam Apr 21, 2026
3f13613
Merge branch 'centaur/operator-docs-feedback' of github.com:tempoxyz/…
emmajam Apr 21, 2026
4b73281
chore: update docs
emmajam Apr 22, 2026
8064fef
chore: update docs
emmajam Apr 22, 2026
b473f89
chore: snapshots
emmajam Apr 22, 2026
991400a
chore: security
emmajam Apr 22, 2026
b3773ea
chore: exiting validator
emmajam Apr 22, 2026
6cd3f82
chore: exiting cmds
emmajam Apr 22, 2026
20bee49
chore: janis feedback
emmajam Apr 22, 2026
73cddf8
chore: fix add validator
emmajam Apr 22, 2026
ae89768
chore: CLEAN UP
emmajam Apr 22, 2026
4f53713
chore: fix text
emmajam Apr 22, 2026
8c6bafb
chore: adjuist warning
emmajam Apr 22, 2026
000bf40
chore: fix onboarding
emmajam Apr 22, 2026
4fdfa1e
chore: link snapshots.tempo.xyz
emmajam Apr 22, 2026
9108cfc
Update src/pages/guide/node/validator-monitoring.mdx
jenpaff Apr 22, 2026
99323f4
Update src/pages/guide/node/validator-setup.mdx
jenpaff Apr 22, 2026
ec5afb4
Update src/pages/guide/node/validator-setup.mdx
jenpaff Apr 22, 2026
0615cbb
Update vocs.config.ts
jenpaff Apr 22, 2026
8a5acf4
Update src/pages/guide/node/validator-monitoring.mdx
jenpaff Apr 22, 2026
ac48cf9
fix: remove duplicate sidebar entries in vocs.config.ts
emmajam Apr 22, 2026
8593143
chore: fix comments
emmajam Apr 22, 2026
a1f4c86
Apply suggestion from @jenpaff
jenpaff Apr 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/pages/cli/node.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Flags grouped by function:
| `--consensus.datadir <path>` | Separate volume for consensus data |

:::warning
`--consensus.fee-recipient` is deprecated as of `v1.5.2` and will be removed in an upcoming release. See [Validator Config V2](/guide/node/validator-config-v2).
`--consensus.fee-recipient` is deprecated as of `v1.5.2` and will be removed in an upcoming release. See [updating the fee recipient](/guide/node/validator-lifecycle#update-the-fee-recipient).
:::

### Observability
Expand Down
20 changes: 19 additions & 1 deletion src/pages/guide/node/installation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,27 @@ docker run -d --name tempo ghcr.io/tempoxyz/tempo:<version> --version
docker logs tempo
```

## Snapshots

Downloading a snapshot lets your node skip syncing from genesis and start participating much faster. This is recommended for both RPC nodes and validators.

::::code-group
```bash [Minimal (validators)]
tempo download --chain mainnet --minimal
```
```bash [Full (RPC / dApp backends)]
tempo download --chain mainnet
```
```bash [Archive (indexers / RPC providers)]
tempo download --chain mainnet --archive
```
::::

For testnet, replace `mainnet` with `moderato`. See [snapshots.tempoxyz.dev](https://snapshots.tempoxyz.dev/) for detailed component sizes and download options.

## Verifying Releases

All release artifacts are cryptographically signed starting after **v1.1.1**. We recommend verifying signatures before running any binary.
All release artifacts are cryptographically signed. We recommend verifying signatures before running any binary.

### Binary Signatures (GPG)

Expand Down
2 changes: 1 addition & 1 deletion src/pages/guide/node/network-upgrades.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ For detailed release notes and binaries, see the [Changelog](/changelog).
| [v1.2.0](https://github.com/tempoxyz/tempo/releases/tag/v1.2.0) | Feb 13, 2026 | Mainnet only | Fixes validation bug rejecting transactions with gas limits above ~16.7M, blocking large contract deployments | <Badge variant="red">Required</Badge> |

:::warning
`--consensus.fee-recipient` is deprecated as of `v1.5.2` and will be removed in an upcoming release. Validators should migrate fee-recipient management to [Validator Config V2](/guide/node/validator-config-v2).
`--consensus.fee-recipient` is deprecated as of `v1.5.2` and will be removed in an upcoming release. Validators should migrate fee-recipient management to [update the fee recipient](/guide/node/validator-lifecycle#update-the-fee-recipient).
:::

---
Expand Down
52 changes: 52 additions & 0 deletions src/pages/guide/node/security.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
title: Node Security
description: Security best practices for Tempo node operators, covering key management, network configuration, release verification, and data integrity.
---

# Node Security

This page covers security best practices for Tempo node operators. Following these recommendations helps protect your validator from impersonation, unauthorized access, and operational mistakes.

## Key management

Your signing key is the most sensitive asset on your validator. Anyone with access to it can impersonate your node in consensus.

- **Restrict file permissions** — set `chmod 600` on key files so only the node process user can read them.
- **Never share your private key** — the Tempo team will never ask for it.
- **Rotate keys periodically** — use [key rotation](/guide/node/validator-lifecycle#rotate-validator-identity) to swap to a new ed25519 key without leaving the committee.
- **Separate the operator address** — the Ethereum address that controls on-chain operations (IP updates, rotation, ownership transfer) should be a dedicated address, not a general-purpose hot wallet.

See [Managing validator keys](/guide/node/validator-keys) for the full key hierarchy and generation instructions.

## Network configuration

Tempo's networking layer includes built-in protections, making a cloud firewall or NAT gateway unnecessary in most setups. The node:

- Only accepts consensus connections from validators that can prove their identity
- Only accepts connections from trusted IP addresses (active validators on-chain)
- Rate-limits connections and messages in both consensus and execution layers

### Recommendations

- **Expose only the required ports** — see [Ports](/guide/node/system-requirements#ports) for which ports need public access vs. internal-only.
- **Keep ingress addresses unique** — the on-chain contract enforces uniqueness, but verify your registered `IP:port` is correct after infrastructure changes.
- **Use a dedicated machine** — avoid running other internet-facing services on the same host as your validator.

## Release verification

Always verify release artifacts before running them. Tempo signs all binaries and Docker images — see [Verifying Releases](/guide/node/installation#verifying-releases) for GPG, Cosign, and SHA256 verification instructions.

## Time synchronization

An unsynchronized clock can cause your node to reject valid blocks or produce blocks that other validators reject. Use `chrony` or `ntpd` — not `systemd-timesyncd`. See [Time Synchronization](/guide/node/system-requirements#time-synchronization) for setup instructions.

## Data integrity

- **Never delete the data directory and re-sync with the same signing key** — this risks double-signing and will require [rotating to a new identity](/guide/node/validator-lifecycle#resetting-your-validators-data). Deleting only the `consensus` subdirectory is safe; the signing share will be [automatically recovered](/guide/node/validator-keys#signing-share-recovery).
- **Back up your signing key** — if the key file is lost and no backup exists, you will need to rotate to a new key and coordinate with the Tempo team.

## Staying up to date

- Subscribe to [Tempo GitHub releases](https://github.com/tempoxyz/tempo/releases) for security patches and upgrade announcements.
- Review the [Upgrade Cadence](/guide/node/upgrade-cadence) to understand notification timelines.
- Apply <span style={{color: 'var(--vocs-color_red)'}}>Required</span> upgrades before the activation block — failing to do so will fork your node off the network.
40 changes: 35 additions & 5 deletions src/pages/guide/node/system-requirements.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,42 @@ These dedicated servers meet or exceed the recommended specs for both RPC and va
Cloud instances with network-attached storage (e.g., AWS EBS) do not provide sufficient I/O performance. Use dedicated servers or instances with local NVMe storage.
:::

## Security measures
## Time Synchronization

We do not recommend using a cloud firewall / NAT gateway as it can introduce additional complexity and performance issues. Instead, we've implemented security measures in the networking layer of the node, including:
- only accepting connections from trusted IP addresses (active validators on-chain)
- ratelimiting connections and messages in consensus and execution to prevent abuse
- only accepting consensus connections from validators that can prove their identity
Tempo validates that block timestamps are not in the future. If your system clock drifts even slightly, your node may reject valid blocks or produce blocks that other validators reject — leading to consensus errors and missed proposals.

:::warning
`systemd-timesyncd` (the default on many minimal VMs) is **not sufficient**. Use `chrony` or `ntpd` for reliable sub-millisecond synchronization.
:::

### Install and enable chrony (recommended)

```bash
sudo apt install chrony
sudo systemctl enable --now chronyd
```

### Verify synchronization

```bash
chronyc tracking
```

Check that **System time** offset is under a few milliseconds and **Leap status** is `Normal`. You can also verify with:

```bash
timedatectl
```

Confirm `System clock synchronized: yes` and `NTP service: active`.

### Cloud providers

Most cloud providers (AWS, Hetzner, OVH) pre-configure NTP, but minimal VM images may ship without a proper NTP daemon. Always verify that `chrony` or `ntpd` is installed and running after provisioning a new machine.

## Security

For network configuration, key management, release verification, and other security best practices, see the dedicated [Node Security](/guide/node/security) page.

## Network Tuning

Expand Down
67 changes: 67 additions & 0 deletions src/pages/guide/node/upgrade-cadence.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
title: Upgrade Cadence
description: How Tempo schedules and communicates network upgrades, including timelines, notification windows, and what to expect as a node operator.
---

import { Badge } from '../../../components/Badge'

# Upgrade Cadence

Tempo ships protocol upgrades on a **monthly cadence**. Each upgrade bundles one or more protocol changes ([TIPs](/protocol/tips)) into a named hardfork (T1, T2, T3, …).

## Rollout timeline

Every upgrade follows the same two-stage rollout:

| Stage | Lead time | Details |
|-------|-----------|---------|
| **Testnet** (Moderato) | Announced at least **3 days** before activation | The upgrade activates on the Moderato testnet first so operators and integrators can validate. |
| **Mainnet** (Presto) | Announced at least **7 days** before activation | After a successful testnet activation, the same release is scheduled for mainnet — typically one week later. |

Operators should use the window between testnet and mainnet activation to upgrade their testnet node, verify it syncs past the activation block, and confirm their applications work against the new protocol rules.

## Patch releases

Between hardforks, Tempo publishes patch releases (e.g. v1.5.1, v1.5.2) for security fixes, performance improvements, and non-consensus bug fixes. Patch releases do not require a hardfork and can be adopted at your own pace, subject to the priority level.

## Upgrade priority levels

Each release on the [Network Upgrades and Releases](/guide/node/network-upgrades) page carries a priority badge:

| Badge | Meaning |
|-------|---------|
| <Badge variant="red">Required</Badge> | Consensus-breaking change — nodes **must** upgrade before the activation block or they will fork off the network. |
| <Badge variant="yellow">Recommended</Badge> | Non-consensus improvement (performance, hardening, bug fixes). Nodes continue to function without upgrading, but the update is strongly encouraged. |
| <Badge variant="amber">RPC only</Badge> | Only affects RPC-serving nodes (e.g. security patches for public endpoints). Validators without public RPC exposure can skip. |

## How you will be notified

- **GitHub releases** — every release is published to [tempoxyz/tempo releases](https://github.com/tempoxyz/tempo/releases) with a full changelog.
- **Operator channels** — the Tempo team shares activation timestamps and migration checklists in dedicated operator channels ahead of each upgrade.
- **Docs** — the [Network Upgrades and Releases](/guide/node/network-upgrades) page is updated with dates, TIP references, and priority badges as soon as an upgrade is scheduled.

## Operator checklist

:::::steps

### Review the release

Read the changelog and upgrade page to understand what is changing and whether any migration steps are required.

### Upgrade your testnet node

Update your Moderato node to the new release and confirm it syncs past the testnet activation block.

### Validate your integration

Run your application or test suite against the upgraded testnet to catch any breaking changes before mainnet.

### Upgrade your mainnet node

Update your mainnet node **before** the mainnet activation timestamp.

### Monitor after activation

Watch logs and metrics after the activation block to confirm normal operation.

:::::
Loading
Loading