Skip to main content
This document lists all CLI flags for the kona-node node subcommand, grouped by category. All flags can be provided as command-line arguments or via environment variables.
For more details on each flag, see the inline help (kona-node node --help) or the source code.

Default Ports

HTTP and WebSocket RPC share one TCP listener. WebSocket connections begin with an HTTP upgrade request on that same address and port. kona-node does not run a supervisor RPC server: the binary has no --supervisor.* flag group. Its only interop flag, --interop.dependency-set (KONA_NODE_INTEROP_DEPENDENCY_SET), takes a path to a dependency-set JSON file rather than a port. --conductor.rpc (KONA_NODE_CONDUCTOR_RPC) is not a listening port either. It is the RPC endpoint URL of an external conductor service that the node dials out to, and it has no default value. Supplying it enables the conductor integration when the node runs in sequencer mode (--mode sequencer); in validator mode it has no effect.

Core Node Arguments

Global Arguments

Chain ID Support

The --l2-chain-id flag supports flexible chain identification using the alloy_chains crate: Numeric Chain IDs:
String Chain Names:
Short Flag and Environment Variable:
Supported chain names include all those recognized by alloy_chains (e.g., optimism, base, mainnet). Unknown numeric chain IDs are accepted for custom networks.

P2P Arguments

Static peers

--p2p.static-peers lists peers that the node connects to directly and keeps connected, whatever discovery finds. Use it to make sure that a node, such as a sequencer, stays connected to the nodes it trusts.
Static peers don’t turn discovery off. On a chain in the superchain registry, discovery starts from the chain’s built-in bootnodes, even with no --p2p.bootnodes, and the node dials the peers saved in its bootstore. So the node still finds other nodes and connects to them, and they can find it. To connect only to static peers, also set --p2p.no-discovery, see running without discovery.
Each entry is a TCP multiaddr that ends in the peer’s ID:
  • Prefer /dns4/... addresses to /ip4/... ones. The name is resolved on every dial, so the list keeps working when a peer’s IP changes.
  • Repeat the flag, or give it a comma-separated list, as the environment variable needs. Spaces around entries are ignored, and an empty environment variable means no static peers.
  • The node doesn’t start if an address isn’t TCP or doesn’t end in /p2p/<peer id>.
  • Several addresses with the same peer ID make one peer, dialed at whichever address connects first.
  • The node ignores entries with its own peer ID, so every node in a group can use the same list.
A peer ID is derived from the node’s P2P private key. Give every static peer a fixed key with --p2p.priv.path or --p2p.priv.raw; without one, a node generates a new key, and so a new peer ID, each time it starts. To find a running node’s address, call opp2p_self: addresses lists its listen addresses with /p2p/<peer id> at the end. Replace the IP with the name or address other nodes reach it at. The node also logs its peer ID when it starts listening. To get the peer ID of a key file without running the node, use op-node p2p priv2id < key.txt, which works for kona keys too. The node treats its static peers as follows:
  • It dials them at startup, and once a minute dials those that aren’t connected. A static peer that disconnects is dialed again about a second later.
  • Static peers are exempt from the redial limit (--p2p.redial), are never banned for a low score, and stay protected after opp2p_unprotectPeer.
  • A static peer blocked with opp2p_blockPeer, or at a blocked address or subnet, isn’t dialed until it’s unblocked.
  • The node never passes its static peers on through discovery, so other nodes can’t find a static peer through it. A static peer can still be found if it runs discovery itself.
op-node calls this flag --p2p.static, which kona-node accepts too. The environment variable is KONA_NODE_P2P_STATIC_PEERS, not KONA_NODE_P2P_STATIC.

Running without discovery

With --p2p.no-discovery, the node doesn’t run Discv5:
  • It binds no UDP port, so --p2p.listen.udp may be in use by another process, and publishes no ENR.
  • It ignores --p2p.bootnodes, the chain’s built-in bootnodes and the bootstore.
  • It connects only to its static peers, to peers that dial it, and to peers added with opp2p_connectPeer. Other nodes can’t find it, so only the nodes given its address dial it.
It still exchanges blocks over gossip with the peers it’s connected to. A node can relay blocks between peers that aren’t connected to each other, such as the hub of a group whose members list only the hub as a static peer. The P2P RPC methods still answer. As op-node’s do when discovery is off, opp2p_self returns no ENR, opp2p_peerStats returns a table of 0, and opp2p_discoveryTable returns the error discovery disabled. opp2p_peerCount, which op-node doesn’t have, returns null for connectedDiscovery, and opp2p_peers returns no ENR and a chainID of 0 for each peer. op-conductor’s health check reads connected from opp2p_peerStats, which counts static peers. With discovery on, the node stops if discovery fails to start or stops later, even if it has static peers. The node finds its peers as follows: With discovery off, the node logs a warning at startup if no static peers are set, and if bootnodes are set, since it ignores them.

RPC Arguments

The RPC server starts once. If it stops unexpectedly, the node shuts down with an error.

Sequencer Arguments

Interop Arguments

kona-node does not run a supervisor RPC server, so there is no --supervisor.* flag group. --interop.dependency-set is the node’s only interop flag.

RPC Trust Flags

The --l1-trust-rpc and --l2-trust-rpc flags control whether Kona verifies the block hashes of RPC responses. For guidance on when to disable trust and worked examples for trusted, untrusted, and mixed provider setups, see configure RPC trust.

Default Behavior

Unless overridden by the flags above, a kona-node node run has the following defaults:
  • The P2P stack is spun up. The libp2p swarm listens on TCP 9222 to receive block gossip. The discv5 discovery service runs on UDP port 9223. Peer scoring is enabled.
  • An RPC server is exposed at 0.0.0.0:9545. Websocket connections are disabled by default.
  • Prometheus metrics are disabled. Enable them with the --metrics.enabled flag; metrics are then served on 0.0.0.0:9090, configurable via the --metrics.port and --metrics.addr flags.

Rollup Configuration Loading

If a file path to a rollup config is not specified via the --l2-config-file cli flag, the Rollup Config will be loaded via the superchain registry. A custom rollup config can either be specified through the --l2-config-file flag, or specific values may be overridden using a set of override flags provided by the kona-node. Override flags (for example --canyon-override) can be viewed in the help menu by running kona-node node --help. The only overrides currently supported are hardfork timestamps in seconds.