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

# Auto Ingestion

> Automatically ingest all repositories from GitHub and Azure DevOps as Portal-managed catalog entities, no YAML files required.

Auto ingestion automatically syncs all repositories from your configured GitHub and Azure DevOps organizations into your software catalog as Portal-managed component entities. New repositories are picked up automatically as your organizations grow, and no `catalog-info.yaml` files are required.

## Enabling auto ingestion

To enable auto ingestion, navigate to **Catalog Settings > Settings** and turn on the **Automatic repositories sync** toggle.

<Frame caption="The Catalog Settings page with the Automatic repositories sync toggle.">
  <img
    src="https://mintcdn.com/spotify-89f50c35/Ws14uJPUxr58Xeo7/portal/core-features-and-plugins/catalog/assets/auto-ingestion-settings.png?fit=max&auto=format&n=Ws14uJPUxr58Xeo7&q=85&s=fcb2611076507db9948729c4887a3dff"
    alt="Catalog settings
page"
    width="2888"
    height="1054"
    data-path="portal/core-features-and-plugins/catalog/assets/auto-ingestion-settings.png"
  />
</Frame>

Once enabled, Portal begins ingesting all repositories from your connected GitHub and Azure DevOps organizations. Each repository is created as a **Component** entity managed by Portal. If [automatic enrichment](#automatic-enrichment) is enabled (it is by default), metadata like `type`, `lifecycle`, and `owner` is inferred from your repositories and applied within minutes. Otherwise, these fields default to `unknown` and can be updated manually.

<Note>
  If your repositories already contain `catalog-info.yaml` files and you'd
  prefer to manage entity metadata as code, configure a discovery provider on
  the **Providers** tab instead. See [Ingesting entities from
  GitHub](/docs/portal/guides/integrations/ingesting-entities-into-your-catalog-from-github)
  or [Azure DevOps
  discovery](/docs/portal/guides/integrations/azure-devops/azure-devops-discovery)
  for details.
</Note>

## Syncing

With auto ingestion enabled, new repositories created in your connected organizations are synced into the catalog in near real-time (typically within minutes). While syncing is in progress, a banner appears at the top of the catalog page to let you know.

<Frame caption="The sync status banner shown during an active ingestion.">
  <img
    src="https://mintcdn.com/spotify-89f50c35/Ws14uJPUxr58Xeo7/portal/core-features-and-plugins/catalog/assets/auto-ingestion-sync-status.png?fit=max&auto=format&n=Ws14uJPUxr58Xeo7&q=85&s=6dbc5eabd109896700fd00fc845c1b5c"
    alt="Sync status
banner"
    width="2948"
    height="390"
    data-path="portal/core-features-and-plugins/catalog/assets/auto-ingestion-sync-status.png"
  />
</Frame>

## Automatic enrichment

Automatic enrichment is enabled by default when you turn on auto ingestion. It analyzes your repositories and populates entity metadata that would otherwise remain `unknown`.

Enrichment covers the following fields:

| Field         | How it's inferred                                                                                                                                                           |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Owner**     | Determined from recent commit authors and team memberships.                                                                                                                 |
| **Type**      | Inferred from repository topics, primary programming language, and naming patterns (for example, repositories with `lib` or `sdk` in the name are classified as libraries). |
| **Lifecycle** | Derived from repository topics, archived status, and repository age.                                                                                                        |
| **Tags**      | Extracted from GitHub repository topics.                                                                                                                                    |
| **Labels**    | The primary programming language is added as a label.                                                                                                                       |
| **TechDocs**  | A TechDocs annotation is added when documentation configuration is detected in the repository.                                                                              |

Enriched fields are applied automatically on the initial sync without requiring manual approval. Subsequent enrichment sweeps run periodically to catch newly added or updated repositories.

If you want to disable automatic enrichment while keeping auto ingestion active, uncheck the **Automatic enrichment** option in **Catalog Settings > Settings**. You can still update entity metadata manually.

## Turning off auto ingestion

You can turn off auto ingestion at any time from **Catalog Settings > Settings** by disabling the **Automatic repositories sync** toggle. Turning it off immediately stops new repositories from being ingested.

When you disable auto ingestion, you have the option to either delete all auto-ingested entities from your catalog or keep them. Entities you choose to keep remain in the catalog and can be managed manually going forward.

If you change your mind, you can re-enable auto ingestion at any time by turning the toggle back on.

## Using auto ingestion with a discovery provider

If you have both auto ingestion enabled and a discovery provider configured (for example, a GitHub or Azure DevOps discovery provider), repositories that contain a `catalog-info.yaml` file take precedence. These entities are managed by the YAML file and the discovery provider — not by Portal — and will not be affected by auto ingestion.

Auto ingestion only creates Portal-managed entities for repositories that do not already have a `catalog-info.yaml` file. This means you can use both approaches side by side: teams that prefer managing entity metadata as code continue to do so, while the remaining repositories are automatically ingested and managed by Portal.
