Skip to main content
Pipelines are the Foundry surface: ingest, clean, chunk, enrich, index. The CLI mirrors the visual canvas: every node, every edge, every scheduled run is scriptable. The pipeline lifecycle is the biggest CLI surface after flows: plan on flows use for your Flow and separately reference pipelines by their IDs.

Command groups

  • CRUD: pipelines list/get/create/update/delete
  • Nodes: pipelines nodes add/list/update/remove
  • Edges: pipelines edges connect/list/update/delete
  • Schedule: pipelines schedule set/clear
  • Runs: pipelines dry-run, pipelines run file/document/folder
  • Programmatic invoke: pipelines invoke, pipelines rotate-secret
  • Blocks: pipelines blocks test/ingest-local
  • Palette introspection: pipelines palette, pipelines block
  • Publish: pipelines publish/rollback, pipelines publications list/live
  • Logs: pipelines logs list/get
  • Bulk: pipelines sync
  • Cloud ingest: pipelines ingest-cloud

Pipeline CRUD

List / get

list gives one row per pipeline. get prints full metadata plus nodes and edges.

Create

Flags:
  • --name (required): display name.
  • --stages (required): comma list of stage names in order.
  • --id <id>: optional explicit ID; otherwise server mints.
  • --vector-store pgvector|qdrant: index backend for the output stage.

Update

  • --set-name <n>, --set-stages <s,…>, --set-vector-store <backend>.

Delete

Nodes and edges cascade. Live pipeline versions remain reachable by ID for a grace period.

Nodes

Nodes are the individual blocks in the pipeline canvas: each palette entry (src_local, chunk_markdown, embed_openai, etc.) becomes a node instance.

List

Prints all nodes as JSON.

Add

Flags:
  • --palette-id (required): the palette entry ID.
  • --stage (required): which pipeline stage.
  • --title, --icon, --tone (required): display.
  • --order (required): visual order within the stage.
  • --id <id>: explicit ID; server mints if omitted.
  • --sublabel <text>: small caption under title.
  • --config <json>: block-specific config.
  • --notes <text>: free-text notes.
  • --output-ports <json>: override the palette’s default output ports.

Update

--set-* flags: --set-title, --set-sublabel, --clear-sublabel, --set-stage, --set-order, --set-config, --set-notes, --clear-notes, --set-output-ports.

Remove

Edges

List / connect / update / delete

Flags on connect: --from-node-id, --to-node-id (required), --id <id>, --from-port <port>, --label <text>.

Schedule

Set

  • --cron <expr>: 5-field cron.
  • --tz <IANA>: timezone.
  • --target <tag>: the folder tag to process on each run.
  • --sample <n>: cap items per scheduled run.
Only flags passed change. Omit --cron to keep the current one, e.g. change only the target.

Clear

Wipes all schedule fields: pipeline becomes manual-only.

Running a pipeline

Dry-run against inline text

Runs the pipeline end-to-end against the given text without persisting output. Prints results per stage.

Run against a file

Multipart-uploads the file and runs the pipeline.

Run against a stored document

Runs against a document already in the library.

Run against a folder

Runs against every document tagged billing (up to --max-documents).

Programmatic invoke

invoke: call the API trigger

Programmatic equivalent of curl /foundry/:apiSlug against the public endpoint, minus the per-trigger auth (your workspace PAT already covers it). Async: returns runId + statusUrl immediately; the background executor drives the DAG. Flags:
  • --input <JSON|@file|->: payload. - reads stdin; @file reads a file; literal starting with {/[ is parsed as JSON, else wrapped as a JSON string.
  • --variables <JSON|@file|->: per-run flow variable overrides. Merged over pipeline defaults; unknown keys are ignored.
  • --idempotency-key <string>: dedupe key. Same key → same runId (no new execution).
  • --test: run the current DRAFT graph instead of the published snapshot. Skips the “publish first” gate. Use during iteration; publish before shipping externally.

rotate-secret: rotate an API trigger’s inbound token

Rotates one trg_http_api node’s apiAuthSecret. The DRAFT and (if the pipeline has a live publication) a new live version with only that trigger’s secret swapped both land atomically. External callers 401 the moment this returns. The plaintext token is printed to stdout once; save it immediately (secret manager, vault). There’s no “print again” path.

Single-block testing

Test one palette block in isolation: no pipeline required. Useful when iterating on chunker or enricher config. For src_local nodes on a running pipeline:
Kicks off a local-filesystem scan.

Palette introspection

palette: list palette IDs

Every palette id the pipeline builder knows about: the six-stage groups plus the deprecated-but-alive legacyHidden entries. Use the id column as --palette-id on nora pipelines nodes add. Pair with pipelines block to see the config shape before you write a --config JSON. Flags:
  • --stage <stage>: narrow to one stage. Also accepts legacy.
  • --profile core|generic: core (default) hides medical / insurance / saas vertical items; generic shows everything.

block: schema for one palette id

Prints the config-form schema the Inspector renders for one palette id: fields, defaults, options, presets. Use this to build a --config payload for nora pipelines nodes add without guessing keys.

Publishing pipelines

Pipelines version and publish like Flows.

Publish

Freezes DRAFT into a live version. Scheduled runs and downstream consumers use the live version.

Rollback

Flips the live pointer to version seq=5.

Publications

list shows history. live fetches the currently-live payload.

Logs

List runs

Filters:
  • --status ok|error
  • --search <text>: full-text over log payloads.
  • --since <ISO> / --until <ISO>
  • --run-kind <kind>: filter by which entry point.
  • --limit <n>: max rows.
  • --json: machine-readable.

Get one

Full per-stage detail for one run.

Bulk sync

Replaces the pipeline’s name, stages, nodes, and edges from a JSON file. Idempotent: safe to run in CI on every deploy.

Cloud ingest

Kicks off a manual bulk ingest for a src_cloud node (Google Drive, S3, etc.). Otherwise these run only on the schedule.

Recipes

Bootstrap a minimal pipeline in one script

CI: sync pipeline from git

Get the most recent errored run

Turn off a schedule for maintenance