> ## Documentation Index
> Fetch the complete documentation index at: https://monadfoundation-40611fb6-devops-1498-direct-udp-implementat.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# General Operations

## Version Information

View the version and build information for your Monad binaries:

```bash theme={null}
monad-node --version
# Example output: monad-node {"commit":"c0cdcaae8eb527e44d72c4638c1f1335025a5132","tag":"v0.12.2-rc","branch":"","modified":true}
```

## CLI Help

View available command-line arguments for any Monad binary:

```bash theme={null}
monad-rpc --help
monad --help
monad-bft --help
```

<Warning>
  CLI arguments should not be changed arbitrarily as some configurations may result in unexpected behavior or crashes.
</Warning>

## Service Management

Check the status of Monad services:

```bash theme={null}
# Check all services at once
systemctl status monad-bft monad-execution monad-rpc --no-pager -l

# Check individual service status
systemctl status monad-bft
systemctl status monad-execution
systemctl status monad-rpc

# View logs for a specific service
journalctl -u monad-bft -f
journalctl -u monad-execution -f
journalctl -u monad-rpc -f
```

## Monitoring Block Height

The RPC service will start listening on port `8080` when the statesync is completed.

Check the current block height via RPC:

```bash theme={null}
curl http://localhost:8080/ \
  -X POST \
  -H "Content-Type: application/json" \
  --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}'
```

## Viewing MonadDB Disk Usage

Note that MonadDB (TrieDB) will automatically compact when at 80% capacity to preserve
optimal SSD performance. To check MonadDB disk usage and retained block history:

```bash theme={null}
monad-mpt --storage /dev/triedb
```

Example output:

```
MPT database on storages:
          Capacity           Used      %  Path
           3.49 Tb       24.30 Gb  0.68%  "/dev/nvme1n1p1"
MPT database internal lists:
     Fast: 94 chunks with capacity 23.50 Gb used 23.40 Gb
     Slow: 3 chunks with capacity 768.00 Mb used 658.72 Mb
     Free: 14207 chunks with capacity 3.47 Tb used 0.00 bytes
MPT database has 599928 history, earliest is 36784905 latest is 37384832.
     It has been configured to retain no more than 33554432.
     Latest proposed is (37384832, 88a5550ba067c2f21cef6b6e8953fbf700fe300905952e5621335fe2bd58729c).
     Latest voted is (37384831, 56074c2429909c2966bfe8df55810ec3b8f4f4f599b407ff89ec92b090656ab1).
     Latest finalized is 37384830, latest verified is 37384827, auto expire version is 36784905
```

## Consensus Information with `ledger-tail`

`monad-ledger-tail` exposes consensus information by directly parsing ledger artifacts
and streams the data in JSON format.

Start the service:

```bash theme={null}
systemctl start monad-ledger-tail

# View output
journalctl -fu monad-ledger-tail
```

Example output:

```json theme={null}
// the real output is all on one line, but we've prettified this for legibility:
{
  "timestamp": "2025-11-23T03:09:09.534974Z",
  "level": "INFO",
  "fields": {
    "message": "proposed_block",
    "round": "53449032",
    "parent_round": "53449031",
    "epoch": "1024",
    "seq_num": "51203516",
    "num_tx": "3",
    "author": "036daee7750e29e46eb64d86ad1cc7b235d7f1ad9597941a3a77cdd641cead4528",
    "block_ts_ms": "1763867349470",
    "now_ts_ms": "1763867349534",
    "author_address": ""
  },
  "target": "ledger_tail"
}
```

## Node Status with `monad-status`

Install `monad-status`:

```
curl -sSL https://bucket.monadinfra.com/scripts/monad-status.sh -o /usr/local/bin/monad-status
chmod +x /usr/local/bin/monad-status
```

Run `monad-status` to get the status of the node.

This should print similar output:

```yaml theme={null}
### Monad Node Status

hostname: monad-node
date: Wed Nov 26 10:48:26 PM CET 2025
uptime: 0d 00h 41m 49s
version: 0.12.2
config:
  network: mainnet
  chain: monad_mainnet
  chainId: 143
  secpPublicKey: 03831b36b50261011d82f94d58f8aa0edfe058359e2c365c37cce678436b9eb371
  blsPublicKey: b9c1905e11e8395a789bece454ec24bed98b96cf9dc04c02c9512fb94900d3e0355383e542c44a0eb1be4d2780a1fb2f
  nodeSignature: 4f6e3e47af0e8ff3614e1eb53f9015ef4fc8593e60c13d52c2b458d05385b5f94cff8776ceb8b9401c3647148637d599622353d0631864a23b07f6d7fb55e84f00
  selfAddress: 65.109.145.172:8000
  recordSeqNum: 0
services:
  monad-bft: running
  monad-execution: running
  monad-rpc: running
  otelcol: running
  monad-cruft:
    activated: true
    previous: 48min ago
    next: 11min
peers:
  peersNumber: 1146
consensus:
  status: in-sync
  mode: live
  epoch: 764
  round: 38259075
  blockNumber: 38200041
  blockNumberFromExternal: 38200040
  blockDifference: 0
statesync:
  percentage: 100.0000%
  progress: 38193694
  target: 38193694
rpc:
  status: active
  clientVersion: Monad/0.12.2
  netVersion: 143
  blockNumber: 38200041
```

## Exporting Key Backups

If you followed the [full node installation](/node-ops/full-node-installation#generate-keystores) guide,
backup files for your keys were automatically created at:

* `/opt/monad/backup/secp-backup`
* `/opt/monad/backup/bls-backup`

If those files are missing or you need to re-export your keys, use the commands below to
recreate them. Any existing backup files will be preserved with a timestamp suffix before
being overwritten.

```bash theme={null}
source /home/monad/.env

[ -f /opt/monad/backup/secp-backup ] && mv /opt/monad/backup/secp-backup "/opt/monad/backup/secp-backup.$(date +%Y%m%d%H%M%S).bak"
[ -f /opt/monad/backup/bls-backup ] && mv /opt/monad/backup/bls-backup "/opt/monad/backup/bls-backup.$(date +%Y%m%d%H%M%S).bak"

monad-keystore recover \
  --password "$KEYSTORE_PASSWORD" \
  --keystore-path /home/monad/monad-bft/config/id-secp \
  --key-type secp > /opt/monad/backup/secp-backup

monad-keystore recover \
  --password "$KEYSTORE_PASSWORD" \
  --keystore-path /home/monad/monad-bft/config/id-bls \
  --key-type bls > /opt/monad/backup/bls-backup
```

<Warning title="External Backup">
  These files contain your node's private keys — they define your node identity. Anyone with access to them can take over your node's identity.

  **Ensure that these backup files are stored in an external location outside of the node (e.g. a password manager or secrets vault). They are required to restore your full node or validator identity in the event of hardware failure or system loss:**

  * `/opt/monad/backup/secp-backup`
  * `/opt/monad/backup/bls-backup`

  For validators, this is especially important: losing your keys means you cannot migrate your validator, and re-registering with a new identity requires moving all delegations manually.
</Warning>

## Importing Keys from Backups

To restore your node identity from a backup, extract the IKM secret from each backup file and
import it using `monad-keystore import`:

```bash theme={null}
source /home/monad/.env

[ -f /home/monad/monad-bft/config/id-secp ] && mv /home/monad/monad-bft/config/id-secp "/home/monad/monad-bft/config/id-secp.$(date +%Y%m%d%H%M%S).bak"
[ -f /home/monad/monad-bft/config/id-bls ] && mv /home/monad/monad-bft/config/id-bls "/home/monad/monad-bft/config/id-bls.$(date +%Y%m%d%H%M%S).bak"

SECP_IKM=$(grep -E "Keystore secret:|Keep your IKM secure:" /opt/monad/backup/secp-backup | awk '{print $NF}')
BLS_IKM=$(grep -E "Keystore secret:|Keep your IKM secure:" /opt/monad/backup/bls-backup | awk '{print $NF}')

monad-keystore import \
  --ikm "$SECP_IKM" \
  --password "$KEYSTORE_PASSWORD" \
  --keystore-path /home/monad/monad-bft/config/id-secp \
  --key-type secp

monad-keystore import \
  --ikm "$BLS_IKM" \
  --password "$KEYSTORE_PASSWORD" \
  --keystore-path /home/monad/monad-bft/config/id-bls \
  --key-type bls
```

## Keeping Updated

To stay updated on new releases:

* join the [Monad Node Announcements](https://t.me/MonadNodeAnnouncements) telegram group, or
* join the [Monad Developer Discord](https://discord.gg/monaddev) and follow the `#mainnet-fullnode-announcements` channel
