> ## Documentation Index
> Fetch the complete documentation index at: https://trunk-4cab4936-automation-firewatch-docs-sync.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Getting started

> Set up Trunk, add Dynamic CI to your CI provider, then turn on enforcement.

<Warning>
  Dynamic CI is in **private beta**, and your organization has to be enabled for
  it first. Reach out on [Slack](https://slack.trunk.io).
</Warning>

<Steps>
  <Step title="Set up Trunk CI">
    Dynamic CI decides from your CI history, so Trunk has to be collecting it.
    Follow [Set up Trunk CI](/ci/get-started) for your provider, then copy your
    organization's **API Token** from
    [Settings → Organization → General](https://app.trunk.io/settings/organization/general).
  </Step>

  <Step title="Add Dynamic CI to your CI">
    <Columns cols={2}>
      <Card title="GitHub Actions" icon="github" href="/ci/dynamic-ci/getting-started/github-actions" cta="Set up">
        Add a filter job to your workflow.
      </Card>

      <Card title="Buildkite" icon="https://mintcdn.com/trunk-4cab4936-automation-firewatch-docs-sync/HnolEvhS8Yi_u7E-/assets/icons/buildkite.svg?fit=max&auto=format&n=HnolEvhS8Yi_u7E-&q=85&s=7a795040d08c2d2b385c51f596bc83bd" href="/ci/dynamic-ci/getting-started/buildkite" cta="Set up" width="256" height="256" data-path="assets/icons/buildkite.svg">
        Add the plugin to your pipeline upload.
      </Card>
    </Columns>

    Your repository starts in **Learning** mode: Trunk records a verdict for
    every job and skips nothing.
  </Step>

  <Step title="Turn on enforcement">
    When the recommendations look right, open
    [Dynamic CI](https://app.trunk.io/dynamic-ci) in the Trunk app, select your
    repository, and set the **Dynamic CI mode** to **Enforced**. Only an
    organization admin can change it.
  </Step>
</Steps>
