Pipelines

A pipeline is a named list of steps in .shipyard.yaml. Each run goes through the queue, executes the steps in order and writes every step's result to the run log.

Step type Does Keys
diagnostic Confirms the project is configured and enabled. —
prometheus Runs a named PromQL instant query. source
ai_text Sends a prompt to the model for a role. task, prompt

Every step has an id and an optional timeout (default 2m, at most 15m); a whole run stops after 15 minutes. A failed step stops the pipeline. A pipeline has 1 to 20 steps.

1. Local project check — no AI credentials

pipelines:
  project-check:
    steps:
      - id: validate-config
        type: diagnostic
        timeout: 30s

Confirms the project's configuration and records the result. Needs no AI credentials.

2. Prometheus observation

prometheus:
  production:
    url: https://prometheus.example.com
    token_env: PROMETHEUS_TOKEN
    query: 'up{job="my-project"}'
pipelines:
  observe-production:
    steps:
      - id: validate-project
        type: diagnostic
      - id: collect-metrics
        type: prometheus
        source: production
        timeout: 15s

The query result is written to the run log. A failed query, an error status or a response with warnings fails the step.

3. Article draft with a different reviewer

pipelines:
  article-draft:
    steps:
      - id: write
        type: ai_text
        task: writing
        prompt: "Draft an article about ${input}. Use only supplied facts; list missing evidence."
        timeout: 2m
      - id: review
        type: ai_text
        task: verification
        prompt: "Review this draft and return a corrected version: ${previous}"
        timeout: 2m

writing and verification resolve through ai.tasks and the project's models override, so the draft and the review can use different models. ${input} is the run input; ${previous} is the previous step's output. They are filled once — placeholder text inside the input is passed on as written. Prompts go to the provider as text, never to a shell. AI calls can cost money.

Run a pipeline

In the console: New run → Pipeline → pick the pipeline and project. Or from the Pipelines view, Run pipeline. API equivalent:

curl -X POST http://127.0.0.1:8080/api/v1/runs \
  -H "Authorization: Bearer $SHIPYARD_API_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: my-project-check-001' \
  -d '{"project_id":"ssg","kind":"pipeline","task":"project-check","input":""}'

Reusing the idempotency key returns the run already queued. One run per project executes at a time; others wait in the queue.

If Shipyard stops mid-run, diagnostic runs are picked up again (up to three attempts). Pipeline and AI runs are marked failed instead, so a paid model call is never repeated without you — use Retry.

The log records each stage's start and output and ends with pipeline completed. Messages over 16 KiB are truncated.