Skip to main content
Version: 0.15 (unstable)

Local Network Development

Use this guide to start a disposable Miden network for local development and testing. The provided Docker Compose setup includes the local network, monitoring, and trace collection, so you can develop against a working environment without wiring the network services manually.

The compose files live in the repository: docker-compose.yml in the root and supporting files under compose/. The guide uses make targets as shorthand for the underlying Docker image builds and Docker Compose commands; check the Makefile when you need the exact command.

This is not a production deployment guide and it is not the path for independent full node runners on an existing network.

Prerequisites

  • Git
  • Docker with Docker Compose support
  • make

Check Out a Version

Prefer a release tag when testing against released artifacts. Use a branch when developing against the current repository state.

git clone https://github.com/0xMiden/node.git
cd node
git checkout <release-tag-or-branch>

Local Network Commands

Build the images after checkout or whenever you need fresh local images. The local network stores data in the node-data Docker volume; local-network-down keeps that data, while local-network-delete removes it.

# Build the Docker images used by the local network.
make local-network-build

# Start the local network.
make local-network-up

# Follow container logs.
#
# Logs are useful for startup checks; use Tempo traces for request-level debugging.
make local-network-logs

# Stop the local network, preserving the local chain data volume.
make local-network-down

# Stop the local network and delete the local chain data volume.
make local-network-delete

After make local-network-delete, run make local-network-up to bootstrap a fresh local chain.

Exposed Endpoints

Published ports are bound to localhost; the following services are available:

ServiceURLPurpose
RPC APIhttp://localhost:57291Submit transactions and query local chain state.
Grafanahttp://localhost:3000Inspect dashboards and traces.
Network monitorhttp://localhost:3001View local network health.
Tempo HTTP APIhttp://localhost:3200Query stored trace data.
Tempo OTLP gRPChttp://localhost:4317Receive OpenTelemetry traces from services.

Monitoring and Traces

The local network exports OpenTelemetry traces to Tempo. Grafana is preconfigured with Tempo as a data source, so use http://localhost:3000 to inspect traces when a request fails, stalls, or behaves differently than expected.

Container logs are still useful for startup failures and quick checks, but traces usually provide a better view of how a request moved through the local network.

The network monitor at http://localhost:3001 provides a compact health view for the running local network.

Prover Override

The default stack spins up an internal prover instance which means proving will happen locally. This can be overridden to use an external prover by setting MIDEN_REMOTE_PROVER_URL when starting the stack.

Check the RPC API

The RPC server exposes gRPC reflection. With grpcurl installed, a basic status check looks like:

grpcurl -plaintext localhost:57291 rpc.Api/Status

Note the -plaintext flag, the local network does not use TLS.

Use the gRPC API section for the public RPC surface and streaming endpoints.