> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# Output stage

> Persist enriched chunks into the store your Agents read from.

The **Output** stage is where cleaned, chunked, enriched data becomes retrievable knowledge. Every pipeline must have at least one Output block.

## Output block types

### Document store

Writes chunks into a Nora **document collection**. This is the default target for most pipelines.

Configure:

* **Collection name** — new or existing.
* **Write mode** — see below.
* **Retention** — how long chunks stay after their source is deleted (default: 90 days as tombstones, then removed).

Once written, agents can retrieve from this collection by attaching it as a data source (see [Attach data to agents](/build/knowledge/attach)).

### Memory space

Writes chunks or summary facts into a **memory space**. Choose the space type when creating (Wiki, Index, Session, Evolution — see [Memory spaces](/build/memory/spaces)).

Common recipe: run a Foundry pipeline over a chat transcript archive, output as a memory space, and attach that space to your support Agent so it can recall prior conversations.

### Knowledge graph

Writes extracted entities and relationships as graph nodes and edges. Useful for structured domain data. See [Causal graph overview](/build/causal-graph/overview).

### External sink

Push results to a system outside Nora:

* HTTP webhook (POST each chunk).
* Kafka topic.
* S3 (as JSONL).
* Postgres (upsert into a table).

Useful when Nora is producing knowledge consumed by systems you already have.

## Write modes

* **Upsert** — write new chunks, update chunks whose content hash changed, leave unchanged chunks alone. Default. What you want in 90% of cases.
* **Replace** — clear the collection first, then write everything from this run. Use only for full rebuilds.
* **Append** — never touch existing chunks, always write new. Rare — use if you want historical versions accessible.

## Handling deletes

When a source item disappears, Nora emits a **delete event**. Output blocks default to marking derived chunks as **superseded** — retrieval skips them, but they remain queryable for audit. Change to hard-delete in the Output block settings if you need it.

## Idempotency

Output writes are idempotent by chunk content hash. Re-running a pipeline against the same source produces the same store state. This lets you rerun freely without duplication.

## Transactions

An Output block's writes are committed atomically per source item: either all chunks from a given source land, or none do (with the run marked as failed for that item). This prevents partial ingest from leaving your Agents with half-consistent state.

## Split outputs

You can wire multiple Output blocks in parallel — e.g., write to a general document collection **and** a specialized memory space. Each Output has its own filter — put a **filter** step upstream if you want different subsets going to different destinations.

## Verifying the write

The **Run logs** page shows per-Output stats: items written, items updated, items skipped as unchanged, items superseded, bytes stored.
