> This page is for version 0.5.1.
> For other versions, use one of these documentation indexes:
> - Main (default): https://docs.nvidia.com/nemo/gym/main/llms.txt
> - 0.7.0: https://docs.nvidia.com/nemo/gym/v0.7.0/llms.txt
> - 0.6.0: https://docs.nvidia.com/nemo/gym/v0.6.0/llms.txt
> - 0.5.1: https://docs.nvidia.com/nemo/gym/v0.5.1/llms.txt
> - 0.5.0: https://docs.nvidia.com/nemo/gym/v0.5.0/llms.txt
> - 0.4.0: https://docs.nvidia.com/nemo/gym/v0.4.0/llms.txt
> - 0.3.0: https://docs.nvidia.com/nemo/gym/v0.3.0/llms.txt
> - 0.2.1: https://docs.nvidia.com/nemo/gym/v0.2.1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/gym/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/gym/_mcp/server.

# nemo_gym.models.token_capture

Provide the core training-token capture interfaces.

Training capture is separate from evaluation capture.
Middleware sets a request-scoped token sink.
The model server records a `TokenEntry` from its complete response.
Consumers call `TokenSource.freeze` for an atomic snapshot.
The snapshot includes entries and incomplete state.
Its `snapshot_id` identifies the exact frozen state.
`TokenCaptureStore` is Gym's local sink and source implementation.
Framework transports may provide their own sink and source.
`finalize_rollout_token_capture` rebuilds one rollout record from its frozen snapshot.
The incomplete state prevents training on a rollout that lost a model call.
Finalization freezes and rebuilds the rollout.
Finalization does not retire the snapshot.
The caller retires it only after durable handoff.
Retirement uses the frozen `snapshot_id` and version.
Failed or masked builds retain their capture evidence.

This package is token capture's public API.
Code outside `nemo_gym/` imports token capture names from `nemo_gym.models.token_capture`,
not from `nemo_gym.models`.
Every name it serves imports without Gym's server stack or an OpenAI client,
because frameworks implement its protocols.
Framework token staging has a public API of its own, `nemo_gym.models.token_capture.staging`.

## Subpackages

* **[`nemo_gym.models.token_capture.adapters`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/adapters)**
* **[`nemo_gym.models.token_capture.staging`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/staging)**

## Submodules

* **[`nemo_gym.models.token_capture.builder`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/builder)**
* **[`nemo_gym.models.token_capture.completion`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/completion)**
* **[`nemo_gym.models.token_capture.config`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/config)**
* **[`nemo_gym.models.token_capture.conformance`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/conformance)**
* **[`nemo_gym.models.token_capture.consumer`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/consumer)**
* **[`nemo_gym.models.token_capture.control_routes`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/control_routes)**
* **[`nemo_gym.models.token_capture.delivery`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/delivery)**
* **[`nemo_gym.models.token_capture.external_capture`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/external_capture)**
* **[`nemo_gym.models.token_capture.fingerprint`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/fingerprint)**
* **[`nemo_gym.models.token_capture.lineage`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/lineage)**
* **[`nemo_gym.models.token_capture.protocols`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/protocols)**
* **[`nemo_gym.models.token_capture.records`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/records)**
* **[`nemo_gym.models.token_capture.replay`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/replay)**
* **[`nemo_gym.models.token_capture.sink`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/sink)**
* **[`nemo_gym.models.token_capture.store`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/store)**
* **[`nemo_gym.models.token_capture.terminal`](/nemo/gym/nemo-gym/nemo_gym/models/token_capture/terminal)**

## Package Contents

### Data

[`_PUBLIC_API`](#nemo_gym-models-token_capture-_PUBLIC_API)

### API

```python
nemo_gym.models.token_capture._PUBLIC_API = {'CAPTURE_REFUSAL_HEADER': 'protocols', 'CONTEXT_LENGTH_EXCEEDED_ERROR_CODE': 'r...
```