---
node_type: full
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/full/agent'
---

# Full / RPC node — agent instructions

## CONSTANTS

```
CHAIN_ID=roguelayer-1
BINARY=rogued
GENESIS_URL=TBD
SEED_PEERS=TBD
P2P_PORT=26656
RPC_PORT=26657
REST_PORT=1317
GO_VERSION_MIN=1.22
MIN_DISK_GB=200
MIN_RAM_GB=8
```

## PREFLIGHT

- `go version` → >= 1.22
- `df -BG ${HOME} | awk 'NR==2 {print $4}' | tr -d G` → >= 200
- `awk '/MemTotal/ {print int($2/1024/1024)}' /proc/meminfo` → >= 8
- `command -v jq curl git make` → all exist

## STEPS

### STEP 1 — install_binary

COMMAND:
```
git clone https://github.com/stepheniervella/RL1.git ~/rogue && cd ~/rogue && make install
```
EXPECT_EXIT: 0
VERIFY: `rogued version` prints a semver string.
ON_FAILURE: ensure `$(go env GOPATH)/bin` is on PATH.

### STEP 2 — init_and_genesis

COMMAND:
```
rogued init "$(hostname)" --chain-id roguelayer-1 && curl -fsSL "$GENESIS_URL" -o ~/.rogued/config/genesis.json
```
EXPECT_EXIT: 0
VERIFY: `[ -s ~/.rogued/config/genesis.json ]` AND `sha256sum` matches operator-supplied hash.
ON_FAILURE: hash mismatch → STOP.

### STEP 3 — configure_peers

COMMAND:
```
sed -i 's|^seeds = ".*"|seeds = "'"$SEED_PEERS"'"|' ~/.rogued/config/config.toml
```
EXPECT_EXIT: 0
VERIFY: `grep -E '^seeds = ' ~/.rogued/config/config.toml` shows configured seeds.

### STEP 4 — expose_rpc_optional

Only run if external RPC access is required. Default: skip.

COMMAND:
```
sed -i 's|^laddr = "tcp://127.0.0.1:26657"|laddr = "tcp://0.0.0.0:26657"|' ~/.rogued/config/config.toml
sed -i '/^\[api\]/,/^\[/ s|^enable = false|enable = true|' ~/.rogued/config/app.toml
sed -i '/^\[api\]/,/^\[/ s|^address = "tcp://localhost:1317"|address = "tcp://0.0.0.0:1317"|' ~/.rogued/config/app.toml
```
EXPECT_EXIT: 0
VERIFY: `grep 'laddr = "tcp://0.0.0.0:26657"' ~/.rogued/config/config.toml` matches.
SAFETY: do NOT expose 26657 to the public internet without a rate-limiting reverse proxy.

### STEP 5 — install_systemd_unit

COMMAND:
```
sudo tee /etc/systemd/system/rogued.service > /dev/null <<EOF
[Unit]
Description=RogueLayer full node
After=network-online.target

[Service]
User=$USER
ExecStart=$(go env GOPATH)/bin/rogued start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload && sudo systemctl enable --now rogued
```
EXPECT_EXIT: 0
VERIFY: `systemctl is-active rogued` → `active`.

### STEP 6 — wait_for_sync

COMMAND:
```
until rogued status 2>&1 | jq -e '.sync_info.catching_up == false' >/dev/null; do sleep 10; done
```
EXPECT_EXIT: 0
VERIFY: `rogued status | jq -r .sync_info.catching_up` → `false`.

## VERIFY_FINAL

- `curl -s localhost:26657/status | jq -r .result.sync_info.latest_block_height` → matches the explorer height ± a few blocks.

## FAILURE_MODES

- catching_up stays true → peer count 0 → SEED_PEERS unreachable or port 26656 blocked.
- Disk fills up → enable pruning in `~/.rogued/config/app.toml`: `pruning = "default"`.
