Node Configuration Settings

Node Configuration Settings

A node's algod process can be configured with a number of settings using the config.json file. The kmd process can also be configured by creating a kmd_config.json file in the kmd-version directory. For algod, there is an example file with the default setting values in the data directory of the node (config.json.example). If you change the name to config.json and restart the node, the new configuration will take effect. Available settings are shown in the following table. Note that there are specific settings for Relays in the list of settings. See table below for kmd settings.

algod Settings



Default Value


When true, the node is configured as an Archival node.  Archival nodes retain a full copy of the ledger (blockchain).  Non-Archival nodes will delete old blocks and only retain what's need to properly validate blockchain messages (currently the last 300 blocks).  This means non-Archival node ledgers can be significantly smaller than Archival node ledgers.  Relays (nodes with a valid NetAddress) are always Archival, regardless of this setting.  This may change in the future. If you are setting this to true for the first time, you may need to delete the existing ledger to get the historical values stored as the setting only effects current blocks forward. To do this, shutdown the node and delete all .sqlite files within the data/testnet-version directory, except the crash.sqlite file. In most cases this will just be one file. Restart the node and wait for the node to sync.


isIndexerActive This setting works in conjunction with the Archival setting. If Archival is set to false this setting does nothing. If it set to true, the node tracks all transactions stored on the node in an indexer and allows two additional REST calls for fast transaction searches. See Algorand Node Types for more information. false


The GossipFanout setting sets the maximum number of peers the node will connect to with outgoing connections. If the list of peers is less than this setting, fewer connections will be made.  The node will not connect to the same peer multiple times (with outgoing connections).



The address and/or port on which the relay node listens for incoming connections, or blank to ignore incoming connections. You can specify an IP and port or just a port. For example, will listen on a random port on the localhost.



Specifies, in seconds, how long the system should wait before trying to reconnect to a peer from which we have disconnected. Specified in seconds.



Specifies the logging level for algod (node.log).  The levels range from 0 (critical error / silent) to 5 (debug / verbose).

This setting is currently ignored.  In the future it will default to 4 ('Info' - fairly verbose).



Limits the number of incoming connections and is meant for relays. Normal nodes should not use this setting.



Configures the address the node listens to for REST API calls. You can specify an IP and port or just port. For example, will listen on a random port on the localhost (preferring 8080)




Specifies the name of a set of DNS SRV records that identify the set of nodes available to connect to.  <network> will be replaced by the genesis block’s network name.



Specifies the maximum size of the log file in bytes. Once full, the file will be renamed to node.archive.log and a new node.log will be created. Specified in bytes.



Maximum number of retries a node will attempt to sync.



Determines if the metrics service for a node is to be enabled.  This setting controls metrics being collected from this specific instance of algod.  If any instance has metrics enabled, machine-wide metrics are also collected.



Used to set the specific address for publishing metrics; the Prometheus server connects to this incoming port to retrieve metrics.



Specifies the path for the node_exporter binary; this binary is responsible for collecting metrics from the machine and from each node instance with metrics enabled.



Specifies the maximum size of the agreement.cdv file in bytes. Once full the file will be renamed to agreement.archive.log and a new agreement.cdv will be created. Specified in bytes.



Enables tracking the accounts with the highest balances and generating a telemetry event after each block. Should be disabled.



When the transaction pool is full, the priority of a new transaction must be at least TxPoolExponentialIncreaseFactor times greater than the minimum-priority of a transaction already in the pool (otherwise the new transaction is discarded).



The number of blocks to look back for computing the suggested fee.



The maximum number of transactions that a node's pending transaction pool can contain.



Time to wait for a Transaction Sync RPC call to return. Specified in seconds.



Interval between RPC calls to a random peer to sync from their transactions. Specified in seconds.


kmd Settings



Default Value


Configures the address the node listens to for REST API calls. You can specify an IP and port or just port. For example, will listen on a random port on the localhost (preferring 8080)



Configures the whitelist for allowed domains which can access the kmd process. You can specify an array of urls that will be white listed. ie {“allowed_origins”: [““, “”]}