---
title: "vuer.rtc.operations.registry"
section: "Python API"
order: 17
description: "Python API reference for vuer.rtc.operations.registry"
---

# vuer.rtc.operations.registry

Registry for operation apply functions.

Each operation type has a registered apply function that handles applying
the operation to a scene node.

## register_apply_fn

```python
def register_apply_fn(otype: str) -> Callable[[ApplyFn], ApplyFn]
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L21)

Decorator to register an apply function for an operation type.

Usage:
    @register_apply_fn("vector3.set")
    def apply_vector3_set(node: SceneNode, op: Operation, lamport_time: int) -&gt; None:
        ...

## get_apply_fn

```python
def get_apply_fn(otype: str) -> Optional[ApplyFn]
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L38)

Get the apply function for an operation type.

## Registry

```python
class Registry
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L43)

Registry providing access to all registered apply functions.

## Registry.get

```python
def get(self, otype: str) -> Optional[ApplyFn]
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L48)

Get apply function for operation type.

## Registry.has

```python
def has(self, otype: str) -> bool
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L52)

Check if operation type is registered.

## Registry.apply

```python
def apply(self, node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L56)

Apply an operation to a node.

Args:
    node: The scene node to modify (mutated in place)
    op: The operation to apply
    lamport_time: Lamport timestamp for LWW operations

## Registry.registered_types

```python
def registered_types(self) -> list
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L73)

List all registered operation types.

## apply_number_set

```python
def apply_number_set(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L88)

Last-Write-Wins set for numbers.

## apply_number_add

```python
def apply_number_add(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L96)

Additive operation for numbers.

## apply_number_multiply

```python
def apply_number_multiply(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L103)

Multiplicative operation for numbers.

## apply_number_min

```python
def apply_number_min(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L110)

Take minimum of current and new value.

## apply_number_max

```python
def apply_number_max(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L117)

Take maximum of current and new value.

## apply_string_set

```python
def apply_string_set(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L129)

Last-Write-Wins set for strings.

## apply_string_concat

```python
def apply_string_concat(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L137)

Concatenate strings.

## apply_boolean_set

```python
def apply_boolean_set(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L155)

Last-Write-Wins set for booleans.

## apply_boolean_or

```python
def apply_boolean_or(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L163)

Logical OR (enable wins).

## apply_boolean_and

```python
def apply_boolean_and(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L170)

Logical AND (disable wins).

## apply_vector3_set

```python
def apply_vector3_set(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L182)

Last-Write-Wins set for Vector3.

## apply_vector3_add

```python
def apply_vector3_add(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L190)

Component-wise addition for Vector3.

## apply_vector3_multiply

```python
def apply_vector3_multiply(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L198)

Component-wise multiplication for Vector3.

## apply_vector3_apply_euler

```python
def apply_vector3_apply_euler(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L206)

Rotate vector by Euler angles (XYZ order).

## apply_vector3_apply_quaternion

```python
def apply_vector3_apply_quaternion(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L236)

Rotate vector by quaternion [x, y, z, w].

## apply_euler_set

```python
def apply_euler_set(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L264)

Last-Write-Wins set for Euler angles.

## apply_euler_add

```python
def apply_euler_add(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L272)

Component-wise addition for Euler angles.

## apply_quaternion_set

```python
def apply_quaternion_set(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L285)

Last-Write-Wins set for quaternions.

## apply_quaternion_multiply

```python
def apply_quaternion_multiply(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L293)

Quaternion multiplication (composition).

## apply_color_set

```python
def apply_color_set(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L317)

Last-Write-Wins set for colors.

## apply_color_blend

```python
def apply_color_blend(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L325)

Blend colors (average RGB values).

## apply_array_set

```python
def apply_array_set(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L354)

Last-Write-Wins set for arrays.

## apply_array_push

```python
def apply_array_push(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L362)

Append item to array.

## apply_array_union

```python
def apply_array_union(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L371)

Union of arrays (set-like, no duplicates).

## apply_array_remove

```python
def apply_array_remove(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L381)

Remove item from array by value.

## apply_object_set

```python
def apply_object_set(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L398)

Last-Write-Wins set for objects.

## apply_object_merge

```python
def apply_object_merge(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L406)

Deep merge objects (LWW per key at top level).

## apply_text_init

```python
def apply_text_init(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L422)

Initialize a text property.

## apply_text_insert

```python
def apply_text_insert(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L428)

Insert text at position.

## apply_text_delete

```python
def apply_text_delete(node: SceneNode, op: Operation, lamport_time: int) -> None
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.1.6/src/vuer/rtc/operations/registry.py#L444)

Delete text at position.

## Public imports

These symbols are available from this module. Their definitions are documented in the linked modules.

- [`Operation`](/python-api/rtc/types#operation) — `vuer.rtc.types.Operation`
- [`SceneNode`](/python-api/rtc/types#scenenode) — `vuer.rtc.types.SceneNode`
- [`SceneGraph`](/python-api/rtc/types#scenegraph) — `vuer.rtc.types.SceneGraph`
- [`OType`](/python-api/rtc/types#otype) — `vuer.rtc.types.OType`
