Don't miss Build Games$1M Builder Competition

Overview

Create and manage temporary Avalanche networks for local development and testing

tmpnet creates temporary Avalanche networks on your local machine. You get a complete multi-node network with consensus, P2P communication, and pre-funded test keys—everything you need to test custom VMs, L1s, and applications before deploying to testnet or mainnet.

Networks run as native processes (no Docker needed). All configuration lives on disk at ~/.tmpnet/networks/, making it easy to inspect state, share configs, or debug issues.

What You Get

FeatureDescription
Multi-node networksSpin up 2-50 validator nodes in under a minute
Pre-funded keys50 keys with AVAX balances on P, X, and C-Chain
Custom VMsDeploy and test your Virtual Machines
SubnetsCreate subnets with specific validator sets
MonitoringPrometheus metrics and Promtail logs out of the box
CLI + Go APIUse tmpnetctl commands or Go code

Use Cases

ScenarioWhat You Can Test
L1 DevelopmentRun your L1 with multiple validators locally before deploying to Fuji
Custom VMsTest VM behavior with real consensus across multiple nodes
Staking OperationsAdd validators, test delegation, verify rewards distribution
Subnet TestingCreate subnets, manage validators, test cross-subnet messaging
Integration TestsWrite automated Go tests that spin up networks on demand

Basic Workflow

# Start a 5-node network
tmpnetctl start-network --avalanchego-path=./bin/avalanchego

# Network is running at ~/.tmpnet/networks/latest
# Get node URIs
cat ~/.tmpnet/networks/latest/NodeID-*/process.json | jq -r '.uri'

# Get pre-funded keys
cat ~/.tmpnet/networks/latest/config.json | jq -r '.preFundedKeys[0]'

# Stop when done
tmpnetctl stop-network

Network Directory Structure

Each network you create gets its own directory at ~/.tmpnet/networks/[timestamp]/:

PathContents
config.jsonNetwork settings, pre-funded keys
genesis.jsonGenesis configuration
NodeID-*/Per-node directories (logs, database, config)
NodeID-*/process.jsonRunning node info (PID, URI, ports)
metrics.txtGrafana dashboard link

The latest symlink always points to your most recent network.

Both tmpnetctl and your Go code can manage the same networks because everything is file-based. No daemon, no Docker, no magic.

Getting Started

Support & Resources

Is this guide helpful?