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

# Migrate to Kumo Relational Client 1.0

> Update package names, imports, model identifiers, and removed client APIs for Kumo Relational Client 1.0

Kumo Relational Client 1.0 renames the client, engine, connectors, and model identifier. It also removes the tabular model surface and the public adapter registry.

## Update package names

| Earlier package                  | Version 1.0 package      |
| -------------------------------- | ------------------------ |
| `nemotron-structured-client`     | `kumo-relational-client` |
| `nemotron-relational`            | `kumo-relational-engine` |
| `nemotron-structured-connectors` | `kumo-connectors`        |

Install the supported relational workflow with:

```bash
pip install "kumo-relational-client[relational]"
```

The client, connectors, and engine are released together and share version `1.0.0`. Keep their versions aligned when pinning the distributions separately.

## Update imports and the client class

```python
from kumo_relational_client import RelationalClient, relational

graph = relational.Graph.from_data(tables)

with RelationalClient(url="http://localhost:8000") as client:
    result = client.relational(graph).predict(query, indices=entity_ids)
```

Use `kumo_relational_client.relational` as the supported graph interface. Standard applications should not import or initialize `kumo_relational_engine` directly.

## Update the model identifier

The only accepted model identifier is `kumo-relational`:

```python
client.capabilities("kumo-relational")
```

The identifiers `tabicl`, `kumo-rfm`, `nemotron-relational`, and `nemotron-relational-v1` are not aliases and are rejected. Calls through `client.relational(graph)` select the correct identifier automatically.

## Remove registry-based integration code

Version 1.0 removes `ModelAdapter`, `AdapterRegistry`, the `registry=` constructor argument, and client registration methods. Construct `RelationalClient` without a registry and run inference through the relational model handle.

The tabular client surface and `client.tabular()` are also removed. Version 1.0 supports Kumo Relational only, and `client.models()` returns:

```text
['kumo-relational']
```

## Update error handling

Catch client-boundary failures through `RelationalError` and branch on its stable `code`:

```python
from kumo_relational_client import RelationalError

try:
    result = client.relational(graph).predict(query)
except RelationalError as error:
    print(error.code)
```

Package-specific error roots are `kumo_relational_engine.KumoRelationalError` and `kumo_connectors.ConnectorError`. Connection failures such as authentication, timeout, and unreachable-endpoint failures are translated to the `RelationalError` hierarchy when they cross the client boundary.

## Review behavior changes

Before upgrading production workflows, account for the following changes:

* Multiclass `CLASS` values preserve the target column's data type instead of always becoming strings.
* Unknown `inference_config` keys are rejected instead of silently dropped.
* `edges=[]` means no relationships and suppresses relationship inference; use `edges=None` to allow declared or inferred relationships.
* `RelationalClient(max_retries=...)` also controls transient retries on the relational transport.
* Authenticated non-local endpoints must use HTTPS.
* A closed `RelationalClient` cannot be reused.

After updating, run a representative prediction for each task type and verify the task-dependent result shapes described in [Prediction Results](/rfm/prediction-results).