# Sources

A **Source** is a connection to an external platform that brings logs and data into your workspace.

### Terminology

* **Workspace** — A boundary that controls user and data access. Every organization starts with a **Default**workspace.
* **Source** — An instance of a source type (e.g. CloudWatch). You can add multiple sources of the same type with different credentials (e.g. one per AWS account or region).
* **Stream Type** — The kind of log stream produced by a source, e.g. a CloudWatch Lambda log group, or a Kubernetes DaemonSet or Deployment.
* **Stream** — A specific instance of a stream type, e.g. a particular container, pod, or Lambda function.

### Workspaces

A workspace is a boundary that controls who and what can access a given set of data. Common patterns:

* An **environment** — e.g. `staging`, `production`.
* An **application or service** — scoped to the team or developer(s) that own it.
* Any other grouping that fits your organization.

Each workspace has:

* **Its own users** — control exactly who can access its data.
* **Its own streams** — assigned from one or more sources (see Assigning streams to workspaces below).
* **Its own Möbius scope** — the Möbius AI agent operates only against the data in the workspace it's invoked from.

Every organization starts with a **Default** workspace.

### Supported sources

* **AWS CloudWatch** — Pull logs from CloudWatch Log Groups
* **Kubernetes** — Pull pod logs and events from Kubernetes clusters
* **Vercel** — Receive webhook events from Vercel
* **Supabase** — Receive logs from Supabase via OTLP log drain
* **OTLP** — Receive logs from any OpenTelemetry exporter
* **GitHub** — Receive webhook events from GitHub

### Adding a source

1. Go to **Sources** in the sidebar and click **Add Source**.
2. Select a source type.
3. Configure the source (name and any source-specific settings).
4. Provide credentials if required, then click **Test Connection** to verify.
5. Click **Create**.

New sources start as **Pending**. It can take a couple of minutes for logs to begin flowing. Once streams are detected, the source transitions to **Healthy** and streams are listed with their inferred stream types.

### Assigning streams to workspaces

Creating a source ingests its data, but streams must be **assigned to a workspace** before they're accessible there. Each workspace can receive a different subset — for example, production streams to one workspace and staging to another.

1. In the **Sources** list, open the actions menu on a source (gear icon) and select **Assign Streams**.
2. For each workspace, check the streams you want it to receive. Selections are hierarchical — checking a **Stream Type** includes all of its streams, and checking a **Workspace** includes everything from that source.
3. Click **Save**.

The number of workspaces currently receiving streams from a source is shown on the source card.

### Source actions

From the actions menu (gear icon) on a source:

* **Edit** — update name and configuration.
* **Assign Streams** — manage which workspaces receive which streams (above).
* **Test Connection** — re-verify credentials.
* **Disable** — pause ingestion without deleting the source.
* **Delete** — remove the source permanently.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.controltheory.com/controltheory-documentation/dstl8-docs/sources.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
