Action required: IBC assets on Sei will become inaccessible If you hold USDC.n (USDC via Noble), USDT.kava (Kava USDT), Wormhole-bridged tokens, or any other IBC asset on Sei, you must swap, migrate, or bridge out before the governance proposal to disable inbound/outbound IBC transfers passes and is activated to avoid permanent loss of access. After this, Sei will no longer support IBC bridging of assets from Cosmos-based chains to and from Sei Network. Consult the SIP-03 Migration Guide for the full list of affected assets, required actions, and supported routes. For USDC.n specifically, see: Holders of USDC.n Need to Swap or Migrate.
Deploy and maintain Sei Network infrastructure with comprehensive guides for validators, RPC nodes, and archive nodes, including hardware requirements, installation steps, and operational best practices.
Use this file to discover all available pages before exploring further.
Power the Sei Network InfrastructureComprehensive guides for running, maintaining, and optimizing Sei network nodes. Whether you’re setting up a validator, an RPC node, or a relayer, you’ll find detailed instructions and best practices to ensure optimal performance and security.
Suggested Version: Go 1.24.x (required for seid v6.3+)
Installation Steps
# Check for existing Go installationgo version# Download and install Go 1.24.xwget https://go.dev/dl/go1.24.5.linux-amd64.tar.gzsudo tar -C /usr/local -xzf go1.24.5.linux-amd64.tar.gz# Add Go to your environment variablesecho 'export PATH=$PATH:/usr/local/go/bin' >> $HOME/.bashrcsource $HOME/.bashrc# Verify installationgo version
2
Install Sei
Install Sei Binary
# Clone repository and installgit clone https://github.com/sei-protocol/sei-chain.gitcd sei-chaingit checkout <version-tag> # Replace with specific versionmake install# Verify installationseid version
See Network Versions table above for current recommended version.
Alternative: Docker Image
Official Docker images are available at GitHub Container Registry.
# Pull the latest versiondocker pull ghcr.io/sei-protocol/sei:latest# Or pull a specific version (recommended)docker pull ghcr.io/sei-protocol/sei:v6.3.1
Available architectures: linux/amd64 and linux/arm64.
If you encounter an error like command not found: seid, you may need to set your GOPATH environment variable.Add the following to your ~/.bashrc or ~/.zshrc:
Then reload your shell with source ~/.bashrc or source ~/.zshrc.For more information see here.
Initialize Chain Files
Default init mode is full (RPC/P2P bind to all interfaces). For validator or seed nodes, use --mode validator or --mode seed so RPC and P2P bind to localhost only. See the Validator Operations Guide for the full validator init example.
Peers can be found here -
mainnet (pacific-1):
testnet (atlantic-2):
# Initialize node (default mode is full: RPC/P2P bind to all interfaces)# For validator nodes, use: seid init <your-moniker> --chain-id <chain-id> --mode validatorseid init <your-moniker> --chain-id <chain-id># Genesis is written automatically for known networks (mainnet and testnets); no download needed.# Configure peers in config.toml.PEERS="<comma-separated-peer-list>"#Set persistent peers in config.tomlsed -i 's/persistent-peers = .*/persistent-peers = "'$PEERS'"/' ~/.sei/config/config.toml
An archive node maintains the complete historical record of the chain. This requires disabling state sync and starting with a pre-existing database using a “snapshot”.1. Disable State Sync — In $HOME/.sei/config/config.toml , modify the [statesync] section:
# State sync configuration[statesync]enable = false
2. Configure Archive Node Peers — To sync from the height your snapshot was created at, you need peers retaining a large amount of historical blocks. The node will require specific peers during initial sync, which can be changed at a later time.
For optimal transaction handling and resource management, it is recommended to update the mempool settings in your config.toml file.
Adjust these parameters if you encounter performance or resource issues on your specific hardware.
# Mempool configuration settings[mempool]# Broadcast transactions to other nodesbroadcast = true# Maximum number of transactions in the mempoolsize = 5000# Limit the total size of all txs in the mempool.max-txs-bytes = 10737418240# Size of the cache (used to filter duplicate transactions)cache-size = 10000# Do not remove invalid transactions from the cachekeep-invalid-txs-in-cache = true# Maximum size of a single transactionmax-tx-bytes = 2048576# Maximum size of a batch of transactions to send to a peermax-batch-bytes = 0# Maximum length of time a transaction can remain in the mempoolttl-duration = "3s"# Maximum number of blocks a transaction can remain in the mempoolttl-num-blocks = 5tx-notify-threshold = 0check-tx-error-blacklist-enabled = truecheck-tx-error-threshold = 50pending-size = 5000max-pending-txs-bytes = 1073741824pending-ttl-duration = "3s"pending-ttl-num-blocks = 5
3
Run Node
Setting Up a systemd Service
If you see an error such as panic: recovered: runtime error: integer divide by zero it means you can’t start nodes straight from the genesis file. Instead, sync to the block tip via state sync or using a snapshot.
For production deployments, configure a systemd service to ensure your node restarts automatically:
# Create the systemd service filesudo tee /etc/systemd/system/seid.service > /dev/null << EOF[Unit]Description=Sei NodeAfter=network-online.target[Service]User=$USERExecStart=$(which seid) startRestart=alwaysRestartSec=3LimitNOFILE=65535[Install]WantedBy=multi-user.targetEOF# Reload systemd, enable and start the servicesudo systemctl daemon-reloadsudo systemctl enable seidsudo systemctl start seid
Monitoring & Troubleshooting
Check your node’s status with these commands:
# Check sync statusseid status | jq .SyncInfo# Monitor logs in real-timejournalctl -u seid -f -o cat# Check validator status (if running a validator)seid query staking validator $(seid keys show <your_key> --bech val -a)