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

# Streaming runner installation on Google Cloud

export const Runners = () => <>the <strong>Runners & Instances</strong> icon <span style={{
  whiteSpace: "nowrap"
}}><img src="/images/global-nav/runners-instances.png" width="20" height="20" style={{
  verticalAlign: "text-bottom",
  display: "inline",
  margin: "0 1px"
}} /></span></>;

export const maia = "Maia";

export const s_runner = "Streaming runner";

export const RunnerMetadata = ({runnerType, platforms = []}) => {
  return <div style={{
    background: 'var(--colors-background-light, #f9fafb)',
    border: '1px solid var(--colors-border-default, #e5e7eb)',
    borderRadius: '12px',
    padding: '20px 28px',
    marginBottom: '28px',
    boxShadow: '0 1px 4px rgba(0,0,0,0.10)'
  }}>
      <table style={{
    width: '100%',
    borderCollapse: 'collapse'
  }}>
        <tbody>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle',
    width: '180px'
  }}>Runner type</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>{runnerType}</td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Runner platform</td>
            <td style={{
    verticalAlign: 'middle'
  }}>
              <div style={{
    display: 'flex',
    flexWrap: 'wrap',
    gap: '8px'
  }}>
                {platforms.map((platform, i) => <span key={i} style={{
    background: '#dcfce7',
    color: '#15803d',
    border: '1px solid #bbf7d0',
    borderRadius: '9999px',
    padding: '3px 12px',
    fontSize: '0.85rem',
    fontWeight: '500',
    whiteSpace: 'nowrap'
  }}>
                    {platform} ✅
                  </span>)}
              </div>
            </td>
          </tr>
        </tbody>
      </table>
    </div>;
};

<RunnerMetadata runnerType="Streaming" platforms={["Google Cloud"]} />

The {s_runner} is a component within {maia} that serves as a bridge between the source database and the target cloud data lake or cloud storage, enabling the execution and scheduling of [streaming pipelines](/docs/streaming/streaming-pipelines). The {s_runner} will be hosted in your own infrastructure, using a Hybrid SaaS solution.

Once the {s_runner} is configured and started, it operates autonomously without requiring much intervention. The {s_runner} continuously monitors all changes occurring in the source database, consumes those changes from the low-level logs, and delivers them to the designated target data lake or storage. This ensures a continuous and reliable change data capture process.

This topic explains how to create a {s_runner} in your Google Cloud infrastructure.

<Note>
  Each {s_runner} can run **only one** Streaming pipeline. Each Streaming pipeline requires a new {s_runner} installation.
</Note>

***

## Prerequisites

* A {maia} account. To register, read [Registration](/docs/administration/registration). Once you have signed up, log in to [{maia}](https://app.matillion.com/hub).
* An account in Google Cloud to host the {s_runner}.
* Access to a cloud secrets service, which is a secure storage system for storing authentication and connection secrets. These secrets are used by the {s_runner} to authenticate itself with the source database and establish a secure connection for capturing the data changes.

***

## Create a Streaming runner

1. In the left navigation, click <Runners />, then in the menu, click **Runners**. The **Runners** list lists all {s_runner}s currently created, showing their Status, Platform, and Type.

2. Click **Add runner**.

3. Click **Streaming**.

4. Complete the following properties:

   * **Runner name:** A unique name for your new {s_runner}. Maximum 30 characters. Accepts both uppercase and lowercase A-z, 0-9, whitespace (not the first character), hyphens and underscores.
   * **Description:** Optionally enter a brief description of the {s_runner}.
   * **Cloud provider:** The cloud platform that the {s_runner} will be deployed to. Select **GCP**.
   * **Deployment:** The {s_runner} deployment method. Choose from **GCE** (Google Compute Engine) or **GKE** (Google Kubernetes Engine).

5. Click **Create runner**.

6. This creates a {s_runner} definition in {maia}, and displays the following parameters on the **Runner details** page. You will need these parameters to set up the {s_runner} in your Google Cloud infrastructure.

   * ACCOUNT\_ID
   * AGENT\_ID
   * MATILLION\_REGION
   * OAUTH\_CLIENT\_ID
   * OAUTH\_CLIENT\_SECRET

   The screen will also show any optional environment variables needed by the {s_runner}.

   Click **Reveal** to make the `OAUTH_CLIENT_ID` and `OAUTH_CLIENT_SECRET` values visible before copying.

7. The {s_runner}'s [status](#check-streaming-runner-status) is set to **Pending**, which means it is not yet ready to run pipelines. The next step is to deploy the {s_runner} application into your Google Cloud infrastructure, as described below.

***

## Set up the Streaming runner in your Google Cloud infrastructure

Setting up {s_runner}s requires access to Google Cloud services, as well as a degree of familiarity with that platform. We recommend going through this process with your Google Cloud administrator.

<Note>
  Google Cloud resources may come with their own pricing independent of any billing you receive from Matillion.
</Note>

Recommendations:

* Create new resources specifically for streaming use rather than attempt to use existing cloud resources.
* Set up a resource group for your new resources for better organization and billing ease.
* Consult your cloud/network administrator for advice on Google Cloud permissions, roles, access and other considerations such as Google Cloud regions.
* Keep resources in the same Google Cloud region. Note that all resources and services may not be available in all regions; it is recommended you research your desired region in advance.

***

## Check streaming runner status

After deploying the {s_runner} in your Google Cloud infrastructure, you should return to {maia} to verify that it's correctly connected and running.

1. In the left navigation, click <Runners />, then in the menu, click **Runners**. The **Runners** list lists all {s_runner}s currently created.

2. Locate the {s_runner} in the list and check the status:

   * **Pending:** The {s_runner} has been created but has not yet connected to {maia}.
   * **Running:** The {s_runner} is connected and available for running Streaming pipelines, or is connected and already running a Streaming pipeline.
   * **Stopped:** The {s_runner} has been stopped.
   * **Unknown:** The {s_runner} is in an unknown state. This typically means the {s_runner} has lost connection to {maia} without being stopped, for example due to networking issues.

3. When the {s_runner} status shows **Running**, it's ready to use. It can be selected in the **Runner** drop-down when you [create a new Streaming pipeline](/docs/streaming/streaming-pipelines/#create-a-streaming-pipeline), as long as a pipeline is not already assigned.
