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

# Connect the Current Run to External Systems

> Use a Reporter, JUnit, or process feedback to send information from one current Invocation to an external system.

A Reporter belongs to the current Invocation. It can send information known to that process to an external system. It does not own the Record, select samples, or replace later Report viewing.

## Choose the right output

| Need                          | Use                                                                |
| ----------------------------- | ------------------------------------------------------------------ |
| A CI gate                     | The `niceeval exp` process exit status.                            |
| A CI test-results view        | `--junit <path>`.                                                  |
| Process feedback for a script | `niceeval exp --json`.                                             |
| A later view of current data  | The final receipt's `runIds` with `show`, `view`, or `view --out`. |
| A custom external destination | A Reporter attached to the Invocation.                             |

## Use JUnit in CI

```sh theme={null}
npx niceeval exp ci --junit ./artifacts/niceeval-junit.xml
```

The file is an external output for the CI platform. The quiescent Record remains the owner of current Verdicts, Usage, assertions, and diagnostics.

## Read current-process feedback

```sh theme={null}
npx niceeval exp ci --json
```

The output is ordered NDJSON. Progress and diagnostic records describe only the current Invocation. The final record is a receipt with its `invocationId`, `runIds`, timing, and completion status.

Use those `runIds` to select a Sample in a later step. Do not treat the feedback stream as a persisted Record protocol.

## Write a custom Reporter

A custom Reporter receives the data that the current process makes available. Use it for a destination not covered by JUnit or an existing integration. Keep its work bounded: reporter failure should be reported clearly without changing the persisted facts that a later Report reads.

When the Invocation finishes, use its receipt's Run IDs to inspect the resulting historical facts:

```sh theme={null}
npx niceeval show --run <runId>
npx niceeval view --run <runId> --no-open
```

## Keep long-lived data in the Record

The Reporter, JUnit file, and NDJSON stream are outputs for one process. The Record is an editable fact dataset. Its named owner-local channels preserve business values until an authorized writer or user edits them while the directory is quiescent.

For result inspection and static sharing, see [Viewing Results](/docs/tutorials/viewing-results) and [Publish a Static Report](/docs/tutorials/publish-report).
