Pipelines

Inspect Pipelines

Register pipelines in Studio and inspect graph, runs, and logs.

Studio can inspect built pipelines beside agents. Register both as top-level targets:

import { AgentBuilder, PipelineBuilder } from "@anvia/core";
import { Studio } from "@anvia/studio";

const supportAgent = new AgentBuilder("support", model).build();

const ticketPipeline = new PipelineBuilder<string>({
  id: "ticket-pipeline",
  name: "Ticket Pipeline",
})
  .step((ticket) => ticket.trim(), { name: "Normalize" })
  .prompt(supportAgent, { name: "Draft Reply" })
  .build();

new Studio([supportAgent, ticketPipeline]).start({ port: 4021 });

Studio reads pipeline graph metadata automatically from build order. Optional pipeline and stage metadata improves labels, descriptions, and inspector details, but every stage gets a generated id and label when metadata is omitted.

What Studio Shows

SurfaceWhat it shows
GraphInput, steps, nested pipelines, parallel branches, agents, extractors, and output
Node detailsKind, label, description, metadata, branch key, agent id, or nested pipeline id
Run controlsJSON-compatible input sent to POST /pipelines/:pipelineId/runs
LogsPersisted metadata-only pipeline audit logs with live stream updates

Pipeline logs include ids, stage kinds, status, durations, counts, and byte lengths. They do not persist raw input, output, prompt text, model output, tool arguments, tool results, documents, images, or reasoning text.

HTTP Routes

curl http://localhost:4021/pipelines
curl http://localhost:4021/pipelines/ticket-pipeline
curl 'http://localhost:4021/pipelines/ticket-pipeline/logs?limit=200'

Run a pipeline with JSON input:

curl -X POST http://localhost:4021/pipelines/ticket-pipeline/runs \
  -H 'content-type: application/json' \
  -d '{
    "input": "Customer cannot check out",
    "stream": true
  }'

Studio HTTP pipeline inputs must be JSON-compatible. Use direct pipeline.run(...) in application code when a pipeline takes non-JSON values.