Purpose: Plan and operational runbook for running a real Casper Mainnet validator on a dedicated Manifest Network box. Status: Planning / pre-provisioning Last updated: 2026-06-30 Applies to: one dedicated, single-purpose validator box (no other apps co-located)
Manifest Network is standing up a Casper Layer-1 validator on Mainnet. We will be given a box sized appropriately for the validator, and it will not host any other application.
A Casper node is not a k8s web app. It runs as the casper-node-launcher systemd
service managed by the casper OS user. Because of that, this box is an explicit exception
to the Manifest k3s app-host standard — a new casper-validator role overlay that still
inherits the shared Manifest box baseline (bootstrap, deploy user, SSH two-key model, /data
layout, box metadata, console/agent inspection contract) but skips k3s, Traefik, and PostgreSQL.
See decisions/001-dedicated-non-k3s-validator-box.md
for the rationale, which is grounded in the existing
manifest-box-runtime-decision.md
"dedicated box" exception class.
| Phase | Goal | Doc |
|---|---|---|
| 0 | Decide sizing, network, key custody | this README + ADR 001 |
| 1 | Provision the box to the Manifest baseline + Casper overlay | runbook/01-provision-and-install.md |
| 2 | Install Casper, generate keys, sync to tip | runbook/01-provision-and-install.md |
| 3 | Fund the validator account, submit the bid, enter the validator set | runbook/02-sync-and-bond.md |
| 4 | Operate: monitor, upgrade protocols, back up, recover from ejection | runbook/03-operate-and-maintain.md |
| R | Testnet dry-run (rehearse the whole pipeline on free faucet CSPR first) | runbook/04-testnet-dry-run.md |
Go-live gate: do not submit the bond until the box passes
checklists/go-live.md.
- Network: Casper Mainnet (
chain-name = casper). No testnet dry-run in this plan; extra care on the go-live checklist compensates. - Node type: validator / TTL node —
sync_handling = ttl(not archival). ~500 GB is sufficient for ≥1 year; disk on/data. - Keys: generated on the box via
casper-client keygen, backed up offline before funding. The funding wallet (the CSPR that pays the bid) is owned separately by the team — seestandards/key-and-funding-management.md. - Minimum bid: 10,000 CSPR (chainspec minimum). Real amount TBD by the team; the box only needs enough to cover the bid + gas.
| Resource | Requirement | Notes |
|---|---|---|
| OS | Ubuntu 22.04 / 24.04 or Debian 13 | Manifest baseline is Ubuntu — matches |
| CPU | 4+ cores, must support AVX2 + Intel SHA extensions | AMD Zen / Intel Ice Lake or newer. Older CPUs crash. Verify before accepting the box. |
| RAM | 32 GB | More helps LMDB read cache |
| Disk | SSD required, ~500 GB (TTL validator) | HDD cannot keep sync. 2 TB only if archival. |
| Ports | 35000 (external, required), 8888 / 9999 / 7777 | See overlay doc for firewall policy |
Source: https://docs.casper.network/operators/setup/install-node and /operators/setup/hardware.
validator_casper/
├── README.md # you are here
├── docs/
│ └── critical-risks.md # the 3 things most likely to cost us the box/money/slot
├── decisions/
│ └── 001-dedicated-non-k3s-validator-box.md # ADR: why this box breaks the k3s standard
├── infrastructure/
│ ├── casper-validator-overlay.md # the role overlay: what the box gets
│ └── casper-validator-agent-adapter.md # how the box satisfies the console/agent contract
├── runbook/
│ ├── 01-provision-and-install.md # bare box → synced node
│ ├── 02-sync-and-bond.md # funded account → active validator
│ ├── 03-operate-and-maintain.md # monitoring, upgrades, backups, recovery
│ └── 04-testnet-dry-run.md # testnet rehearsal: faucet, wallet→validator, casper-test bid
├── standards/
│ └── key-and-funding-management.md # validator key custody + funding boundary
├── inventory/
│ └── box-entry.md # entry to add to manifest servers.md + box.json
├── checklists/
│ └── go-live.md # hard gate before submitting the bond
├── provisioning/ # self-contained box provisioning + tooling (standalone, not blended into shared deploy scripts)
│ ├── README.md # the deploy model on this box
│ ├── bootstrap-casper.sh # idempotent phased provisioner (hardening, firewall, Casper, /data)
│ └── install-tooling.sh # installs ucn/dcn/now/vhelp (what `dcn` runs)
├── bin/ # operator tooling installed to /usr/local/bin (ucn/dcn/now/vhelp + aliases/MOTD)
└── .deploy.env # wires ucn→git pull, dcn→install-tooling.sh
Provisioning is automated but deliberately standalone — provisioning/bootstrap-casper.sh
does not touch the shared manifest-internal-docs deploy scripts, but gives operators the same
ucn/dcn/now muscle memory (plus a vh validator menu). See
provisioning/README.md.
- Box specs confirmation — confirm the provided box meets CPU (AVX2+SHA), 32 GB RAM, SSD,
and has a separate data disk for
/data. - Funding owner + amount — who sends CSPR to the generated validator account, and how much above the 10,000 CSPR minimum (stake competitiveness — see ADR 001 §Risks).
- Delegation rate — the commission % we charge delegators (
delegation_ratein the bid). - Monitoring integration — whether the box feeds the future Manifest-console agent contract, an existing Prometheus/Grafana, or both (see agent-adapter doc).
- Key backup destination — the offline location for the validator secret key backup.