FruxonDocs

Collection Pipelines

Run one agent over every item of a list-tool data source — once or on a schedule

A Collection Pipeline maps an agent over a list. It pulls records from a list-style tool — rows in a Google Sheet, issues from a tracker, contacts from a CRM — and fires one isolated agent run per record, then collects the results into a sink. It's the batch counterpart to a single agent run: instead of one prompt, one conversation, one answer, you get the same agent applied independently to hundreds of items, each with its own trace, cost, and retry boundary.

Reach for a pipeline when you want to enrich a catalog, triage a backlog, classify a dataset, or build a knowledge index from a tool — anything shaped like "do this for each of these."

Each item runs as an ordinary agent execution — same flow, same tools, same budget accounting — just driven by the pipeline instead of an inbound message. Per-item runs show up in the agent's Execution History tagged as collection items, and you can open the full trace for any one of them.

The mental model

 Source ──▶ Agent ──▶ Sink
 (a list   (one run   (where the
  tool)     per item)  results go)
StageWhat it does
SourceA paged list tool on one of your integration configs. The pipeline walks every page and turns each record into one work item, keyed by a stable id.
AgentThe agent that runs once per item. You map fields from the record into the agent's prompt and parameters.
SinkWhat happens to each result — gather into a table, push to a knowledge index, write back to the source, or nothing (the agent's own tools are the effect).
Run policyThe rails: concurrency, item cap, per-run budget cap, halt-on-error, and the tool action ceiling.

A pipeline is a saved definition. Each time you run it — manually, as a dry run, or on a schedule — it produces a run, and each run fans out into per-item executions you can monitor.

Creating a pipeline

Open Pipelines from the sidebar and click New pipeline. The builder is a four-step wizard: Data source → Agent → Sink → Run policy.

1. Data source

The source is a paged list tool on one of your integration configs.

FieldMeaning
Integration config idThe tenant integration config that owns the list (and optional get) tools.
List tool idThe paged tool that returns the records — e.g. a "list rows" or "search issues" tool.
Item id pathDotted path to each record's stable id (e.g. id, fields.key). This identifies the item and doubles as the dedup key.
Records path (optional)Dotted path to the array of records inside each page, if they're nested.
Get tool id (optional)A "get by id" tool to fetch the full record when the list returns only a summary. Omit for list-only sources.
Cursor param name (optional)For cursor-paginated tools, the request parameter that receives the next-page cursor.

The source is fetched headlessly — no LLM, no agent — so listing a large collection is cheap. The walker follows pagination until the source is exhausted.

2. Agent

Pick the per-item agent — the agent that runs once for each record — and, optionally, pin a revision (leave blank to always use the agent's current revision at run time).

Then map the record into the agent's inputs:

FieldMeaning
Per-item prompt (user query)The text handed to the agent as its message. Use a dotted path or a {{template}} that interpolates record fields — e.g. Summarize {{fields.summary}}.
ParametersNamed flow parameters, each sourced from a dotted path or template on the record.
Attachment url path (optional)A dotted path to an image or file URL on the record, attached to the run (for vision or file-aware agents).

3. Sink

The sink decides what to do with each item's result.

SinkWhat it doesWhen to use
CollectGathers each result into a structured table. No external side effects. (default)Classification, scoring, extraction — you want the answers back as data.
Act (none)No write at completion — the agent's own tools are the effect (it creates the ticket, sends the message, updates the row itself).Workflows where each item triggers a real action. Requires read-write tools — see the action ceiling below.
IndexPushes each result into a knowledge asset as one finalized RAG snapshot.Building a searchable index out of a tool's records, with optional per-item enrichment.
Write backWrites each result back into its source row — e.g. a Google Sheet column.Enriching a spreadsheet in place.

Index asks for the target Index asset id.

Write back asks for the target sheet: Integration config id, Spreadsheet id, Sheet name, Output column (e.g. K), and First data row (1-based, default 2). Each result is written to the cell in that column at the row matching the record's read order. Failed or skipped rows are left untouched — the write-back never blanks a cell it has no answer for.

The Index sink writes a full snapshot — it replaces the asset's contents, pruning documents that aren't in this run. As a safety guard, Fruxon refuses to push the snapshot if any item failed, so a transient error can never silently prune your index.

4. Run policy

The run policy is where you set the rails. Sensible defaults keep a first run safe.

SettingDefaultWhat it controls
Max concurrency4How many per-item runs execute at once.
Max itemsnoneHard cap on items processed per run.
Per-run budget capnoneA USD ceiling. When the run's spend crosses it, the whole run halts — partial results stay readable.
On item errorContinueContinue keeps going past a failed item; Halt the run stops the whole run on the first failure.
Tool action ceilingRead onlyThe most powerful action type the per-item agent may use. Read only blocks any tool that writes; widen to Reversible or Irreversible only when the pipeline is meant to act.
Pipeline nameA label for the list.
ActiveonGates scheduled runs. A paused pipeline can still be run manually.

The action ceiling is a guardrail, not a default-open. A pipeline ships clamped to Read only — a per-item agent can read and reason but cannot create, update, or delete anything until you deliberately raise the ceiling. This is what makes a 500-item dry run safe to try: even if the agent has write tools, the pipeline won't let it use them at Read only.

Dry run before you commit

Every pipeline has a Dry run action that runs the agent over just the first few items (5 by default) without committing the sink's side effects beyond what those few items produce. Use it to confirm your field mappings, prompt, and sink target are right before you fan out across the whole collection. A dry run still shows up in the run monitor, marked as a preview.

When the mapping looks right, hit Run for a full production run.

Monitoring a run

Opening a run shows a live monitor while it's in flight:

  • Counter cards — Total, Succeeded, Failed, Skipped, In flight, and Cost (USD).
  • Items table — one row per item with its key, status (PendingRunningCompleted / Skipped / Failed), and a View trace link straight to that item's full agent execution.

A run itself moves through FetchingFanning outRunningCompleted (or Failed, or Halted when a budget cap or halt-on-error rule tripped). The Runs history lists every run of the pipeline with its origin (production, dry run, or scheduled), status, and per-status counts.

Cross-run deduplication

For the Act (none) sink — the one with real, non-idempotent side effects — Fruxon keeps a cross-run ledger of items already processed successfully. On the next run, items the pipeline has already acted on are skipped, so a record never gets a second ticket or a duplicate message. The dedup key is the record's Item id path.

The other sinks don't need this: Collect and Index are safe to re-run (Index fully replaces the snapshot), and Write back overwrites the same cell by position, so re-running just refreshes the value.

Running on a schedule

To run a pipeline unattended, wire a Schedule trigger to it instead of to an agent. The trigger fires the pipeline on its cadence — the same frequency / interval / timezone machinery as scheduled agent runs. Fruxon won't start a new scheduled run while the pipeline's previous run is still in flight, so a slow run can't pile up on itself. Scheduled runs only fire while the pipeline is Active.

See Agent Network → Triggers for how schedule triggers are set up.

API

Collection pipelines are managed through tenant-scoped REST endpoints. The token scopes are pipelines:read, pipelines:write, and pipelines:run.

EndpointDoes
GET …/collectionPipelines · POST …/collectionPipelinesList / create pipelines
GET · PUT · DELETE …/collectionPipelines/{id}Read, replace, delete a pipeline (run history is retained on delete)
POST …/collectionPipelines/{id}:runStart a run (request body selects production vs dry-run origin)
GET …/collectionPipelines/{id}/runsRun history
GET …/collectionRuns/{id}One run's status, counters, timing, and cost
GET …/collectionRuns/{id}/itemsThe per-item status grid
GET …/collectionRuns/{id}/resultsOne row per item, joined to the agent's output

See the API Reference for full request and response shapes.

Collection Pipelines is a newer capability being rolled out. If Pipelines isn't in your sidebar, it isn't enabled for your tenant yet — contact Fruxon (self-hosted operators enable it with the FRUXON_COLLECTION_PIPELINES_ENABLED flag).

Next steps

On this page