This is the multi-page printable view of this section. Click here to print.
Simple Solo Setup
1 - System Readiness
Overview
Before you deploy a local Hiero test network with solo one-shot single deploy, your machine must meet specific hardware, operating system, and tooling requirements. This page walks you through the minimum and recommended memory, CPU, and storage, supported platforms (macOS, Linux, and Windows via WSL2), and the required versions of Docker/Podman, Node.js, and Kubernetes tooling. By the end of this page, you will have your container runtime installed, platform-specific settings configured, and all Solo prerequisites in place so you can move on to the Quickstart and create a local network with a single command.
Hardware Requirements
Solo’s resource requirements depend on your deployment size:
| Configuration | Minimum RAM | Recommended RAM | Minimum CPU | Minimum Storage |
|---|---|---|---|---|
| Single-node | 12 GB | 16 GB | 6 cores (8 recommended) | 20 GB free |
| Multi-node (3+ nodes) | 16 GB | 24 GB | 8 cores | 20 GB free |
Note: If you are using Docker Desktop, ensure the resource limits under Settings → Resources are set to at least these values - Docker caps usage independently of your machine’s total available memory.
Software Requirements
Solo manages most of its own dependencies depending on how you install it:
- Homebrew install (
brew install hiero-ledger/tools/solo) - automatically installs Node.js in addition to Solo. one-shotcommands — automatically install Kind, kubectl, Helm, and Podman (an alternative to Docker) if they are not already present.
You do not need to pre-install these tools manually before running Solo.
The only hard requirement before you begin is a container runtime - either Docker Desktop or Podman. Solo cannot install a container runtime on your behalf.
| Tool | Required Version | Where to get it |
|---|---|---|
| Node.js | >= 22.0.0 (lts/jod) | nodejs.org |
| Kind | >= v0.29.0 | kind.sigs.k8s.io |
| Kubernetes | >= v1.32.2 | Installed automatically by Kind |
| Kubectl | >= v1.32.2 | kubernetes.io |
| Helm | v3.14.2 | helm.sh |
| Docker | See Docker section below | docker.com |
| k9s (optional) | >= v0.27.4 | k9scli.io |
Docker
Solo requires Docker Desktop (macOS, Windows) or Docker Engine / Podman (Linux) with the following minimum resource allocation:
- Memory: at least 12 GB allocated to Docker.
- CPU: at least 6 cores allocated to Docker.
Configure Docker Desktop Resources
To allocate the required resources in Docker Desktop:
Open Docker Desktop.
Go to Settings > Resources > Memory and set it to at least 12 GB.
Go to Settings > Resources > CPU and set it to at least 6 cores.
Click Apply & Restart.
Note: If Docker Desktop does not have enough memory or CPU allocated, the one-shot deployment will fail or produce unhealthy pods.
Platform Setup
Solo supports macOS, Linux, and Windows via WSL2. Select your platform below to install the required container runtime and configure your environment, before proceeding to Quickstart:
Install Homebrew (if not already installed):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Install Docker Desktop:
- Download from: https://www.docker.com/products/docker-desktop
- Start Docker Desktop and allocate at least 12 GB of memory:
- Docker Desktop > Settings > Resources > Memory
Remove existing npm-based installs:
[[ "$(command -v npm >/dev/null 2>&1 && echo 0 || echo 1)" -eq 0 ]] && { npm uninstall -g @hashgraph/solo >/dev/null 2>&1 || /bin/true }Install Solo (this installs all other dependencies automatically):
brew tap hiero-ledger/tools brew update brew install soloVerify the installation:
solo --version
Install Homebrew for Linux:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Add Homebrew to your PATH:
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"Install Docker Engine (for Ubuntu/Debian):
sudo apt-get update sudo apt-get install -y docker.io sudo systemctl enable docker sudo systemctl start docker sudo usermod -aG docker ${USER}Log out and back in for the group changes to take effect.
Install kubectl:
sudo apt update && sudo apt install -y ca-certificates curl ARCH="$(dpkg --print-architecture)" curl -fsSLo kubectl "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/${ARCH}/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/bin/kubectlRemove existing npm-based installs:
[[ "$(command -v npm >/dev/null 2>&1 && echo 0 || echo 1)" -eq 0 ]] && { npm uninstall -g @hashgraph/solo >/dev/null 2>&1 || /bin/true }Install Solo (this installs all other dependencies automatically):
brew tap hiero-ledger/tools brew update brew install soloVerify the installation:
solo --version
Run the following command in Windows PowerShell (as Administrator), then reboot and open the Ubuntu terminal. All subsequent commands must be run inside the Ubuntu (WSL2) terminal.
wsl --install UbuntuInstall Homebrew for Linux:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Add Homebrew to your PATH:
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"Install Docker Desktop for Windows:
- Download from: https://www.docker.com/products/docker-desktop
- Enable WSL2 integration: Docker Desktop > Settings > Resources > WSL Integration
- Allocate at least 12 GB of memory: Docker Desktop > Settings > Resources > Memory
Install kubectl:
sudo apt update && sudo apt install -y ca-certificates curl ARCH="$(dpkg --print-architecture)" curl -fsSLo kubectl "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/${ARCH}/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/bin/kubectlRemove existing npm-based installs:
[[ "$(command -v npm >/dev/null 2>&1 && echo 0 || echo 1)" -eq 0 ]] && { npm uninstall -g @hashgraph/solo >/dev/null 2>&1 || /bin/true }Install Solo (this installs all other dependencies automatically):
brew tap hiero-ledger/tools brew update brew install soloVerify the installation:
solo --version
Important: Always run Solo commands from the WSL2 terminal, not from Windows PowerShell or Command Prompt.
Alternative Installation: npm (for contributors and advanced users)
If you need more control over dependencies or are contributing to Solo development, you can install Solo via npm instead of Homebrew.
Note: Node.js >= 22.0.0 and Kind must be installed separately before using this method.
npm install -g @hashgraph/solo
Optional Tools
The following tools are not required but are recommended for monitoring and managing your local network:
k9s (
>= v0.27.4): A terminal-based UI for managing Kubernetes clusters. Install it with:brew install k9sRun
k9sto launch the cluster viewer.
Version Compatibility Reference
The table below shows the full compatibility matrix for the current and recent Solo releases:
| Solo Version | Node.js | Kind | Solo Chart | Hedera | Kubernetes | Kubectl | Helm | k9s | Docker Resources | Release Date | End of Support |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.59.0 | >= 22.0.0 (lts/jod) | >= v0.29.0 | v0.62.0 | v0.71.0 | >= v1.32.2 | >= v1.32.2 | v3.14.2 | >= v0.27.4 | Memory >= 12 GB, CPU >= 6 cores | 2026-02-27 | 2026-03-27 |
| 0.58.0 (LTS) | >= 22.0.0 (lts/jod) | >= v0.29.0 | v0.62.0 | v0.71.0 | >= v1.32.2 | >= v1.32.2 | v3.14.2 | >= v0.27.4 | Memory >= 12 GB, CPU >= 6 cores | 2026-02-25 | 2026-05-25 |
| 0.57.0 | >= 22.0.0 (lts/jod) | >= v0.29.0 | v0.60.2 | v0.71.0 | >= v1.32.2 | >= v1.32.2 | v3.14.2 | >= v0.27.4 | Memory >= 12 GB, CPU >= 6 cores | 2026-02-19 | 2026-03-19 |
| 0.56.0 (LTS) | >= 22.0.0 (lts/jod) | >= v0.29.0 | v0.60.2 | v0.68.7-rc.1 | >= v1.32.2 | >= v1.32.2 | v3.14.2 | >= v0.27.4 | Memory >= 12 GB, CPU >= 6 cores | 2026-02-12 | 2026-05-12 |
| 0.55.0 | >= 22.0.0 (lts/jod) | >= v0.29.0 | v0.60.2 | v0.68.7-rc.1 | >= v1.32.2 | >= v1.32.2 | v3.14.2 | >= v0.27.4 | Memory >= 12 GB, CPU >= 6 cores | 2026-02-05 | 2026-03-05 |
| 0.54.0 (LTS) | >= 22.0.0 (lts/jod) | >= v0.29.0 | v0.59.0 | v0.68.6+ | >= v1.32.2 | >= v1.32.2 | v3.14.2 | >= v0.27.4 | Memory >= 12 GB, CPU >= 6 cores | 2026-01-27 | 2026-04-27 |
| 0.52.0 (LTS) | >= 22.0.0 (lts/jod) | >= v0.26.0 | v0.58.1 | v0.67.2+ | >= v1.27.3 | >= v1.27.3 | v3.14.2 | >= v0.27.4 | Memory >= 12 GB, CPU >= 6 cores | 2025-12-11 | 2026-03-11 |
For a list of legacy releases, see the legacy versions documentation.
Troubleshooting Installation
If you experience issues installing or upgrading Solo (for example, conflicts with a previous installation), you may need to clean up your environment first.
Warning: The commands below will delete Solo-managed Kind clusters and remove your Solo home directory (
~/.solo).
# Delete only Solo-managed Kind clusters (names starting with "solo")
kind get clusters | grep '^solo' | while read cluster; do
kind delete cluster -n "$cluster"
done
# Remove Solo configuration and cache
rm -rf ~/.solo
After cleaning up, retry the installation with:
brew install hiero-ledger/tools/solo
2 - Quickstart
Overview
Solo Quickstart provides a single, one-shot command path to deploy a running Hiero test network using the Solo CLI tool. This guide covers installing Solo, running the one-shot deployment, verifying the network, and accessing local service endpoints.
Note: This guide assumes basic familiarity with command-line interfaces and Docker.
Prerequisites
Before you begin, ensure you have completed the following:
- System Readiness:
- Prepare your local environment (Docker, Kind, Kubernetes, and related tooling) by following the System Readiness guide.
Note: Quickstart only covers what you need to run
solo one-shot single deployand verify that the network is working. Detailed version requirements, OS-specific notes, and optional tools are documented in System Readiness.
Install Solo CLI
Install the latest Solo CLI globally using one of the following methods:
Homebrew (recommended for macOS/Linux/WSL2):
brew install hiero-ledger/tools/solonpm (alternatively, install Solo via npm):
npm install -g @hashgraph/solo@latest
Verify the installation
Confirm that Solo is installed and available on your PATH:
solo --version
Expected output (version may be different):
** Solo **
Version : 0.59.1
**
If you see a similar banner with a valid Solo version (for example, 0.59.1), your installation is successful.
Deploy a local network (one-shot)
Use the one-shot command to create and configure a fully functional local Hiero network:
solo one-shot single deploy
This command performs the following actions:
- Creates or connects to a local Kubernetes cluster using Kind.
- Deploys the Solo network components.
- Sets up and funds default test accounts.
- Exposes gRPC and JSON-RPC endpoints for client access.
What gets deployed
| Component | Description |
|---|---|
| Consensus Node | Hiero consensus node for processing transactions. |
| Mirror Node | Stores and serves historical transaction data. |
| Explorer UI | Web interface for viewing accounts and transactions. |
| JSON RPC Relay | Ethereum-compatible JSON RPC interface. |
Multiple Node Deployment - for testing consensus scenarios
To deploy multiple consensus nodes, pass the --num-consensus-nodes flag:
solo one-shot multiple deploy --num-consensus-nodes 3
This deploys 3 consensus nodes along with the same components as the single-node setup (mirror node, explorer, relay).
Note: Multiple node deployments require more resources. Ensure you have at least 16 GB of memory and 8 CPU cores allocated to Docker before running this command. See System Readiness for the full multi-node requirements.
When finished, destroy the network as usual:
solo one-shot multiple destroy
Verify the network
After the one-shot deployment completes, verify that the Kubernetes workloads are healthy.
You can monitor the Kubernetes workloads with standard tools:
kubectl get pods -A | grep -v kube-system
Confirm that all Solo-related pods are in a Running or Completed state.
Tip: The Solo testing team recommends k9s for managing Kubernetes clusters. It provides a terminal-based UI that makes it easy to view pods, logs, and cluster status. Install it with
brew install k9sand runk9sto launch.
Access your local network
After the one-shot deployment completes and all pods are running, your local services are available at the following endpoints:
| Service | Endpoint | Description | Verfication |
|---|---|---|---|
| Explorer UI | http://localhost:38080 | Web UI for inspecting the network. | Open URL in your broswer to view the network explorer |
| Consensus node (gRPC) | localhost:35211 | gRPC endpoint for transactions. | nc -zv localhost 35211 |
| Mirror node REST API | http://localhost:38081 | REST API for queries. | http://localhost:38081/api/v1/transactions |
| JSON RPC relay | localhost:37546 | Ethereum-compatible JSON RPC endpoint. | curl -X POST http://localhost:37546 -H ‘Content-Type: application/json’ |
3 - Managing Your Network
Overview
This guide covers day-to-day management operations for a running Solo network, including starting, stopping, and restarting nodes, capturing logs, and upgrading the network.
Prerequisites
Before proceeding, ensure you have completed the following:
- System Readiness - your local environment meets all hardware and software requirements.
- Quickstart - you have a running Solo network deployed using
solo one-shot single deploy.
Find Your Deployment Name
Most management commands require your deployment name. Run the following command to retrieve it:
cat ~/.solo/cache/last-one-shot-deployment.txt
Expected output:
solo-deployment-<hash>
Use the value returned from this command as <deployment-name> in all commands on this page.
Stopping and Starting Nodes
Stop all nodes
Use this command to pause all consensus nodes without destroying the deployment:
solo consensus node stop --deployment <deployment-name>
Start nodes
Use this command to bring stopped nodes back online:
solo consensus node start --deployment <deployment-name>
Restart nodes
Use this command to stop and start all nodes in a single operation:
solo consensus node restart --deployment <deployment-name>
To verify pod status after any of the above commands, see Verify the network in the Quickstart guide.
Viewing Logs
To capture logs and diagnostic information for your deployment:
solo deployment diagnostics all --deployment <deployment-name>
Logs are saved to ~/.solo/logs/.
Expected output:
******************************* Solo *********************************************
Version : 0.59.1
Kubernetes Context : kind-solo
Kubernetes Cluster : kind-solo
Current Command : deployment diagnostics all --deployment <deployment-name>
**********************************************************************************
✔ Initialize [0.3s]
✔ Get consensus node logs and configs [15s]
✔ Get Helm chart values from all releases [2s]
✔ Downloaded logs from 10 Hiero component pods [1s]
✔ Get node states [10s]
Configurations and logs saved to /Users/<username>/.solo/logs
Log zip file network-node1-0-log-config.zip downloaded to /Users/<username>/.solo/logs/<deployment-name>
Helm chart values saved to /Users/<username>/.solo/logs/helm-chart-values
You can also retrieve logs for a specific pod directly using kubectl:
kubectl logs -n <namespace> <pod-name>
Replace
kubectl get pods -A | grep -v kube-system
Updating the Network
To update your consensus nodes to a new Hiero version:
solo consensus network upgrade --deployment <deployment-name> --upgrade-version <version>
Replace
Note: Check the Version Compatibility Reference in the System Readiness guide to confirm the Hiero version supported by your current Solo release before upgrading.
4 - Cleanup
Overview
This guide covers how to tear down a Solo network deployment, understand resource usage, and perform a full reset when needed.
Prerequisites
Before proceeding, ensure you have completed the following:
- Quickstart — you have a running Solo network deployed using
solo one-shot single deploy.
Destroying Your Network
Important: Always destroy your network before deploying a new one to avoid conflicts and errors.
To remove your Solo network:
solo one-shot single destroy
This command performs the following actions:
- Removes all deployed pods and services in the Solo namespace..
- Cleans up the Kubernetes namespace, which also removes associated PVCs when namespace deletion completes successfully.
- Deletes the Kind cluster.
- Updates Solo’s internal state.
Note:
solo one-shot single destroydoes not delete the underlying Kind cluster. If you created a Solo network on a local Kind cluster, the cluster remains until you delete it manually.
Failure modes and rerunning destroy
If solo one-shot single destroy fails part-way through (for example, due to an earlier deploy error), some resources may remain:
- The Solo namespace or one or more PVCs may not be deleted, which can leave Docker volumes appearing as “in use”.
- The destroy commands are designed to be idempotent, so you can safely rerun
solo one-shot single destroyto complete cleanup.
If rerunning destroy does not release the resources, use the Full Reset procedure below to force a clean state.
Resource Usage
Solo deploys a fully functioning mirror node that stores the transaction history generated by your local test network. During active testing, the mirror node’s resource consumption will grow as it processes more transactions. If you notice increasing resource usage, destroy and redeploy the network to reset it to a clean state.
Full Reset
Warning: This is a last resort procedure. Only use the Full Reset if
solo one-shot single destroyfails or your Solo state is corrupted. For normal teardown, always usesolo one-shot single destroyinstead.
# Delete only Solo-managed Kind clusters (names starting with "solo")
kind get clusters | grep '^solo' | while read cluster; do
kind delete cluster -n "$cluster"
done
# Remove Solo configuration and cache
rm -rf ~/.solo
Warning: The commands above will delete all Solo-managed Kind clusters and remove your Solo home directory (
~/.solo). Always use thegrep '^solo'filter when listing clusters - omitting it will delete every Kind cluster on your machine, including any unrelated to Solo.
After deleting the Kind cluster, Kubernetes resources (including namespaces and PVCs) and their associated volumes should be released. If Docker still reports unused volumes that you want to remove, you can optionally run:
# Optional: remove all unused Docker volumes
docker volume prune
Warning:
docker volume pruneremoves all unused Docker volumes on your machine, not just those created by Solo. Only run this command if you understand its impact.
- To redeploy after a full reset, follow the Quickstart guide.