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

# ComponentIdentity

> Hardware identity of one component, as a plain JSON-serializable dict

```python theme={null}
from grid_robot_api.base.robot import ComponentIdentity
```

Hardware identity of one component, as a plain JSON-serializable dict.

The manufacturer-assigned identity of the physical unit behind a
component: burned into the device, it survives IP changes, renames,
and re-imaging, so it — not the user-chosen name or the configured
address — is what says *which* robot or sensor this is.

**Every field is optional and a missing field means "unknown", never
"different".** A key is present only when it was actually read from
the device (or is knowledge the class holds about itself); drivers
with no hardware identifier produce an empty mapping, and so does a
device that is unreachable. Consumers de-duplicating or verifying
hardware must therefore treat absence as unknown: two components
that both report no serial are not thereby the same unit, and are
not thereby different ones either.

**The field set is closed.** These four fields are all a component
can report: a driver hook that returns any other key has it dropped
with a warning, so the mapping always matches the config envelope's
`identity` block (`ComponentIdentityConfig`, which rejects
unknown keys). Extending the set means adding the field here and
there in one change.

Read it with `Component.getIdentity`; it also appears as the
`identity` block of `Component.serialize`.


## Related topics

- [MDP Config](/simulation/isaac/session_configuration/mdp.md)
- [Environment Config](/simulation/isaac/session_configuration/env.md)
- [RemoteRobot](/python-api/grid-nexus-client/remoterobot.md)
- [Sensors](/simulation/isaac/sensors.md)
- [Agent Config](/simulation/isaac/session_configuration/agent.md)
