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

# Manage schedules as code

> Define Paradime Bolt schedules as YAML in your dbt™ repository, organize them with a modular .bolt/ folder, and deploy them straight from the UI.

Instead of building every Bolt schedule in the UI, you can define schedules as YAML in your dbt™ project, version them in Git, and split them across a modular `.bolt/` folder. This guide walks you through writing a schedule, organizing multiple schedules by team, and deploying them.

<Note>
  **Prerequisites**

  * A [Bolt environment](/products/bolt/index) connected to your workspace.
  * Write access to the Git repository that holds your dbt™ project.
  * Familiarity with [Bolt schedules](/guides/paradime-101/running-dbt-in-production-with-bolt/creating-bolt-schedules) and [schedule types and triggers](/guides/paradime-101/running-dbt-in-production-with-bolt/understanding-schedule-types-and-triggers).

  Estimated time: 15 minutes.
</Note>

## Steps

<Steps>
  <Step title="Write a minimal schedule in YAML">
    Every schedule needs a base configuration: a `name`, a `slug`, an `owner_email`, a target `git_branch`, the `environment` (only `production` is supported), and a list of `commands`. Add `schedule` and `timezone` for cron-based execution.

    ```yaml theme={"system"}
    schedules:
      - name: daily run
        slug: daily-run-e4f5g6
        description: "Daily build of all dbt models"
        owner_email: john@acme.io
        environment: production
        git_branch: main
        commands:
          - dbt run
          - dbt test
        schedule: 0 10 * * *
        timezone: UTC
    ```

    <Info>
      Leave `slug` blank on new schedules and let `paradime schedule verify` generate it, or set your own unique value. Use `schedule: 'OFF'` for trigger-based or API-triggered schedules.
    </Info>

    See the [Configuration Reference](/products/bolt/creating-schedules/schedules-as-code/configuration-reference) for every field, including triggers, notifications, deferred artifacts, and self-healing.
  </Step>

  <Step title="Organize schedules in a modular .bolt/ folder">
    Place a `.bolt/` folder at the root of your dbt™ project, next to `dbt_project.yml`. Paradime auto-discovers every `.yaml` and `.yml` file inside (at any depth) and merges their `schedules:` lists into one deployment, so each team can own its own file.

    ```
    your-dbt-project/
    ├── dbt_project.yml
    ├── .bolt/
    │   ├── transforms/
    │   │   ├── marketing.yaml
    │   │   └── finance.yaml
    │   └── ci/
    │       └── pull-requests.yaml
    └── models/
    ```

    Each file uses the same configuration format as a flat schedules file.

    ```yaml theme={"system"}
    # .bolt/transforms/marketing.yaml
    schedules:
      - name: marketing daily
        slug: marketing-daily-w1x2y3
        description: "Marketing models daily refresh"
        owner_email: marketing-data@acme.io
        environment: production
        git_branch: main
        commands:
          - dbt build --select tag:marketing
        schedule: '0 6 * * *'
        timezone: UTC
    ```

    <Info>
      There is no entry-point file and no imports to maintain. A schedule's `name` must be unique across every file in `.bolt/` (and any legacy `paradime_schedules.yml`), which can coexist and merge with the folder.
    </Info>

    See [The .bolt/ Folder](/products/bolt/creating-schedules/schedules-as-code/modular-schedules-with-the-.bolt-folder) for detection rules and multi-team layouts.
  </Step>

  <Step title="Validate before you deploy">
    From your dbt™ project directory, validate the schedule files with the CLI. `paradime schedule verify` checks formatting and generates any missing slugs, and `paradime schedule run --dry-run` simulates execution without running dbt™ models.

    ```bash theme={"system"}
    paradime schedule verify
    paradime schedule run --dry-run
    ```

    <Warning>
      Validation errors are prefixed with the originating file path (for example, `.bolt/transforms/marketing.yaml: schedule 'marketing daily' has an invalid cron expression`), so fix the file named in the message.
    </Warning>
  </Step>

  <Step title="Deploy the schedule">
    Commit and merge your YAML to the target branch. Paradime reads the schedule definitions and deploys them. You can also build a schedule in the UI and deploy it directly, open a pull request, or download the YAML to commit yourself.

    See [Deploy Schedules](/products/bolt/creating-schedules/deploy) for the deploy button, pull-request flow, and downloading YAML.
  </Step>
</Steps>

<Check>
  Your schedules appear in Bolt with the names and triggers from your YAML, and each one runs on its configured cron or trigger. If a schedule is missing, re-run `paradime schedule verify` and check for a validation error naming the file, most commonly a duplicate `name` or an invalid cron expression.
</Check>

## Next steps

<CardGroup cols={2}>
  <Card title="Understand schedule types and triggers" href="/guides/paradime-101/running-dbt-in-production-with-bolt/understanding-schedule-types-and-triggers" icon="workflow">
    Choose between cron, merge, run-completion, and API triggers for your YAML schedules.
  </Card>

  <Card title="Create Bolt schedules" href="/guides/paradime-101/running-dbt-in-production-with-bolt/creating-bolt-schedules" icon="rocket">
    Build a schedule in the UI, then export it to code.
  </Card>

  <Card title="Configuration Reference" href="/products/bolt/creating-schedules/schedules-as-code/configuration-reference" icon="code">
    Every YAML field: triggers, notifications, deferred artifacts, and self-healing.
  </Card>

  <Card title="The .bolt/ folder" href="/products/bolt/creating-schedules/schedules-as-code/modular-schedules-with-the-.bolt-folder" icon="folder-tree">
    Split schedules across files and merge them into one deployment.
  </Card>
</CardGroup>


## Related topics

- [Deploy Schedules](/products/bolt/creating-schedules/deploy.md)
- [Run an agent with Bolt](/guides/programmable-agents/run-an-agent-with-bolt.md)
- [Self-Healing settings for a Bolt schedule](/products/bolt/creating-schedules/self-healing.md)
- [Send failures to your incident tools](/guides/orchestrate-data-pipelines/send-failures-to-incident-tools.md)
- [Set up self-healing](/guides/orchestrate-data-pipelines/set-up-self-healing.md)
