<!-- Canonical: https://docs.linea.build/network/how-to/run-a-node/maru -->

> For the complete Linea documentation index, see [llms.txt](/llms.txt).
> Agents can fetch this page as Markdown at [https://docs.linea.build/network/how-to/run-a-node/maru.md](https://docs.linea.build/network/how-to/run-a-node/maru.md).

# Maru

With Beta v4, Linea switched from a single to a dual-layer architecture, with both an execution layer and consensus layer client. While node runners have a choice of several execution layer clients (documented in this section), Maru is the only consensus layer client available.

Developed specifically for Linea, Maru replaces the Clique Proof of Authority consensus algorithm and introduces the [Quorum Byzantine Fault Tolerance](https://entethalliance.org/specs/qbft/v1/) (QBFT) consensus algorithm. Eventually, this change will mean Linea will be able to resemble Ethereum's decentralized sequencer system, where validators propose and confirm blocks. To start with, however, only one Linea-internal Maru node will produce blocks.

warning

You must run Maru alongside an execution layer client like [Besu](/network/how-to/run-a-node/besu) or [Geth](/network/how-to/run-a-node/geth).

## Run using Docker

There are two methods you can use to run Maru using Docker:

-   Clone the Linea monorepo and use `docker compose`
-   Clone the Linea monorepo and build a Maru Docker image locally from `maru/`.

-   Linea monorepo
-   Maru source

### Step 1. Clone monorepo

The files you need to run Maru are available in the Linea monorepo at the [`/docs/getting-started` directory](https://github.com/Consensys/linea-monorepo/tree/main/docs/getting-started), in either the [linea-mainnet](https://github.com/Consensys/linea-monorepo/tree/main/docs/getting-started/linea-mainnet) or [linea-sepolia](https://github.com/Consensys/linea-monorepo/tree/main/docs/getting-started/linea-sepolia) directories.

Clone the monorepo with:

```bash
git clone --depth 5 https://github.com/Consensys/linea-monorepo.git
```

### Step 2. Run `docker compose`

Navigate to one of the directories from step 1, and run:

```bash
docker compose up maru-node
```

### Step 1. Clone monorepo

Clone the Linea monorepo and enter the Maru directory:

```bash
git clone https://github.com/Consensys/linea-monorepo.git
cd linea-monorepo/maru
```

### Step 2. Run Maru

Run Maru using the following command:

```bash
make docker-run-stack
```

## Alternative: Run using the binary distribution

### Prerequisites

-   Java 25
-   [Make](https://www.gnu.org/software/make/make.html) 3.81

### Step 1. Clone the Linea monorepo

```bash
git clone https://github.com/Consensys/linea-monorepo.git
cd linea-monorepo/maru
```

### Step 2. Build the Maru binary

Run the following command to build a distribution:

```bash
./gradlew :app:installDist
```

### Step 3. Run Maru

Run the distribution with the following command:

```bash
./app/build/install/app/bin/app --network linea-mainnet --config=docker/maru/config.dev.toml
```

The distribution will be created in `app/build/install/app/` with all necessary dependencies included.

note

Maru supports named networks. Do not use `--network` and `--maru-genesis-file` together.
