Command Line Interface Reference
Theseid binary provides extensive functionality for managing your Sei node.
Understanding these commands is essential for effective node operation and
troubleshooting.
Node Management Commands
These commands help you control and monitor your node’s operation: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.seidb Tooling Commands
Theseidb binary provides low-level tooling for inspecting and maintaining a node’s on-disk state.
Reporting FlatKV EVM Migration Status
Themigrate-evm-status subcommand reads the on-disk FlatKV EVM migration state from a FlatKV data directory and prints a JSON summary. It is primarily intended for integration and operator tooling that polls each validator to determine whether the FlatKV EVM migration has completed, without needing a custom RPC handler or having to grep through node logs.
version_at— the FlatKV version that was read.migration_version— the on-disk migration version (0means the FlatKV EVM migration has not yet completed).migrate_evm_complete—trueonce the migration version has reached the FlatKV EVM (v1) target.boundary_present—truewhile the migration is in flight (the in-progress resume cursor is still present).boundary_hex— hex-encoded migration boundary cursor, included only when a boundary is present.version_raw_hex— hex-encoded raw migration-version bytes, included only when a migration version is present.
Comparing EVM State Across Backends
Theevm-logical-digest subcommand computes a backend-independent digest of the EVM logical state (the account, code, and storage buckets) so that a memIAVL node and a FlatKV node can be compared at the same chain height. Because a freshly migrated FlatKV node stamps a per-key blockHeight into each value that differs from the memIAVL leaf versions, a raw byte-for-byte digest would diverge even when the underlying EVM state is identical. This command strips the serialization-version and blockHeight header on both sides and digests only the height-independent logical payload (storage word, bytecode, or balance+nonce+codehash), producing a comparable FINAL_DIGEST per backend.
FINAL_DIGEST equals the memIAVL FINAL_DIGEST. FlatKV also writes an internal migration-version marker row that a memiavl-only node never owns, so the command omits that row from the final comparison automatically.
The command accepts the following flags:
--backend— backend to read:flatkvormemiavl.--db-dir(-d) — for FlatKV, the FlatKV data directory; for memIAVL, the memIAVL root directory containingcurrent/andsnapshot-*.--height— target version. FlatKV WAL-replays to it; memIAVL resolvessnapshot-<height>/evm(0selects thecurrentsymlink).--memiavl-normalization— memIAVL normalization mode:semantic/independent(raw EVM key/value decoder, the defaultsemantic) ortranslator(current migration mapping).--inspect-bucket— inspect one normalized bucket (account,code,storage, orlegacy) instead of printing the global digest.--key-offset— inspect mode: byte offset into the physical key before applying--key-prefixor sharding.--key-prefix— inspect mode: hex prefix, relative to--key-offset, used to filter physical keys.--shard-next-bytes— inspect mode: group matching keys by this many bytes after--key-prefix.--list— inspect mode: list matching key/logical-value pairs instead of shardbucket_digestvalues.--list-limit— inspect mode: maximum pairs to print with--list(default1000; a value<= 0means unlimited).--details— inspect list mode: include backend-specific version metadata.--find-hash— optional 32-byte hex per-entry hash to hunt for. When twobucket_digestvalues differ by exactly one entry, their XOR is that entry’s hash; this prints every matching entry so a single diverging row can be located.
Autobahn (GigaRouter) Config Generation
When running with the Autobahn (GigaRouter) networking layer, you can generate the Autobahn JSON config from a set of node directories. Each directory must containvalidator_pubkey.txt, node_pubkey.txt, autobahn_address.txt, and evmrpc_url.txt. Unlike the key files, evmrpc_url.txt is not written automatically — operators must create it by hand with the node’s EVM RPC URL, and the command fails with an error if it is missing. The mempool_size field is no longer part of autobahn.json; remove it from existing config files.
--persistent-state-dir flag controls where autobahn persists its consensus and data write-ahead logs (WALs) across restarts. It defaults to data/autobahn, so persistence is enabled by default without any operator action; the consensus and data layers write to distinct subdirectories under this shared on-disk root. A relative path is resolved against the node’s --home directory at config load time, while absolute paths are used as-is. Passing an empty value (--persistent-state-dir=) disables persistence entirely, running both the consensus and data layers in-memory only. When set, the flag populates the PersistentStateDir field in the generated config.
The command reads the following files from each node directory:
validator_pubkey.txt— the validator public key invalidator:<pubkey>format.node_pubkey.txt— the p2p node public key innode:ed25519:public:<hex>format.autobahn_address.txt— the network address (host:port) the node advertises to peers.evmrpc_url.txt— the node’s EVM RPC URL, written into the validator’sevmrpcfield for cross-shard transaction proxying.
validator_pubkey.txt and node_pubkey.txt files are written automatically alongside priv_validator_key.json and node_key.json whenever those keys are saved, so they are typically already present in each node’s config directory.
The generated autobahn.json file describes the validator set along with transaction limits, block interval, view timeout, and dial interval; gas limits are not part of this file and come from the genesis block parameters instead. To have a node consume it, reference the file from config.toml using the autobahn-config-file key.
Giga Mode Behavior and Per-Block Limits
When a node is started in Giga mode — that is, whenautobahn-config-file is set in config.toml — the block production and networking behavior differs significantly from standard Tendermint consensus:
- The CometBFT
TxMempoolis not used. Under Giga the standard mempool (and its gossip reactor) is disabled entirely. Transactions instead route through the Autobahn producer-backed mempool. - Consensus reactor, state sync, and block sync are disabled. In Giga mode the consensus and state-sync reactors are skipped entirely, while the block-sync reactor still runs without a syncer; both state sync and block sync are forced off regardless of other configuration.
- Transactions are admitted through the producer mempool. The RPC broadcast endpoints call the producer’s
InsertTx/TryInsertTxrather than the CometBFT mempool’sCheckTx.BroadcastTxusesInsertTx, which blocks while the mempool is full; the async path callsTryInsertTxin the background and returns immediately, so when the mempool is full the transaction is silently dropped — themempool is fullerror fromTryInsertTxis never surfaced to async callers. - Sequential EVM nonce ordering is enforced. For EVM transactions, the producer mempool admits transactions strictly in nonce order per sender. A transaction whose nonce does not match the next expected nonce is rejected with a
bad nonceerror. Because admission is sequential, the mempool can track pending nonces (EvmNextPendingNonce) as callers submit them.
- Maximum transactions per block: the lower of the configured
max_txs_per_blockand the built-in maximum of 2,000 (see the transaction payload caps below). - Maximum total transaction bytes per block: a fixed per-block byte cap; a single transaction larger than this cap is rejected with a
transaction too largeerror. - Wanted gas per block (
MaxGasWantedPerBlock): derived from the genesisMaxGasWantedblock param. A transaction whoseGasWantedexceeds this per-block limit is rejected as too large. - Estimated gas per block (
MaxGasEstimatedPerBlock): derived from the genesisMaxGasblock param. A transaction whose (normalized) estimated gas exceeds this per-block limit is rejected as too large.
Autobahn Committee and Network Message Limits
Beyond the per-block payload limits, Giga mode enforces structural limits on the validator committee and on incoming consensus network messages:- Maximum validators per committee: the Autobahn committee is capped at a hard limit of 100 validators (
MaxValidators). Committee creation rejects any validator set exceeding this limit — building a committee from more than 100 validators fails with atoo many validatorserror rather than being silently truncated. - Bounded consensus network messages. Autobahn consensus protobuf messages carry declared size and count constraints that are checked against the raw wire bytes before the message is decoded. Payloads that violate these constraints are rejected during decoding, before any allocation, which protects nodes from oversized or malformed inputs that could otherwise decode into much larger in-memory structures.
- Per-field maximum sizes on fixed-width fields such as hashes, signatures, and public keys.
- Maximum repeated-field counts on validator-related lists — signature and quorum-certificate lists are capped at 100 entries (matching the 100-validator committee cap).
- Transaction payload caps: a block payload may carry at most 2,000 transactions, with a combined transaction byte budget of exactly 2,048,000 bytes (2,000 × 1,024) that may be split arbitrarily across the transactions in the payload — these are the built-in maxima referenced by the per-block limits above.
Because Giga replaces the CometBFT mempool, the
unsafe_flush_mempool RPC endpoint is not supported under Giga and returns unsafe_flush_mempool is not supported with autobahn mempool.Key Management
Proper key management is crucial for security. These commands help you manage your keys effectively:Transaction Commands
These commands allow you to interact with the blockchain:Configuration Parameters
Understanding configuration parameters is essential for optimizing your node’s performance and security.App.toml Parameters
The app.toml file controls application-specific settings:Complete app.toml Configuration
Complete app.toml Configuration
Config.toml Parameters
The config.toml file controls the core consensus engine and networking:Complete config.toml Configuration
Complete config.toml Configuration
The
[consensus] section may still parse a stateless-leader-election field, but it is deprecated and ignored. Stateless (seed-based) leader election is now always enabled regardless of the value set, so this field no longer has any effect. It is retained only for config-parsing compatibility and can be safely omitted.Network Parameters
Understanding network parameters helps you operate your node effectively.Chain Parameters
These parameters define the network’s behavior:These values reflect the current on-chain parameters. Query them directly with
seid query staking params and seid query slashing params for the source of truth. Per-validator settings (e.g. commission rate, commission max change rate) are configured per validator and are not chain-level parameters.File Locations
Understanding the purpose and location of important files helps with maintenance and troubleshooting:New nodes place the Tendermint consensus databases (blockstore, state, tx_index, evidence, peerstore, and cs.wal) under
data/tendermint/. Existing nodes that already have these databases in the legacy flat layout directly under data/ (e.g. data/blockstore.db, data/cs.wal/) continue using those legacy paths automatically — the legacy location takes precedence when present, so no migration is required.