> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sundialprotocol.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Run an operator node

> What a Sundial L2 operator does, what it needs, and how to bring up the reference node with Docker Compose.

An operator receives L2 transactions, assembles blocks, publishes them and commits their headers to L1 during its shift. This guide explains the role and points you to the deployment steps.

> [!NOTE]
>
> You can run the reference node today against your own instance on Cardano Preprod, Preview or a local emulator.

## What an operator commits to

* **A bond.** You post a bond in ADA when you register. It is forfeited if a block you commit is proven fraudulent.
* **Valid blocks.** Every block you commit must satisfy the [ledger rules](https://docs.sundialprotocol.com/l2/fraud-proofs.md#ledger-rules) and include every L1 event whose inclusion time falls in its interval.
* **Availability.** You publish each full block so that watchers can check it.
* **Liveness.** Operators that don't commit during their shift receive strikes, and can be partly slashed and retired.

[Consensus](https://docs.sundialprotocol.com/l2/consensus.md) describes the full lifecycle: register, wait, activate, retire, recover the bond.

## How you join

1. **Register** by posting `required_bond` in a transaction that adds you to the registered operators queue.
2. **Wait** for `registration_duration`.
3. **Activate**, after which the scheduler gives you shifts.
4. **Commit blocks** during your shifts.

The [Midgard SDK](https://docs.sundialprotocol.com/sdk/midgard-sdk.md) builds these L1 transactions.

## What the node needs

| Requirement | Detail |
| - | - |
| Node role | `sequencer`, or `all` for a single-process node |
| Seed phrases | Three, with separate duties: the main operator wallet, block commitments, and merges |
| L1 provider | Blockfrost, or Kupo with Ogmios |
| PostgreSQL | Version 15 |
| Redis | Version 7 or later |
| Storage | A volume for the trie stores |

> [!WARNING]
>
> Use three distinct seed phrases. Don't reuse any of them for a faucet wallet. The node refuses to start if it detects reuse.

### Node roles

| Role | What it does |
| - | - |
| `api` | Receives transactions over HTTP and queues them |
| `tx-processor` | Reads the queue, validates transactions and inserts them into the mempool. You can run several. |
| `sequencer` | Builds blocks, commits headers to L1, syncs L1 user events and merges mature blocks |
| `all` | All three in one process. The default. |

## Bring up a node

**1. Deploy**

Follow [Deploy a layer node](https://docs.sundialprotocol.com/operators/layer-node.md) to start the node with Docker Compose, including PostgreSQL, Redis and the monitoring stack.

**2. Configure**

Set the L1 provider, network, seed phrases and timing values. [Node configuration](https://docs.sundialprotocol.com/operators/configuration.md) lists every variable.

**3. Check health**

```bash theme={null}
curl -fsS http://localhost:3000/health/live
curl -fsS http://localhost:3000/health/ready
```

`ready` checks the database, Redis and the L1 provider, and names whichever is failing.

**4. Watch it run**

Open Grafana at `http://localhost:3001` and confirm that blocks are being committed.

## Hardware

The whitepaper's benchmark runs used a single host with 6 CPUs and 31 GB of memory for the node, PostgreSQL, Redis and monitoring together. That host sustained 1,000 transactions per second of accepted load. See [Performance](https://docs.sundialprotocol.com/l2/performance.md).

## Before a public deployment

* Put a reverse proxy, gateway or firewall in front of the node for authentication, rate limiting and request-size limits.
* Load secrets from a secrets manager, not from plain environment values.
* Keep the faucet disabled unless you are running a testnet.

See [Security model](https://docs.sundialprotocol.com/l2/security-model.md#for-node-operators).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.