> ## 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.

# Triggering from Bolt

A Programmable Agent can be invoked in two ways:

* **From the Paradime API** — using `triggerDinoaiAgentRun`. See API Reference.
* **From a Bolt schedule** — using the **Run Paradime DinoAI Agent** command type. This page.

Use Bolt when you want the agent to run on a **cron schedule**, **after another schedule completes**, on a **PR merge**, or as part of a Turbo CI run. Use the API when you want to embed agent runs in a workflow you orchestrate yourself (Airflow, Lambda, webhooks, etc.).

***

#### Prerequisites

* A programmable agent definition committed to your repository under `.dinoai/agents/<name>.yml`. See YAML Configuration.
* API credentials with **DinoAI Agent** capabilities, set as Bolt Schedule environment variables:
  * `PARADIME_API_ENDPOINT`
  * `PARADIME_API_SECRET`
  * `PARADIME_API_KEY`

***

#### Option 1 — Configure from the Bolt UI

In the Bolt schedule editor, click **Add command** and pick **Run Paradime DinoAI Agent**:

1. **Agent Name** — pick the agent from the dropdown. The list is populated from `.dinoai/agents/*.yml` on the configured git branch.
2. **Task** — describe the task you want the agent to complete. This becomes the agent's opening user message.
3. **Save Command**, then configure the trigger type (cron, on-merge, on-completion, etc.) and deploy.

See the full UI walkthrough at Bolt Command Settings → Run Paradime DinoAI Agent.

***

#### Option 2 — Configure from schedules-as-code YAML

The UI just writes a `paradime dinoai` CLI invocation into the schedule's `commands:` list. If you manage your Bolt schedules with YAML, add the same command directly:

```yaml theme={"system"}
schedules:
  - name: nightly data quality
    slug: nightly-data-quality-f6g7h8
    description: "Nightly DinoAI sweep over staging models"
    owner_email: data-team@acme.io
    environment: production
    git_branch: main
    commands:
      - paradime dinoai --agent=data-quality-checker --message="Audit all staging models for missing tests and post a summary to #data-quality-alerts"
    schedule: "0 2 * * *"
    timezone: UTC
```

The arguments mirror the UI fields:

| UI field   | CLI flag             | Notes                                                                                                   |
| ---------- | -------------------- | ------------------------------------------------------------------------------------------------------- |
| Agent Name | `--agent=<name>`     | Must match an existing `.dinoai/agents/<name>.yml` on the schedule's git branch.                        |
| Task       | `--message="<task>"` | The agent's opening user message. Use a single quoted string; both single- and double-quotes are valid. |

See Configuration Reference for the full schedule YAML schema.

***

#### Lifecycle of a Bolt-triggered run

```mermaid theme={"system"}
sequenceDiagram
    participant B as Bolt run
    participant CLI as paradime dinoai
    participant API as Paradime API
    participant P as Agent pod

    B->>CLI: paradime dinoai --agent X --message "..."
    CLI->>API: triggerDinoaiAgentRun()
    API->>P: Spawn agent pod
    loop poll
        CLI->>API: dinoaiAgentRun()
        API-->>CLI: status + messages
    end
    P-->>CLI: COMPLETED / FAILED
    CLI-->>B: exit 0 / exit 1
```

* **Fresh session per run.** Each Bolt run starts a **new** agent session — there is no continuity from one schedule run to the next. Use the API with `sendDinoaiAgentMessage` if you need multi-turn continuity.
* **Bolt waits for the agent.** The CLI blocks until the agent reaches a terminal state (`COMPLETED` or `FAILED`) and exits with the corresponding exit code. The Bolt run therefore inherits the agent's success/failure.
* **Logs.** The agent's messages stream into the Bolt command's stdout, so they show up in the Bolt run logs (and in the live log stream when polled via the SDK).
* **Notifications.** Slack notifications configured inside the agent YAML still fire — independently from any Bolt notifications configured on the schedule itself.

#### Related

* [Bolt Command Settings → Run Paradime DinoAI Agent — UI walkthrough](/products/bolt/creating-schedules/command-settings/paradime-dinoai-agent-trigger)
* [Schedules as Code → Configuration Reference — full YAML schedule schema](/products/bolt/creating-schedules/schedules-as-code/index)
* [API Reference — invoking agents via GraphQL](/developers/graphql-api/api-reference/dinoai-programmable-agents-api)
* [API Reference — invoking agents via Paradime SDK](/developers/python-sdk/modules/dinoai-programmable-agents)
* [API Reference — invoking agents via Paradime CLI](/developers/paradime-cli/dinoai-cli)
* [YAML Configuration — authoring the agent itself](/products/dino-ai/programmable-agents/yaml-configuration)
* [Tools Reference — what the agent can do once it's running](/products/dino-ai/programmable-agents/tools-reference)


## Related topics

- [4. Trigger Types](/products/bolt/creating-schedules/trigger-types.md)
- [Bolt](/developers/python-sdk/modules/bolt.md)
- [Triggering from the API](/products/dino-ai/programmable-agents/api-reference.md)
- [Bolt API](/products/bolt/bolt-api.md)
- [Retrying a Failed Run](/products/bolt/managing-schedules/retrying-a-failed-run.md)
