---
title: 'Paxeer Node Operations Guide'
sidebarTitle: 'Overview'
description: 'Detailed guide for running and maintaining Paxeer nodes. Learn about configuration management, database maintenance, service management, and update procedures.'
keywords: ['paxeer node', 'blockchain node', 'node configuration', 'node maintenance', 'system operations']
---

> **For AI agents:** the complete documentation index is at [llms.txt](/llms.txt). Append `.md` to any page URL for its markdown version.

This guide covers the detailed operational aspects of running a Paxeer node,
including configuration management, maintenance procedures, and best practices
for stable and performant operations.

## Configuration Management

### Directory Structure

The Paxeer node configuration is stored in `$HOME/.paxeer/config/`:

```bash
$HOME/.paxeer/config/
├── app.toml          # Application configuration (gas fees, API settings, pruning, etc.)
├── config.toml       # Core Tendermint settings (network, consensus, and RPC)
├── client.toml       # CLI and client-related settings
├── genesis.json      # Chain genesis file, defines initial state
├── node_key.json     # Unique node identity key for peer-to-peer (P2P) networking
└── priv_validator_key.json  # Validator private signing key (if running as a validator)
```

The snippets below are opinionated tuning recommendations layered on top of
the defaults. For the *full* unmodified `app.toml`, `config.toml`, and
`client.toml` shipped by the latest tagged `paxd` release, jump to
[Default Configurations](#default-configurations) at the bottom of this
section.

### Essential Configuration Parameters

#### Network Settings (config.toml)

```toml
[p2p]
# Public address other nodes use to dial in (host:port)
external-address = "your-public-ip:26656"
# Local address to listen for incoming P2P connections
laddr = "tcp://0.0.0.0:26656"
# Combined inbound + outbound peer limit
max-connections = 200
# Per-connection bandwidth caps in bytes/sec
send-rate = 20971520
recv-rate = 20971520

[rpc]
# RPC listen address
laddr = "tcp://0.0.0.0:26657"
# Maximum number of simultaneous connections (HTTP + WS)
max-open-connections = 900
# Transaction confirmation timeout for /broadcast_tx_commit
timeout-broadcast-tx-commit = "10s"
```

#### Application Settings (app.toml)

```toml
# Minimum gas prices to prevent spam transactions
minimum-gas-prices = "0.02uhpx"

# Block retention for /block, /block_results, etc.
min-retain-blocks = 100000

# Concurrent transaction execution workers
concurrency-workers = 10

# Optimistic Concurrency Control for parallel tx execution
occ-enabled = true

[api]
# Enable the REST/Cosmos API server (port 1317)
enable = true
max-open-connections = 1000

[state-commit]
# State-commit (memiavl + FlatKV). Recommended on every node.
sc-enable = true

[state-store]
# Historical SS layer for queries. Required for any node serving RPC.
ss-enable = true
# 0 = keep everything
ss-keep-recent = 100000

[receipt-store]
# Storage backend for EVM transaction receipts (pebbledb or parquet).
rs-backend = "pebbledb"
```

### Default Configurations

The full unmodified `app.toml`, `config.toml`, and `client.toml` produced by
`paxd init` against the latest tagged `paxd` release. Use these as the
canonical reference for every available knob and its default value.

<Tabs>
  <Tab title="app.toml">

Application-layer configuration: gas, API, gRPC, pruning, EVM, etc.

```toml
# This is a TOML config file.
# For more information, see https://github.com/toml-lang/toml

###############################################################################
###                           Base Configuration                            ###
###############################################################################

# The minimum gas prices a validator is willing to accept for processing a
# transaction.
minimum-gas-prices = "0.01uhpx"

# MinRetainBlocks defines the minimum block height offset from the current block
# for pruning Tendermint blocks. Set to 0 to disable pruning.
min-retain-blocks = 100000

# ConcurrencyWorkers defines how many workers to run for concurrent transaction execution.
concurrency-workers = 10

# occ-enabled defines whether OCC is enabled or not for transaction execution
occ-enabled = true

# HaltHeight contains a non-zero block height at which a node will gracefully
# halt and shutdown that can be used to assist upgrades and testing.
halt-height = 0

# HaltTime contains a non-zero minimum block time (in Unix seconds) at which
# a node will gracefully halt and shutdown.
halt-time = 0

# InterBlockCache enables inter-block caching.
inter-block-cache = true

# IndexEvents defines the set of events in the form {eventType}.{attributeKey},
# which informs Tendermint what to index.
index-events = []

###############################################################################
###                        State Sync Configuration                         ###
###############################################################################

[state-sync]

# snapshot-interval specifies the block interval at which local state sync snapshots are
# taken (0 to disable). Must be a multiple of pruning-keep-every.
snapshot-interval = 0

# snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all).
snapshot-keep-recent = 2

# snapshot-directory sets the directory for where state sync snapshots are persisted.
snapshot-directory = ""

###############################################################################
###                       State Commit Configuration                        ###
###############################################################################

[state-commit]
# Enable defines if the state-commit should be enabled to override existing IAVL db backend.
sc-enable = true

# Defines the SC store directory
sc-directory = ""

# WriteMode defines how EVM data writes are routed between backends.
sc-write-mode = "cosmos_only"

# ReadMode defines how EVM data reads are routed between backends.
sc-read-mode = "cosmos_only"

# AsyncCommitBuffer defines the size of asynchronous commit queue
sc-async-commit-buffer = 100

# KeepRecent defines how many state-commit snapshots (besides the latest one) to keep
sc-keep-recent = 0

# SnapshotInterval defines the block interval the snapshot is taken
sc-snapshot-interval = 10000

###############################################################################
###                         State Store Configuration                       ###
###############################################################################

[state-store]
# Enable defines whether the state-store should be enabled for storing historical data.
ss-enable = true

# Defines the directory to store the state store db files
ss-db-directory = ""

# DBBackend defines the backend database used for state-store.
# Supported backends: pebbledb, rocksdb
ss-backend = "pebbledb"

# AsyncWriteBuffer defines the async queue length for commits to be applied to State Store
ss-async-write-buffer = 100

# KeepRecent defines the number of versions to keep in state store
ss-keep-recent = 100000

# PruneInterval defines the minimum interval in seconds to trigger SS pruning.
ss-prune-interval = 600

###############################################################################
###                        Receipt Store Configuration                      ###
###############################################################################

[receipt-store]
# Backend defines the receipt store backend.
rs-backend = "pebbledb"

# Defines the receipt store directory.
db-directory = ""

# AsyncWriteBuffer defines the async queue length for commits to be applied to receipt store.
async-write-buffer = 100

# PruneIntervalSeconds defines the interval in seconds to trigger pruning.
prune-interval-seconds = 600

###############################################################################
###                            EVM Configuration                            ###
###############################################################################

[evm]
# controls whether an HTTP EVM server is enabled
http_enabled = true
http_port = 8545

# controls whether a websocket server is enabled
ws_enabled = true
ws_port = 8546

# Maximum gas limit for simulation
simulation_gas_limit = 10000000

# list of CORS allowed origins, separated by comma
cors_origins = "*"

# list of WS origins, separated by comma
ws_origins = "*"

# timeout for filters
filter_timeout = "2m0s"

###############################################################################
###                       Giga Executor Configuration                       ###
###############################################################################

[giga_executor]
# enabled controls whether to use the Giga executor (evmone-based) instead of geth's interpreter.
enabled = false

# occ_enabled controls whether to use OCC with the Giga executor.
occ_enabled = false

###############################################################################
###                       Admin Configuration (Auto-managed)                ###
###############################################################################

[admin_server]
admin_enabled = false
admin_address = "127.0.0.1:9095"

###############################################################################
###                   Telemetry Configuration (Auto-managed)                ###
###############################################################################

[telemetry]
service-name = ""
enabled = true
enable-hostname = false
enable-hostname-label = false
enable-service-label = false
prometheus-retention-time = 7200
global-labels = []

###############################################################################
###                       API Configuration (Auto-managed)                  ###
###############################################################################

[api]
enable = true
swagger = true
address = "tcp://0.0.0.0:1317"
max-open-connections = 1000

###############################################################################
###                       gRPC Configuration (Auto-managed)                 ###
###############################################################################

[grpc]
enable = true
address = "0.0.0.0:9090"

###############################################################################
###                        gRPC Web Configuration (Auto-managed)            ###
###############################################################################

[grpc-web]
enable = true
address = "0.0.0.0:9091"
enable-unsafe-cors = false
```

  </Tab>

  <Tab title="config.toml">

Tendermint / consensus-layer configuration: P2P, RPC, mempool, consensus,
state-sync, etc.

```toml
# This is a TOML config file.
# For more information, see https://github.com/toml-lang/toml

#######################################################################
###                   Main Base Config Options                      ###
#######################################################################

proxy-app = "tcp://127.0.0.1:26658"

moniker = "docs-example"

# Mode of Node: full | validator | seed
mode = "full"

# Database backend: goleveldb | cleveldb | boltdb | rocksdb | badgerdb
db-backend = "goleveldb"

db-dir = "data"

log-level = "info"
log-format = "text"

genesis-file = "config/genesis.json"
node-key-file = "config/node_key.json"
abci = "socket"
filter-peers = false

#######################################################################
###       RPC Server Configuration Options          ###
#######################################################################
[rpc]
laddr = "tcp://0.0.0.0:26657"
cors-allowed-origins = []
cors-allowed-methods = ["HEAD", "GET", "POST"]
cors-allowed-headers = ["Origin", "Accept", "Content-Type", "X-Requested-With", "X-Server-Time"]
unsafe = false
max-open-connections = 900
max-subscription-clients = 100
max-subscriptions-per-client = 5
timeout-broadcast-tx-commit = "10s"
max-body-bytes = 1000000
max-header-bytes = 1048576

###################################################################
###           P2P Configuration Options                         ###
#######################################################################
[p2p]
queue-type = "simple-priority"
laddr = "tcp://0.0.0.0:26656"
external-address = ""
bootstrap-peers = ""
persistent-peers = ""
upnp = false
max-connections = 100
max-incoming-connection-attempts = 100
pex = true
private-peer-ids = ""
allow-duplicate-ip = false
handshake-timeout = "10s"
dial-timeout = "3s"
send-rate = 20971520
recv-rate = 20971520

#######################################################################
###          Mempool Configuration Options                          ###
#######################################################################
[mempool]
broadcast = true
size = 5000
max-txs-bytes = 1073741824
cache-size = 10000
keep-invalid-txs-in-cache = false
max-tx-bytes = 1048576
ttl-duration = "5s"
ttl-num-blocks = 10
tx-notify-threshold = 0
check-tx-error-blacklist-enabled = true
check-tx-error-threshold = 50
pending-size = 5000
max-pending-txs-bytes = 1073741824

#######################################################################
###         State Sync Configuration Options                        ###
#######################################################################
[statesync]
enable = false
use-p2p = false
rpc-servers = ""
trust-height = 0
trust-hash = ""
trust-period = "168h0m0s"
backfill-blocks = "0"
backfill-duration = "0s"
discovery-time = "15s"
temp-dir = ""
use-local-snapshot = false
chunk-request-timeout = "15s"
fetchers = "2"

#######################################################################
###         Consensus Configuration Options                         ###
#######################################################################
[consensus]
wal-file = "data/cs.wal/wal"
double-sign-check-height = 0
create-empty-blocks = true
create-empty-blocks-interval = "0s"
gossip-tx-key-only = "true"
peer-gossip-sleep-duration = "100ms"
peer-query-maj23-sleep-duration = "2s"

#######################################################################
###   Transaction Indexer Configuration (Auto-managed)              ###
#######################################################################
[tx-index]
indexer = ["kv"]

#######################################################################
###       Instrumentation Configuration (Auto-managed)             ###
#######################################################################
[instrumentation]
prometheus = false
prometheus-listen-addr = ":26660"
max-open-connections = 3
namespace = "tendermint"
```

  </Tab>

  <Tab title="client.toml">

Client-side configuration for the CLI.

```toml
# This is a TOML config file.
# For more information, see https://github.com/toml-lang/toml

###############################################################################
###                           Client Configuration                         ###
###############################################################################

# The network chain ID
chain-id = "hyperpax_125-1"

# The keyring's backend
keyring-backend = "os"

# Default key name
from = ""

# CLI output format
output = "text"

# <host>:<port> to Tendermint RPC interface for this chain
node = "tcp://localhost:26657"

# Transaction broadcasting mode
broadcast-mode = "sync"
```

  </Tab>
</Tabs>
