Skip to content

Configuration

Implemented

Most pipelines need a few global settings: which model to use by default, how long to wait before timing out, and which tools agents can call. That's what pipeline.config is for.

Think of it as the "defaults" section. Any step can override these values, but if it doesn't, it inherits from here.

Pipeline-level config

yaml
pipeline:
  name: my-pipeline
  config:
    model: anthropic/claude-sonnet-4-5   # default model for all ai steps
    temperature: 0.5                     # default temperature
    timeout: 30s                         # default step timeout

That's all you need to set a sensible baseline for the whole pipeline.

The model field

Implemented

JigSpec uses provider-prefixed model strings. The prefix tells the runtime which API provider to use:

yaml
config:
  model: anthropic/claude-sonnet-4-5   # Anthropic
  # model: openai/gpt-4o-mini          # OpenAI
  # model: anthropic/claude-haiku-4-5  # Faster, cheaper Anthropic

If you omit model, the runtime uses its built-in default. Setting it here means every ai step in your pipeline uses that model unless it overrides the field.

Step-level overrides

Implemented

Any ai step can override the pipeline defaults for that step only:

yaml
pipeline:
  config:
    model: anthropic/claude-haiku-4-5   # fast, cheap default
    temperature: 0.3

  steps:
    - name: classify
      action: ai
      prompt: "Classify: {{ input.message }}"
      # uses haiku at 0.3 — fast classification

    - name: write_report
      action: ai
      prompt: "Write a detailed analysis: {{ input.data }}"
      config:
        model: anthropic/claude-sonnet-4-5   # upgrade to better model
        temperature: 0.7                     # more creative writing
        max_tokens: 4000

The classify step uses the pipeline's default (haiku, 0.3). The write_report step overrides to use the better model with higher creativity.

Tools

Implemented

When using agent mode, you control which tools the agent can call. Tools are configured at two levels:

Pipeline level — sets the allow-list for all agent steps:

yaml
pipeline:
  config:
    tools:
      - file_write
      - file_read

Step level — overrides the pipeline allow-list for a specific step:

yaml
- name: researcher
  action: ai
  prompt: "Research this topic and write findings to a file"
  tools:
    - file_write
    - file_read

Negation syntax

You can remove a tool from the pipeline's allow-list using ! prefix:

yaml
pipeline:
  config:
    tools:
      - file_write
      - file_read

steps:
  - name: read_only_analysis
    action: ai
    prompt: "Analyze the existing files and summarize"
    tools:
      - "!file_write"   # removes file_write; inherits file_read from pipeline

The !tool_name syntax removes a tool from the effective allow-list for that step. This lets you tighten permissions per step without re-listing all allowed tools.

Available config fields

FieldTypeDescription
modelstringProvider-prefixed model name
temperaturenumberModel temperature (0.0–2.0)
max_tokensnumberMaximum tokens in the response
timeoutstringStep timeout (e.g., 30s, 5m)
toolsarrayTool allow-list for agent steps

Temperature guide

  • 0.0–0.3 — factual extraction, classification, code generation
  • 0.4–0.7 — balanced (good default for most tasks)
  • 0.8–1.0 — creative writing, brainstorming

Released under the Apache 2.0 License.