---
title: Digital Twins
slug: sdk/Usage-Guideline-Authentication/digital-twins
docTags: 
createdAt: 2025-03-20T20:00:47.059Z
---

The `digital_twins` module manages the Digital Twin layer on Litmus Edge: models, instances, static and dynamic attributes, transformations, hierarchy, and parameters.

## Imports

```python
from litmussdk import digital_twins
```

All sub-areas are exposed off the package root: `list_models`, `create_model`, `list_all_instances`, `create_dynamic_attribute`, `save_hierarchy`, `set_model_parameters`, etc.

## Models

```python
# List all model definitions
models = digital_twins.list_models()

# Create a new model
model = digital_twins.create_model(name="PumpModel", description="Centrifugal pump")
model_id = model.id

# Update / clone / delete
digital_twins.update_model(model_id, name="PumpModel-v2")
clone = digital_twins.clone_model(model_id, new_name="PumpModel-clone")
digital_twins.delete_model(model_id)

# Export / import (template payload)
payload = digital_twins.export_model(model_id)
digital_twins.import_model(payload)
```

## Instances

```python
# List instances of a model
instances = digital_twins.get_instance_by_model(model_id)
all_instances = digital_twins.list_all_instances()

# Create / update / delete
inst = digital_twins.create_instance(model_id=model_id, name="Pump-01")
digital_twins.update_instance(inst.id, name="Pump-01-v2")
digital_twins.delete_instance(inst.id)

# Set running state
digital_twins.set_instance_state(inst.id, state="RUNNING")
```

## Static Attributes

Static attributes are key/value pairs attached to a model that don't change at runtime (e.g. location, manufacturer).

```python
attrs = digital_twins.list_static_attributes(model_id)

digital_twins.create_static_attributes(
    model_id=model_id,
    attributes=[{"key": "Location", "value": "Plant 1"}],
)

digital_twins.delete_static_attribute(attr_id)
```

## Dynamic Attributes

Dynamic attributes pull live values from a tag, processor, or topic.

```python
dyn = digital_twins.list_dynamic_attributes(model_id)

new = digital_twins.create_dynamic_attribute(
    model_id=model_id,
    name="Pressure",
    data_type="Number",
    unit="kPa",
    topic="pump.pressure",
)
digital_twins.update_dynamic_attribute(new.id, unit="psi")
digital_twins.delete_dynamic_attribute(new.id)
```

## Transformations

Transformations apply a formula to one or more dynamic attributes.

```python
transforms = digital_twins.list_transformations(model_id)

digital_twins.create_transformations(
    model_id=model_id,
    transformations=[{
        "name": "PressureDelta",
        "formula": "Pressure_in - Pressure_out",
    }],
)

digital_twins.delete_transformations([transform_id])
```

## Hierarchy

Models can be organized into a tree so child instances inherit context from their parent.

```python
tree = digital_twins.get_hierarchy(model_id)
digital_twins.save_hierarchy(model_id, hierarchy=tree)
```

## Parameters (4.0.x only)

Model and instance parameters are first-class settings that can be queried and tweaked at runtime. These functions raise `UnsupportedVersionError` on 3.x.

```python
model_params = digital_twins.list_model_parameters(model_id)
inst_params = digital_twins.list_instance_parameters(inst.id)

digital_twins.set_model_parameters(model_id, parameters={"polling_interval": "1000"})
digital_twins.delete_model_parameters(model_id, parameter_names=["polling_interval"])
```

## Schema Introspection

```python
schema = digital_twins.schema_introspection()
```

Useful for tooling that needs the GraphQL schema for digital twins.

## License

Copyright (c) Litmus Automation Inc.
