How to create a virtual network
Create a simulator network or localnet with project wallets and custom genesis configuration through Studio or the CLI
Create an isolated network for scripts and application integration tests.
Prerequisites
- Acton 1.2 or later installed.
- An Acton project containing
Acton.toml. - For startup accounts, configure project wallets. The CLI examples use
deployer. - For localnet, a running Docker engine with Compose v2, as specified in the localnet requirements.
Create the network
Start Studio from the project root:
acton studio- Open Virtual environments → Create environment.
- Select Simulator or Localnet and enter a name.
- For a simulator, keep Clean network or choose a public-network fork.
- Select project wallets under Startup accounts, or clear the selection for no startup wallets.
- Select Create environment and wait for readiness. Open the resulting environment.
Studio preselects [localnet].accounts, but initializes only the wallets submitted in the form. Each selected wallet starts with 100 GRAM.

Start a persistent network on port 5411:
acton simulator start --port 5411 --db-path .acton/simulator.sqlite --accounts deployerThe deployer must be a configured wallet. Omit --accounts to use [localnet].accounts, or pass --accounts "" to select none. Keep this terminal open.
In another terminal, inspect readiness:
acton simulator status --port 5411 --jsonConfigure defaults in Acton.toml; explicit flags override them.
Create a named network and leave it running in the background:
acton localnet start dev --port-base 19000 --accounts deployer --detach
acton localnet status dev --jsonThe command waits for readiness and prints endpoint URLs.
Without --detach, a newly launched service stays in the foreground and Ctrl+C would stop it.
The deployer must be a configured wallet. Omit --accounts to use [localnet].accounts, or pass --accounts "" for no project wallets.
The port range 19000–19005 must be free. Omit --port-base to let Acton choose a range.
These options apply to new networks. Resume an existing network without creation options.
Use a custom genesis
A localnet genesis defines the initial account balances and network rules. You can change validator stakes, election timing, consensus, fees, sharding, block limits, and configuration voting.
Create a separate genesis.toml file with the values you need. This example sets a network identifier and a 500 ms block target:
global_id = -42
simplex_target_rate_ms = 500Missing fields use local development defaults. You do not need to copy the complete configuration into your file.
In Create environment, select Localnet. Open Genesis configuration before you create the network.
- Import genesis.toml loads your file into the form.
- The field groups let you edit individual values without a file.
- Export genesis.toml saves the complete configuration, including defaults.
- Reset defaults restores the local development configuration.
Studio highlights invalid values and related fields with an explanation. For example, Elections start offset must be less than Validator round duration. Correct the highlighted values before you create the network.
Pass the file when you start a new network:
acton localnet start custom --genesis genesis.toml --detachTo save the configuration without starting Docker, use acton localnet create custom --genesis genesis.toml instead.
The ACTON_LOCALNET_GENESIS environment variable can also supply the file path. An explicit --genesis path takes precedence. Acton does not automatically load genesis.toml from the project directory.
Explicit --block-time-ms and --election-time-seconds values override the corresponding genesis timing values. Acton checks the configuration before it starts Docker.
Acton saves the complete configuration with the network. Later changes to the source file do not affect that network. To use a different genesis, create a new network.
To resume a saved network, omit creation flags such as --genesis. If you set ACTON_LOCALNET_GENESIS in your shell, unset it before you resume the network.
Balances and stakes use whole GRAM. Other fields can use nanograms, seconds, milliseconds, or scaled prices. See the genesis reference for field groups, units, and constraints.
Verify and continue
- In the Studio, confirm the environment is running and open Home.
- From the CLI, confirm
running: truefor the simulator orstatus: "running"for localnet.
Next, connect scripts and applications using the reported URLs.
Last updated on