vuer.rtc
vuer.rtc - CRDT-based real-time collaborative data structures for Vuer.
This module provides a Python implementation of the vuer-rtc TypeScript package, enabling consistent state management across Python and JavaScript clients.
Key Features:
- CRDT-based conflict resolution (Last-Write-Wins, additive operations)
- Journal with snapshots for undo/redo and fast replay
- Vector clocks for causal ordering
- Compatible with the TypeScript @vuer-ai/vuer-rtc package
Basic Usage: from vuer.rtc import create_graph, Operation
Create a store
store = create_graph( session_id="my-session", on_send=lambda msg: websocket.send(msg.to_dict()), )
Add a node
store.edit(Operation( key="cube-1", otype="node.insert", path="", tag="Mesh", parent_key="scene", )) store.commit()
Modify properties
store.edit(Operation( key="cube-1", otype="vector3.add", path="transform.position", value=[1, 0, 0], )) store.commit()
Get current state
graph = store.graph cube = graph.get_node("cube-1") position = cube.get_property("transform.position")
See https://rtc.vuer.ai for full documentation.
Public imports
These symbols are available from this module. Their definitions are documented in the linked modules.
create_vector_clock—vuer.rtc.types.create_vector_clockincrement_clock—vuer.rtc.types.increment_clockmerge_clocks—vuer.rtc.types.merge_clockscompare_clocks—vuer.rtc.types.compare_clocksOType—vuer.rtc.types.OTypeOperation—vuer.rtc.types.OperationCRDTMessage—vuer.rtc.types.CRDTMessagegenerate_message_id—vuer.rtc.types.generate_message_idgenerate_uuid—vuer.rtc.types.generate_uuidSceneNode—vuer.rtc.types.SceneNodeSceneGraph—vuer.rtc.scene_store.SceneGraphcreate_empty_graph—vuer.rtc.types.create_empty_graphJournalEntry—vuer.rtc.types.JournalEntryEditBuffer—vuer.rtc.types.EditBufferSnapshot—vuer.rtc.types.SnapshotClientState—vuer.rtc.types.ClientStatecreate_initial_snapshot—vuer.rtc.types.create_initial_snapshotcreate_initial_state—vuer.rtc.types.create_initial_stateGraphStore—vuer.rtc.store.GraphStorecreate_graph—vuer.rtc.store.create_graphapply_message—vuer.rtc.operations.dispatcher.apply_messageapply_messages—vuer.rtc.operations.dispatcher.apply_messagesapply_operation—vuer.rtc.operations.dispatcher.apply_operationapply_message_mut—vuer.rtc.operations.dispatcher.apply_message_mutapply_messages_mut—vuer.rtc.operations.dispatcher.apply_messages_mutregister_apply_fn—vuer.rtc.operations.registry.register_apply_fnSceneStore—vuer.rtc.scene_store.SceneStoreSubscriptionContext—vuer.rtc.scene_store.SubscriptionContext