---
title: SCM overview
description: PRs, reviews, CI status. The tracker watches issues; the SCM plugin watches code review.
---

The **SCM** plugin is everything to do with the pull/merge-request side: opening PRs, reading their review state, and polling CI checks. Two ship.

<PluginGrid>
  <PluginCard name="GitHub" logo="github" href="/docs/plugins/scm/github" description="PRs, reviews, and CI status via gh." />
  <PluginCard name="GitLab" logo="gitlab" href="/docs/plugins/scm/gitlab" description="MRs, discussions, pipelines via glab." />
</PluginGrid>

## Why separate from the tracker

You might host code on GitHub but track issues in Linear. Or your company migrated from GitLab to GitHub but kept the tracker elsewhere. SCM and tracker are independent knobs:

```yaml
scm: github
tracker: linear
```

## What the SCM plugin polls

- **PR state** — open / closed / merged
- **Review decisions** — approved / changes_requested / commented
- **Inline comments** — unresolved threads feed the [review loop](/docs/guides/review-loop)
- **CI checks** — pass / fail / in-progress, required vs optional, feed the [CI recovery loop](/docs/guides/ci-recovery)

Polling interval defaults to a few seconds and is tuned per-endpoint to stay well under rate limits.
