> ## 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 Support & Programmes

> Funding and support programmes for Livepeer Gateway operators - SPE grants, AI Video Startup Programme, community resources, and how to contribute to the ecosystem.

export const BorderedBox = ({children, variant = "default", padding = "var(--lp-spacing-4)", borderRadius = "var(--lp-spacing-px-8)", margin = "", accentBar = "", style = {}, className = "", ...rest}) => {
  const variants = {
    default: {
      border: "1px solid var(--lp-color-border-default)",
      backgroundColor: "var(--lp-color-bg-card)"
    },
    accent: {
      border: "1px solid var(--lp-color-accent)",
      backgroundColor: "var(--lp-color-bg-card)"
    },
    muted: {
      border: "1px solid var(--lp-color-border-default)",
      backgroundColor: "transparent"
    }
  };
  const accentBarColors = {
    accent: "var(--lp-color-accent)",
    positive: "var(--green-9)"
  };
  return <div data-docs-bordered-box="" data-accent-bar={accentBarColors[accentBar] ? "" : undefined} className={className} style={{
    ...variants[variant],
    padding: padding,
    borderRadius: borderRadius,
    ...margin ? {
      margin
    } : {},
    ...accentBarColors[accentBar] ? {
      position: "relative",
      '--accent-bar-color': accentBarColors[accentBar]
    } : {},
    ...style
  }} {...rest}>
      {children}
    </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>;
};

export const LinkArrow = ({href, label, description, newline = true, borderColor, className = '', style = {}, ...rest}) => {
  const linkArrowStyle = {
    display: 'inline-flex',
    alignItems: 'center',
    justifyContent: 'center',
    gap: "var(--lp-spacing-1)",
    width: 'fit-content',
    ...borderColor && ({
      borderColor
    })
  };
  return <span className={className} style={style} {...rest}>
      {newline && <br />}
      <span style={linkArrowStyle}>
        <a href={href} target="_blank" rel="noopener noreferrer">
          {label}
        </a>
        <Icon icon="arrow-up-right" size={14} color="var(--lp-color-accent)" />
      </span>
      {description && description}
      {description && <div style={{
    height: "var(--lp-spacing-3)"
  }} />}
    </span>;
};

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>;
};

<CustomDivider style={{margin: "-1rem 0 -1rem 0"}} />

The Livepeer ecosystem provides funding, programmes, and community resources for Gateway operators at every stage - from first-time builders to production platform operators. What support is available and how to access it.

<CardGroup cols={1}>
  <Card title="Business Case" icon="chart-line" href="/v2/gateways/guides/operator-considerations/business-case">
    For the business rationale, operator models, and cost/revenue analysis, see the Business Case guide in Operator Considerations.
  </Card>
</CardGroup>

<CustomDivider style={{margin: "-1rem 0 -2rem 0"}} />

## Funding Paths

<Tabs>
  <Tab title="SPE Grants" icon="coins">
    **Special Purpose Entity (SPE)** grants fund Gateway operators through the Livepeer treasury governance process. SPEs run public Gateways that serve the broader network - public access, new capabilities, increased demand - without needing a commercial revenue stream from day one.

    **Currently funded SPEs operating Gateways:**

    <StyledTable>
      <TableRow header>
        <TableCell header>SPE</TableCell>
        <TableCell header>What it funds</TableCell>
        <TableCell header>Status</TableCell>
      </TableRow>

      <TableRow>
        <TableCell>**Livepeer Cloud SPE**</TableCell>
        <TableCell>Free public AI and video Gateways</TableCell>
        <TableCell>Active</TableCell>
      </TableRow>

      <TableRow>
        <TableCell>**LLM SPE**</TableCell>
        <TableCell>LLM inference routing on the Livepeer Network</TableCell>
        <TableCell>Active</TableCell>
      </TableRow>
    </StyledTable>

    **How to propose an SPE:**

    1. Engage the community on [Discord](https://discord.gg/livepeer) and [Forum](https://forum.livepeer.org)
    2. Write a proposal with clear public benefit, verifiable milestones, and realistic budget
    3. Post to the Livepeer Forum for community discussion
    4. Submit for on-chain governance vote (token holder approval)
    5. Execute and report on milestones

    For the full SPE guide, see <LinkArrow href="/v2/gateways/guides/roadmap-and-funding/spe-grant-model" label="SPE Grant Model" newline={false} />.
  </Tab>

  <Tab title="AI Video Startup Programme" icon="rocket">
    The Livepeer Foundation runs a programme for startups and teams building AI-powered video products on Livepeer. Accepted teams receive:

    * Network resources and compute credits
    * Technical support from the Livepeer engineering team
    * Investor introductions and go-to-market guidance
    * Community visibility

    This programme is specifically for teams building products that route AI inference through the Livepeer Network. Running a Gateway is the operational foundation.

    <Note>
      The AI Video Startup Programme runs in cohorts. Check [Discord #local-Gateways](https://discord.gg/livepeer) or the [Livepeer Forum](https://forum.livepeer.org) for current application windows.
    </Note>
  </Tab>

  <Tab title="Community Signer" icon="shield-check">
    For operators who want to start without any crypto setup, the community-hosted remote signer at `signer.eliteencoder.net` provides free ETH for testing and development. This removes all Ethereum complexity from the Gateway operator's responsibilities.
    The community signer is not for production workloads without understanding the custody implications. For production, run a dedicated signer instance. See <LinkArrow href="/v2/gateways/guides/payments-and-pricing/remote-signers" label="Remote Signers" newline={false} />.
  </Tab>
</Tabs>

<CustomDivider style={{margin: "0 0 -2rem 0"}} />

## Community Resources

<AccordionGroup>
  <Accordion title="Discord" icon="discord">
    The `#local-gateways` channel on [Discord](https://discord.gg/livepeer) is the primary real-time support channel for Gateway operators. Most operators respond within a few hours. Use it for:

    * Technical setup questions
    * Finding AI-capable Orchestrator addresses
    * Sharing Gateway endpoints and capabilities
    * Debugging routing issues with community help
  </Accordion>

  <Accordion title="Forum" icon="comments">
    The [Livepeer Forum](https://forum.livepeer.org) is the right place for longer discussions, SPE proposals, architecture design, and feature requests. Forum threads are indexed by search engines and serve as a permanent record. Tag posts with `gateway` and `go-livepeer`.
  </Accordion>

  <Accordion title="GitHub" icon="github">
    * [go-livepeer](https://github.com/livepeer/go-livepeer) - the Gateway binary. File issues for bugs, feature requests, and flag verification.
    * [Livepeer/naap](https://github.com/livepeer/naap) - Network as a Platform reference implementation for multi-tenant Gateways.
    * [Livepeer/explorer](https://github.com/livepeer/explorer) - the Livepeer Explorer. Gateway Explorer page in development ([PR #410](https://github.com/livepeer/explorer/pull/410)).
    * [Livepeer/docs](https://github.com/livepeer/docs) - documentation. Report gaps or contribute improvements.
  </Accordion>

  <Accordion title="Livepeer Tools" icon="gauge-high">
    [tools.Livepeer.cloud](https://tools.livepeer.cloud) is a community-maintained dashboard for network monitoring and Gateway observability. Contact the maintainers to have a Gateway listed.
  </Accordion>
</AccordionGroup>

<CustomDivider style={{margin: "0 0 -2rem 0"}} />

## Contribute

<BorderedBox variant="accent">
  The Livepeer Gateway ecosystem grows through operator contributions. Here are concrete ways to contribute:

  * **Run a public Gateway** and share the endpoint in `#local-gateways` - more Gateways increase network resilience and developer access
  * **Report documentation gaps** by opening issues at [github.com/Livepeer/docs](https://github.com/livepeer/docs/issues)
  * **Build tools** - monitoring dashboards, Gateway management UIs, SDK wrappers, deployment scripts
  * **Write tutorials** - setup guides, integration walkthroughs, use case examples. Submit via Forum or GitHub PR
  * **Propose an SPE** if there is a gap in Gateway capacity, capability, or adoption that treasury funding could fill
  * **Join the NaaP effort** - the Network as a Platform reference implementation welcomes contributors at [github.com/Livepeer/naap](https://github.com/livepeer/naap)
</BorderedBox>

<CustomDivider style={{margin: "0 0 -2rem 0"}} />

## Related Pages

<CardGroup cols={2}>
  <Card title="NaaP & Multi-Tenancy" icon="users" href="/v2/gateways/guides/roadmap-and-funding/naap-multi-tenancy">
    Build a multi-tenant platform with API keys, billing, and user management.
  </Card>

  <Card title="SPE Grant Model" icon="coins" href="/v2/gateways/guides/roadmap-and-funding/spe-grant-model">
    How to propose and execute a treasury-funded Gateway SPE.
  </Card>

  <Card title="Gateway Showcase" icon="globe" href="/v2/gateways/guides/roadmap-and-funding/gateway-showcase">
    Production projects and tools built on Livepeer Gateways.
  </Card>

  <Card title="Business Case" icon="chart-line" href="/v2/gateways/guides/operator-considerations/business-case">
    Operator models, cost structures, and revenue analysis.
  </Card>
</CardGroup>
