> 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.token_id_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.
This leaf package avoids imports from Gym's server stack.
The rollout-record finalizer needs Gym's server stack.
It is deliberately not re-exported here.
Import `nemo_gym.token_id_capture.delivery` from server-side code.
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.

## Submodules

* **[`nemo_gym.token_id_capture.builder`](/nemo-gym/nemo_gym/token_id_capture/builder)**
* **[`nemo_gym.token_id_capture.config`](/nemo-gym/nemo_gym/token_id_capture/config)**
* **[`nemo_gym.token_id_capture.conformance`](/nemo-gym/nemo_gym/token_id_capture/conformance)**
* **[`nemo_gym.token_id_capture.consumer`](/nemo-gym/nemo_gym/token_id_capture/consumer)**
* **[`nemo_gym.token_id_capture.delivery`](/nemo-gym/nemo_gym/token_id_capture/delivery)**
* **[`nemo_gym.token_id_capture.fingerprint`](/nemo-gym/nemo_gym/token_id_capture/fingerprint)**
* **[`nemo_gym.token_id_capture.lineage`](/nemo-gym/nemo_gym/token_id_capture/lineage)**
* **[`nemo_gym.token_id_capture.protocols`](/nemo-gym/nemo_gym/token_id_capture/protocols)**
* **[`nemo_gym.token_id_capture.records`](/nemo-gym/nemo_gym/token_id_capture/records)**
* **[`nemo_gym.token_id_capture.sink`](/nemo-gym/nemo_gym/token_id_capture/sink)**
* **[`nemo_gym.token_id_capture.store`](/nemo-gym/nemo_gym/token_id_capture/store)**
* **[`nemo_gym.token_id_capture.terminal`](/nemo-gym/nemo_gym/token_id_capture/terminal)**

## Package Contents

### Data

[`__all__`](#nemo_gym-token_id_capture-__all__)

### API

```python
nemo_gym.token_id_capture.__all__ = ['Chain', 'TokenIdCaptureConfig', 'TokenEntry', 'TOKEN_ENTRY_MIN_SCHEMA_VERSION'...
```