> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/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... ``` ## Docs - [nemo_gym.models.token_capture.adapters](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/adapters.md) - [nemo_gym.models.token_capture.adapters.megatron](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/adapters/megatron.md) - [nemo_gym.models.token_capture.adapters.vllm](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/adapters/vllm.md) - [nemo_gym.models.token_capture.builder](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/builder.md) - [nemo_gym.models.token_capture.completion](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/completion.md) - [nemo_gym.models.token_capture.config](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/config.md) - [nemo_gym.models.token_capture.conformance](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/conformance.md) - [nemo_gym.models.token_capture.consumer](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/consumer.md) - [nemo_gym.models.token_capture.control_routes](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/control_routes.md) - [nemo_gym.models.token_capture.delivery](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/delivery.md) - [nemo_gym.models.token_capture.external_capture](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/external_capture.md) - [nemo_gym.models.token_capture.fingerprint](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/fingerprint.md) - [nemo_gym.models.token_capture.lineage](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/lineage.md) - [nemo_gym.models.token_capture.protocols](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/protocols.md) - [nemo_gym.models.token_capture.records](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/records.md) - [nemo_gym.models.token_capture.replay](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/replay.md) - [nemo_gym.models.token_capture.sink](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/sink.md) - [nemo_gym.models.token_capture.staging](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/staging.md) - [nemo_gym.models.token_capture.staging.capture](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/staging/capture.md) - [nemo_gym.models.token_capture.staging.conformance](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/staging/conformance.md) - [nemo_gym.models.token_capture.staging.digest](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/staging/digest.md) - [nemo_gym.models.token_capture.staging.protocols](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/staging/protocols.md) - [nemo_gym.models.token_capture.staging.rebuild](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/staging/rebuild.md) - [nemo_gym.models.token_capture.staging.records](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/staging/records.md) - [nemo_gym.models.token_capture.staging.routes](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/staging/routes.md) - [nemo_gym.models.token_capture.staging.terminal](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/staging/terminal.md) - [nemo_gym.models.token_capture.store](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/store.md) - [nemo_gym.models.token_capture.terminal](https://docs.nvidia.com/nemo/gym/v0.5.1/nemo-gym/nemo_gym/models/token_capture/terminal.md)