Using Environment Variables

A comprehensive reference of all environment variables supported by Solo, including their purposes, default values, and expected formats. Configure Solo deployments through environment variable tuning.

Overview

Solo supports a set of environment variables that let you customize its behaviour without modifying command-line flags on every run. Variables set in your shell environment take effect automatically for all subsequent Solo commands.

Tip: Add frequently used variables to your shell profile (e.g. ~/.zshrc or ~/.bashrc) to persist them across sessions.

General

Environment VariableDescriptionDefault Value
SOLO_HOMEPath to the Solo cache and log files~/.solo
SOLO_CACHE_DIRPath to the Solo cache directory~/.solo/cache
SOLO_LOG_LEVELLogging level for Solo operations. Accepted values: trace, debug, info, warn, errorinfo
SOLO_DEV_OUTPUTTreat all commands as if the --dev flag were specifiedfalse
SOLO_CHAIN_IDChain ID of the Solo network298
FORCE_PODMANForce the use of Podman as the container engine when creating a new local cluster. Accepted values: true, falsefalse

Network and Node Identity

Environment VariableDescriptionDefault Value
DEFAULT_START_ID_NUMBERRaw node ID number for the first consensus node. The first node account ID is resolved as 0.0.<DEFAULT_START_ID_NUMBER>3
SOLO_NODE_INTERNAL_GOSSIP_PORTInternal gossip port used by the Hiero network50111
SOLO_NODE_EXTERNAL_GOSSIP_PORTExternal gossip port used by the Hiero network50111
SOLO_NODE_DEFAULT_STAKE_AMOUNTDefault stake amount for a node500
GRPC_PORTLocal port-forward for consensus node gRPC. Default is 35211 for Solo 0.63+ (changed from 50211 to avoid Windows ephemeral-port conflicts). See Port availability.35211
LOCAL_NODE_START_PORTLocal node start port for the Solo network30212

Operator and Key Configuration

Environment VariableDescriptionDefault Value
SOLO_OPERATOR_IDOperator account ID for the Solo network0.0.2
SOLO_OPERATOR_KEYOperator private key for the Solo network302e020100...
SOLO_OPERATOR_PUBLIC_KEYOperator public key for the Solo network302a300506...
FREEZE_ADMIN_ACCOUNTFreeze admin account ID for the Solo network0.0.58
GENESIS_KEYGenesis private key for the Solo network302e020100...

Note: Full key values are omitted above for readability. Refer to the source defaults for complete key strings.


Node Client Behaviour

Environment VariableDescriptionDefault Value
NODE_CLIENT_MIN_BACKOFFMinimum wait time between retries, in milliseconds1000
NODE_CLIENT_MAX_BACKOFFMaximum wait time between retries, in milliseconds1000
NODE_CLIENT_REQUEST_TIMEOUTTime a transaction or query retries on a “busy” network response, in milliseconds600000
NODE_CLIENT_MAX_ATTEMPTSMaximum number of attempts for node client operations600
NODE_CLIENT_SDK_PING_MAX_RETRIESMaximum number of retries for node health pings5
NODE_CLIENT_SDK_PING_RETRY_INTERVALInterval between node health ping retries, in milliseconds10000
NODE_COPY_CONCURRENTNumber of concurrent threads used when copying files to a node4
LOCAL_BUILD_COPY_RETRYNumber of retries for local build copy operations3
ACCOUNT_UPDATE_BATCH_SIZENumber of accounts to update in a single batch operation10

Pod and Network Readiness

Environment VariableDescriptionDefault Value
PODS_RUNNING_MAX_ATTEMPTSMaximum number of attempts to check if pods are running900
PODS_RUNNING_DELAYInterval between pod running checks, in milliseconds1000
PODS_READY_MAX_ATTEMPTSMaximum number of attempts to check if pods are ready300
PODS_READY_DELAYInterval between pod ready checks, in milliseconds2000
NETWORK_NODE_ACTIVE_MAX_ATTEMPTSMaximum number of attempts to check if network nodes are active300
NETWORK_NODE_ACTIVE_DELAYInterval between network node active checks, in milliseconds1000
NETWORK_NODE_ACTIVE_TIMEOUTMaximum wait time for network nodes to become active, in milliseconds1000
NETWORK_PROXY_MAX_ATTEMPTSMaximum number of attempts to check if the network proxy is running300
NETWORK_PROXY_DELAYInterval between network proxy checks, in milliseconds2000
NETWORK_DESTROY_WAIT_TIMEOUTMaximum wait time for network teardown to complete, in milliseconds120

Block Node

Environment VariableDescriptionDefault Value
BLOCK_NODE_PODS_RUNNING_MAX_ATTEMPTSMaximum number of attempts to check if block node pods are running900
BLOCK_NODE_PODS_RUNNING_DELAYInterval between block node pod running checks, in milliseconds1000
BLOCK_NODE_ACTIVE_MAX_ATTEMPTSMaximum number of attempts to check if block nodes are active100
BLOCK_NODE_ACTIVE_DELAYInterval between block node active checks, in milliseconds60
BLOCK_NODE_ACTIVE_TIMEOUTMaximum wait time for block nodes to become active, in milliseconds60
BLOCK_STREAM_STREAM_MODEThe blockStream.streamMode value in consensus node application properties. Only applies when a Block Node is deployedBOTH
BLOCK_STREAM_WRITER_MODEThe blockStream.writerMode value in consensus node application properties. Only applies when a Block Node is deployedFILE_AND_GRPC

Relay Node

Environment VariableDescriptionDefault Value
RELAY_PODS_RUNNING_MAX_ATTEMPTSMaximum number of attempts to check if relay pods are running900
RELAY_PODS_RUNNING_DELAYInterval between relay pod running checks, in milliseconds1000
RELAY_PODS_READY_MAX_ATTEMPTSMaximum number of attempts to check if relay pods are ready100
RELAY_PODS_READY_DELAYInterval between relay pod ready checks, in milliseconds1000

Load Balancer

Environment VariableDescriptionDefault Value
LOAD_BALANCER_CHECK_DELAY_SECSDelay between load balancer status checks, in seconds5
LOAD_BALANCER_CHECK_MAX_ATTEMPTSMaximum number of attempts to check load balancer status60

Lease Management

Environment VariableDescriptionDefault Value
SOLO_LEASE_ACQUIRE_ATTEMPTSNumber of attempts to acquire a lock before failing10
SOLO_LEASE_DURATIONDuration in seconds for which a lock is held before expiration20

Component Versions

Environment VariableDescription
CONSENSUS_NODE_VERSIONRelease version of the Consensus Node to use
BLOCK_NODE_VERSIONRelease version of the Block Node to use
MIRROR_NODE_VERSIONRelease version of the Mirror Node to use
EXPLORER_VERSIONRelease version of the Explorer to use
RELAY_VERSIONRelease version of the JSON-RPC Relay to use
INGRESS_CONTROLLER_VERSIONRelease version of the HAProxy Ingress Controller to use
SOLO_CHART_VERSIONRelease version of the Solo Helm charts to use
MINIO_OPERATOR_VERSIONRelease version of the MinIO Operator to use
PROMETHEUS_STACK_VERSIONRelease version of the Prometheus Stack to use
GRAFANA_AGENT_VERSIONRelease version of the Grafana Agent to use

Tip: To pin component versions for a solo one-shot single deploy, prefix the command with these variables. See the One-Shot Deployment section below for an example.


Helm Chart URLs

Environment VariableDescriptionDefault Value
JSON_RPC_RELAY_CHART_URLHelm chart repository URL for the JSON-RPC Relayhttps://hiero-ledger.github.io/hiero-json-rpc-relay/charts
MIRROR_NODE_CHART_URLHelm chart repository URL for the Mirror Nodehttps://hashgraph.github.io/hedera-mirror-node/charts
EXPLORER_CHART_URLHelm chart repository URL for the Exploreroci://ghcr.io/hiero-ledger/hiero-mirror-node-explorer/hiero-explorer-chart
INGRESS_CONTROLLER_CHART_URLHelm chart repository URL for the ingress controllerhttps://haproxy-ingress.github.io/charts
PROMETHEUS_OPERATOR_CRDS_CHART_URLHelm chart repository URL for the Prometheus Operator CRDshttps://prometheus-community.github.io/helm-charts
NETWORK_LOAD_GENERATOR_CHART_URLHelm chart repository URL for the Network Load Generatoroci://swirldslabs.jfrog.io/load-generator-helm-release-local

Network Load Generator

Environment VariableDescriptionDefault Value
NETWORK_LOAD_GENERATOR_CHART_VERSIONRelease version of the Network Load Generator Helm chart to usev0.7.0
NETWORK_LOAD_GENERATOR_PODS_RUNNING_MAX_ATTEMPTSMaximum number of attempts to check if Network Load Generator pods are running900
NETWORK_LOAD_GENERATOR_POD_RUNNING_DELAYInterval between Network Load Generator pod running checks, in milliseconds1000

One-Shot Deployment

Environment VariableDescriptionDefault Value
ONE_SHOT_WITH_BLOCK_NODEDeploy Block Node as part of a one-shot deploymentfalse
MIRROR_NODE_PINGER_TPSTransactions per second for the Mirror Node monitor pinger. Set to 0 to disable5
CONSENSUS_NODE_EDGE_VERSIONEdge (newer-than-default) consensus node version used by --edge in one-shot deploys. Falls back to CONSENSUS_NODE_VERSION.v0.74.0-rc.1
MIRROR_NODE_EDGE_VERSIONEdge mirror node version used by --edge in one-shot deploys. Falls back to MIRROR_NODE_VERSION.v0.153.1
EXPLORER_EDGE_VERSIONEdge explorer version used by --edge in one-shot deploys. Falls back to EXPLORER_VERSION.26.0.0
RELAY_EDGE_VERSIONEdge relay version used by --edge in one-shot deploys. Falls back to RELAY_VERSION.0.76.2
BLOCK_NODE_EDGE_VERSIONEdge block node version used by --edge in one-shot deploys. Falls back to BLOCK_NODE_VERSION.0.31.0

Pinning Component Versions

solo one-shot single deploy does not yet expose CLI flags for pinning individual component versions. To run a one-shot deployment against specific releases, prefix the command with the Component Versions environment variables:

CONSENSUS_NODE_VERSION=v0.73.0 MIRROR_NODE_VERSION=v0.153.1 solo one-shot single deploy

Any of the *_VERSION variables listed in Component Versions can be combined in the same command to pin multiple components at once.

Note:

  • This is the current recommended approach for version pinning in one-shot deployments.
  • CLI flags for version overrides on one-shot are planned for Q2 — tracked in hiero-ledger/solo#4242.
  • Environment variables will remain valid for one-off overrides after the CLI flags land, so the form above will continue to work.
Last modified May 18, 2026: save (#154) (29f612d)