Skip to main content
just localnet brings up a throwaway Boundless deployment against a local anvil chain. Use it to test requestor flows, broker config, and contract upgrades end-to-end without spending real funds. The stack runs in Docker and tears down with one command.

What’s in the stack

The broker service runs only when RISC0_DEV_MODE=1, which is the default. Test proofs are mocked and complete in seconds.

Prerequisites

You’ll need:
  • Docker and docker compose
  • Foundry (forge, cast, anvil)
  • Rust (the toolchain pinned in rust-toolchain.toml)
  • just
If your Docker daemon has "iptables": false in /etc/docker/daemon.json, containers will fail to resolve external DNS during the build. Either remove that flag and run sudo systemctl restart docker, or add an explicit "dns": ["8.8.8.8", "1.1.1.1"] entry. Without working in-container DNS, cargo and apt-get inside the build images cannot fetch dependencies.

First-time host build

Before the first just localnet up, build the host artifacts so the deployer container can pick up the assessor guest binary and Solidity bindings:
Terminal
forge build compiles the Solidity contracts and writes ABI artifacts under out/. cargo build produces the host binaries and triggers the RISC Zero guest build under target/riscv-guest/.
On a typical workstation the first cargo build takes 10–15 minutes. Subsequent runs are incremental and complete in seconds.

Bringing it up

From the root of the Boundless repo:
Terminal
This will:
  1. Create .env.localnet from .env.localnet-template if missing.
  2. Build all localnet container images (first run only).
  3. Start anvil, postgres, minio, run the deployer to deploy contracts and write addresses to .env.localnet, then start order-stream and the dev broker.
  4. Wait for every service to become healthy before returning.
Once it returns, the stack is ready. Confirm with:
Terminal
You should see anvil, broker, minio, order-stream, and postgres as Up (healthy).

Using the localnet

just localnet up populates .env.localnet with the values a requestor or prover client needs: RPC URLs, contract addresses, and a funded test wallet. Source it into your shell:
Terminal
The relevant values:
.env.localnet
With these set, you can submit a request through the Boundless CLI the same way you would against a real network. The in-stack broker picks it up and fulfils it in dev mode within seconds.

Logs and lifecycle

To tail logs across the whole stack:
Terminal
To stop the stack while preserving anvil state and MinIO artifacts:
Terminal
To stop and wipe all volumes and the generated .env.localnet (full reset):
Terminal
Localnet is for development only. The dev broker runs with RISC0_DEV_MODE=1, which produces fake (zero-cycle) proofs that the deployed verifier accepts in dev mode but real RISC Zero verifiers will reject. Do not use this stack to validate proving performance or to run a competitive prover.