---
node_type: archive
chain_id: roguelayer-1
binary: rogued
denom: urogue
audience: machine
last_verified: 2026-05-12T00:00:00.000Z
canonical_url: 'https://roguelayer.one/run-a-node/archive/agent'
---

# Archive node — agent instructions

## CONSTANTS

```
CHAIN_ID=roguelayer-1
BINARY=rogued
GENESIS_URL=TBD
SEED_PEERS=TBD
MIN_DISK_GB=1500
MIN_RAM_GB=16
DISK_TYPE=NVMe SSD
```

## PREFLIGHT

- `df -BG ${HOME} | awk 'NR==2 {print $4}' | tr -d G` → >= 1500
- `awk '/MemTotal/ {print int($2/1024/1024)}' /proc/meminfo` → >= 16
- Other prereqs per /run-a-node/full/agent/raw PREFLIGHT.

## STEPS

### STEP 1 — provision_full_node

Run /run-a-node/full/agent/raw STEPS 1–3 on the host. Do NOT execute STEP 5 (no `systemctl enable`) until archive mode is set in STEP 2 below.

EXPECT_EXIT: 0
VERIFY: `~/.rogued/config/genesis.json` exists; seeds configured.

### STEP 2 — set_archive_mode

COMMAND:
```
python3 - <<'PY'
import re, pathlib
app = pathlib.Path.home() / ".rogued/config/app.toml"
cfg = pathlib.Path.home() / ".rogued/config/config.toml"
def set_kv(s, k, v): return re.sub(rf'(?m)^{k}\s*=.*$', f'{k} = {v}', s)
a = app.read_text()
a = set_kv(a, "pruning", '"nothing"')
a = set_kv(a, "min-retain-blocks", "0")
a = set_kv(a, "snapshot-interval", "0")
a = set_kv(a, "snapshot-keep-recent", "0")
app.write_text(a)
c = cfg.read_text()
c = re.sub(r'(?ms)^\[tx_index\].*?^indexer\s*=.*?$', '[tx_index]\nindexer = "kv"', c)
cfg.write_text(c)
PY
```
EXPECT_EXIT: 0
VERIFY:
- `grep '^pruning' ~/.rogued/config/app.toml` shows `pruning = "nothing"`.
- `grep -A1 '^\[tx_index\]' ~/.rogued/config/config.toml` shows `indexer = "kv"`.

### STEP 3 — install_systemd_unit_and_start

Identical to /run-a-node/full/agent/raw STEP 5.

EXPECT_EXIT: 0
VERIFY: `systemctl is-active rogued` → `active`.

### STEP 4 — wait_for_sync_from_genesis

COMMAND:
```
until rogued status 2>&1 | jq -e '.sync_info.catching_up == false' >/dev/null; do sleep 30; done
```
EXPECT_EXIT: 0
VERIFY: `rogued status | jq -r .sync_info.catching_up` → `false`.
ON_FAILURE: archive sync may take days. If disk usage climbs past `MIN_DISK_GB`, resize before retrying.

## VERIFY_FINAL

- `rogued query block 1 | jq -r .block.header.height` → `1`. A pruned full node would error here.

## FAILURE_MODES

- Disk fills mid-sync → unrecoverable. Provision larger disk and restart from genesis.
- Sync stalls → likely disk I/O bottleneck. Confirm NVMe; rotational disk cannot keep up.
