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

# Operator Toolbox

> Every tool for monitoring, verifying, and operating your Livepeer orchestrator – Explorer, Prometheus metrics, Docker monitoring stack, community dashboards, and capability testing utilities.

export const CustomDivider = ({color = "var(--lp-color-border-default)", middleText = "", spacing = "default", style = {}, className = "", ...rest}) => {
  const spacingPresets = {
    default: {
      margin: "24px 0"
    },
    overlap: {
      margin: "-1rem 0 -1rem 0"
    },
    tight: {
      margin: "0 0 -1rem 0"
    },
    section: {
      margin: "0 0 -2rem 0"
    },
    sectionOverlap: {
      margin: "-1rem 0 -2rem 0"
    },
    deepOverlap: {
      margin: "-1rem 0 -1.5rem 0"
    }
  };
  const spacingStyle = spacingPresets[spacing] || spacingPresets.default;
  return <div role="separator" aria-orientation="horizontal" className={className} style={{
    display: "flex",
    alignItems: "center",
    ...spacingStyle,
    fontSize: style?.fontSize || "16px",
    height: "fit-content",
    ...style
  }} {...rest}>
      <span style={{
    marginRight: "var(--lp-spacing-px-8)",
    opacity: 0.2
  }}>
        <Icon icon="/snippets/assets/logos/Livepeer-Logo-Symbol-Theme.svg" />
      </span>
      <div style={{
    flex: 1,
    height: "1px",
    background: "var(--lp-color-border-default)",
    opacity: 0.4
  }}></div>
      {middleText && <>
          <Icon icon="circle" size={2} />
          <span style={{
    margin: "0 8px",
    fontWeight: "bold",
    color: color,
    opacity: 0.7
  }}>
            {middleText}
          </span>
          <Icon icon="circle" size={2} />
        </>}
      <div style={{
    flex: 1,
    height: "1px",
    background: "var(--lp-color-border-default)",
    opacity: 0.4
  }}></div>
      <span style={{
    marginLeft: "var(--lp-spacing-px-8)",
    opacity: 0.2
  }}>
        <span style={{
    display: "inline-block",
    transform: "scaleX(-1)"
  }}>
          <Icon icon="/snippets/assets/logos/Livepeer-Logo-Symbol-Theme.svg" />
        </span>
      </span>
    </div>;
};

export const TableCell = ({children, align = "left", header = false, style = {}, className = "", ...rest}) => {
  const Component = header ? "th" : "td";
  return <Component className={className} style={{
    padding: "0.75rem 1rem",
    textAlign: align,
    border: header ? "none" : "1px solid var(--lp-color-border-default)",
    ...style
  }} {...rest}>
      {children}
    </Component>;
};

export const TableRow = ({children, header = false, hover = false, style = {}, className = "", ...rest}) => {
  const rowId = `table-row-${Math.random().toString(36).substr(2, 9)}`;
  return <>
      {hover && <style>{`
          #${rowId}:hover {
            background-color: var(--lp-color-bg-card);
          }
        `}</style>}
      <tr id={rowId} className={className} style={{
    ...header && ({
      backgroundColor: "var(--lp-color-accent-strong)",
      color: "var(--lp-color-on-accent)",
      fontWeight: "bold"
    }),
    ...style
  }} {...rest}>
        {children}
      </tr>
    </>;
};

export const StyledTable = ({children, variant = "default", style = {}, className = "", ...rest}) => {
  const wrapperVariants = {
    default: {
      border: "1px solid var(--lp-color-border-default)",
      backgroundColor: "var(--lp-color-bg-card)",
      overflow: "hidden"
    },
    bordered: {
      border: "2px solid var(--lp-color-accent)",
      backgroundColor: "var(--lp-color-bg-page)",
      overflow: "hidden"
    },
    minimal: {
      border: "none",
      backgroundColor: "transparent",
      overflow: "visible"
    }
  };
  return <div data-docs-styled-table-shell className={className} style={{
    width: "100%",
    padding: 0,
    margin: 0,
    ...wrapperVariants[variant],
    ...style
  }} {...rest}>
      <table data-docs-styled-table style={{
    width: "100%",
    borderCollapse: "collapse",
    borderSpacing: 0,
    margin: 0,
    backgroundColor: "transparent"
  }}>
        {children}
      </table>
    </div>;
};

Your node is running. These are the tools you reach for when you want to verify you are in the Active Set, track earnings, diagnose a routing problem, monitor GPU health, or understand what the network is doing.

<CustomDivider />

## Livepeer Explorer

**URL:** [explorer.livepeer.org](https://explorer.livepeer.org)

The Explorer is the authoritative on-chain dashboard for the Livepeer Protocol. It reads directly from the Arbitrum subgraph, so everything you see here reflects current on-chain state.

**Your Orchestrator profile lives at:**

```text icon="terminal" title="Explorer orchestrator profile URL" theme={"theme":{"light":"github-light","dark":"dark-plus"}}
https://explorer.livepeer.org/accounts/<your-address>/orchestrating
```

<CardGroup cols={2}>
  <Card title="Active Set and Stake" icon="ranking-star">
    See your rank by total stake (own + delegated). The top 100 active Orchestrators receive transcoding work. Check here to confirm you are in the set and track your rank trend.
  </Card>

  <Card title="Reward Call History" icon="clock-rotate-left">
    Round-by-round history of reward calls. Missed rounds mean lost inflation – for you and your Delegators. Target is 100% call rate. Any gaps here warrant investigation.
  </Card>

  <Card title="Earnings" icon="coins">
    Cumulative ETH transcoding fees and LPT inflation rewards. Use this to verify your node is earning and to track long-term trend.
  </Card>

  <Card title="Governance" icon="landmark">
    Vote on Livepeer Improvement Proposals and treasury proposals directly from the Explorer interface.
  </Card>
</CardGroup>

**Also on the Explorer:**

* Your published Reward Cut and fee share – verify these match what you configured on-chain
* Your Delegator list, with individual stake amounts and unbonding status
* Rounds active (your seniority on the network)

<Note>
  The Explorer shows on-chain data only. Worker-level data for pool contributors lives outside Explorer, and off-chain pool payouts do not appear there. For AI model warm status, use [tools.Livepeer.cloud/ai/network-capabilities](https://tools.livepeer.cloud/ai/network-capabilities).
</Note>

<CustomDivider />

## Node Metrics (Prometheus)

go-livepeer exposes a standard Prometheus metrics endpoint. Scrape it with any monitoring stack.

**Enable metrics with the `-monitor` flag:**

```bash icon="terminal" title="Enable Prometheus metrics" theme={"theme":{"light":"github-light","dark":"dark-plus"}}
livepeer \
  -orchestrator \
  -transcoder \
  -monitor \
  -metricsPerStream \
  # ... Other flags
```

**Flags:**

<StyledTable variant="bordered">
  <TableRow header>
    <TableCell header>Flag</TableCell>
    <TableCell header>Effect</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>`-monitor`</TableCell>
    <TableCell>Enables the `/metrics` endpoint on port 7935</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>`-metricsPerStream`</TableCell>
    <TableCell>Groups performance metrics per stream – useful for debugging individual sessions</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>`-metricsClientIP`</TableCell>
    <TableCell>Exposes client IP in metrics – useful for identifying which Gateway is sending work</TableCell>
  </TableRow>
</StyledTable>

**Endpoint:** `http://localhost:7935/metrics`

**Key metric categories exposed:**

* Session count and capacity utilisation
* Segment success and failure rates by stream
* Winning ticket counts (probabilistic approximation)
* Job processing latency
* GPU utilisation

For the full metric reference, see the [Prometheus Metrics Reference](/v2/Orchestrators/guides/monitoring-and-tooling/metrics-and-alerting).

### Docker monitoring stack (fastest setup)

Livepeer maintains a Docker image that bundles Prometheus and Grafana with starter dashboard templates:

```bash icon="terminal" title="Docker monitoring stack for a single node" theme={"theme":{"light":"github-light","dark":"dark-plus"}}
# Single node
docker run --net=host \
  --env LP_MODE=standalone \
  --env LP_NODES=localhost:7935 \
  livepeer/monitoring:latest
```

```bash icon="terminal" title="Docker monitoring stack for multiple nodes" theme={"theme":{"light":"github-light","dark":"dark-plus"}}
# Multi-node
docker run --net=host \
  --env LP_MODE=standalone \
  --env LP_NODES=node1.example.com:7935,node2.example.com:7935 \
  livepeer/monitoring:latest
```

**Environment variable options:**

<StyledTable variant="bordered">
  <TableRow header>
    <TableCell header>Variable</TableCell>
    <TableCell header>Values</TableCell>
    <TableCell header>Description</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>`LP_MODE`</TableCell>
    <TableCell>`standalone`, `docker-compose`, `kubernetes`</TableCell>
    <TableCell>Deployment mode</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>`LP_NODES`</TableCell>
    <TableCell>Comma-separated `host:port` list</TableCell>
    <TableCell>Nodes to monitor</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>`LP_KUBE_NAMESPACES`</TableCell>
    <TableCell>Comma-separated namespaces</TableCell>
    <TableCell>For Kubernetes deployments</TableCell>
  </TableRow>
</StyledTable>

For Kubernetes, pods with the `prometheus.io/scrape` label are discovered automatically.

<Card title="livepeer/livepeer-monitoring" icon="github" href="https://github.com/livepeer/livepeer-monitoring">
  Source, Dockerfile, and Prometheus.yml for the monitoring supercontainer.
</Card>

### Custom Prometheus setup

Add this to your `prometheus.yml` to scrape go-livepeer directly:

```yaml icon="terminal" title="Prometheus scrape config" theme={"theme":{"light":"github-light","dark":"dark-plus"}}
scrape_configs:
  - job_name: 'livepeer'
    static_configs:
      - targets: ['localhost:7935']
    scrape_interval: 15s
```

<CustomDivider />

## Cloud SPE Tools

**URL:** [tools.Livepeer.cloud](https://tools.livepeer.cloud)

A community-built suite of Orchestrator and network monitoring tools, maintained by the Cloud SPE.

**Key sections:**

* **AI network capabilities** (`/ai/network-capabilities`) – lists all AI-capable Orchestrators by pipeline, showing which models are warm. Use this to verify your AI pipeline registrations are visible to the network after configuring `aiModels.json`.
* **Payout reports** – daily, weekly, and monthly earnings breakdowns per Orchestrator address
* **Orchestrator view** – per-Orchestrator statistics including pricing and job activity

<Warning>
  This is community infrastructure maintained outside the Livepeer Foundation. It has experienced intermittent availability, so keep Explorer and Prometheus in the loop as primary sources.
</Warning>

<CustomDivider />

## Network Dashboards (Dune Analytics)

For protocol-level macro data – inflation, staking participation, fee volumes, token distribution:

<StyledTable variant="bordered">
  <TableRow header>
    <TableCell header>Dashboard</TableCell>
    <TableCell header>Link</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>Growth Dashboard</TableCell>
    <TableCell>[dune.com/rickstaa/livepeer-growth-dashboard](https://dune.com/rickstaa/livepeer-growth-dashboard)</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>Governance Dashboard</TableCell>
    <TableCell>[dune.com/rickstaa/livepeer-governance-dashboard](https://dune.com/rickstaa/livepeer-governance-dashboard)</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>Token Dashboard (Arbitrum)</TableCell>
    <TableCell>[dune.com/stronk/livepeer-Arbitrum](https://dune.com/stronk/livepeer-arbitrum)</TableCell>
  </TableRow>
</StyledTable>

Use these dashboards for network trends. Use Explorer and Prometheus for per-node operations.

<CustomDivider />

## Capability Testing

Tools for verifying your node is correctly serving jobs end-to-end. Use them to confirm behaviour from the outside instead of inferring everything from logs.

<CardGroup cols={2}>
  <Card title="stream-tester" icon="github" href="https://github.com/livepeer/stream-tester">
    Submits transcoding jobs to an Orchestrator and measures response times and success rates. Used to validate your transcoding capability from the outside.
  </Card>

  <Card title="livepeer-ai-job-tester" icon="github" href="https://github.com/mikezupper/livepeer-ai-job-tester">
    Community-built tool (Cloud SPE) that submits AI inference jobs and records performance metrics. Used to verify AI pipeline availability before relying on network routing.
  </Card>
</CardGroup>

<CustomDivider />

## Tool selection guide

<StyledTable variant="bordered">
  <TableRow header>
    <TableCell header>Situation</TableCell>
    <TableCell header>Tool to reach for</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>Am I in the Active Set?</TableCell>
    <TableCell>Livepeer Explorer → Orchestrator list</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>Did I miss any reward rounds?</TableCell>
    <TableCell>Livepeer Explorer → reward call history</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>Is my node processing jobs right now?</TableCell>
    <TableCell>Prometheus `/metrics` → session count; or `-v 6` logs</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>Why am I not receiving AI jobs?</TableCell>
    <TableCell>tools.Livepeer.cloud/ai/network-capabilities</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>Is my transcoding pipeline working correctly?</TableCell>
    <TableCell>stream-tester</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>What is the network-wide inflation rate?</TableCell>
    <TableCell>Dune dashboards</TableCell>
  </TableRow>

  <TableRow>
    <TableCell>Is my pricing competitive?</TableCell>
    <TableCell>Explorer → compare your price to top 20 Orchestrators</TableCell>
  </TableRow>
</StyledTable>

<CardGroup cols={2}>
  <Card title="Livepeer Explorer Guide" icon="compass" href="/v2/orchestrators/guides/monitoring-and-tooling/explorer-operations">
    Full walkthrough of every Explorer metric and what to do when things look wrong.
  </Card>

  <Card title="Metrics and Monitoring" icon="gauge" href="/v2/orchestrators/guides/monitoring-and-tooling/metrics-and-alerting">
    Setting up Prometheus, Grafana, and the Docker monitoring stack.
  </Card>
</CardGroup>
