loro
Python bindings for [Loro](https://loro.dev)
What it is and what it does
Loro is a Python interface to a CRDT library written in Rust, designed for building local-first applications where multiple clients can edit shared data structures without a central server. It exposes rich data types—Text, List, Map, Tree, Movable List, Counter—and handles conflict resolution automatically so concurrent edits merge correctly. The Rust implementation provides performance that would be difficult to achieve in pure Python.
You use Loro by creating a LoroDoc (document), obtaining containers for specific data types, making edits, and subscribing to changes. It's intended for scenarios where you need offline-first collaboration, peer-to-peer sync, or conflict-free merging of concurrent updates across distributed clients.
Use it for:
- Build offline-first collaborative editors where multiple users edit the same document without a central server.
- Implement peer-to-peer data synchronization with automatic conflict resolution across network partitions.
- Create local-first applications that sync state between devices while maintaining consistency.
- Add real-time collaborative features (shared lists, maps, text) to existing Python applications.
- Prototype or deploy CRDT-based systems where Rust performance is needed but Python integration is preferred.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Loro provides Python bindings for a CRDT (Conflict-free Replicated Data Type) library implemented in Rust, enabling high-performance collaborative data structures for local-first applications.
Yes, if you need CRDT-backed collaborative data structures in Python and are comfortable with the unclear license status. The package is actively maintained, has no known vulnerabilities, and offers good platform coverage via pre-built wheels. Verify the license terms before production use. Medium install friction is acceptable for most development environments.
Install
loro on PyPI
pip
pip install lorouv
uv add loropoetry
poetry add loroInstalling loro
Before you install
Medium install friction due to compiled Rust bindings; wheels are pre-built for common platforms (CPython 3.10–3.11, Linux/macOS/Windows), but development builds require Rust toolchain and maturin. Package is actively maintained with a recent release.
License in practice
License status is unclear—no SPDX identifier or raw license text is declared in package metadata. Verify the actual license before use in proprietary or copyleft-sensitive projects.
Quickstart
pip install loro
from loro import LoroDoc
doc = LoroDoc()
text = doc.get_text("text")
text.insert(0, "Hello, Loro!")
sub = doc.subscribe_root(lambda e: print(e))
doc.commit()
Requires Python 3.8 or later. Development builds require Rust toolchain and maturin; pre-built wheels available for common platforms.
Verify before relying
- Exact license terms and compliance obligations—metadata shows no SPDX or raw license declaration.
- Performance characteristics and scalability limits for large documents or high-frequency updates.
- Stability guarantees and API compatibility policy across minor/patch versions.
Package facts
| License | not declared (unclear) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 24 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 2,526,285/month — #3,020 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: loro-1.13.2-cp310-cp310-macosx_10_12_x86_64.whl; loro-1.13.2-cp310-cp310-macosx_11_0_arm64.whl; loro-1.13.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; loro-1.13.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl; loro-1.13.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl; loro-1.13.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl; loro-1.13.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; loro-1.13.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl; loro-1.13.2-cp310-cp310-musllinux_1_2_aarch64.whl; loro-1.13.2-cp310-cp310-musllinux_1_2_armv7l.whl; loro-1.13.2-cp310-cp310-musllinux_1_2_i686.whl; loro-1.13.2-cp310-cp310-musllinux_1_2_x86_64.whl; loro-1.13.2-cp310-cp310-win32.whl; loro-1.13.2-cp310-cp310-win_amd64.whl; loro-1.13.2-cp311-cp311-macosx_10_12_x86_64.whl; loro-1.13.2-cp311-cp311-macosx_11_0_arm64.whl; loro-1.13.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; loro-1.13.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl; loro-1.13.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl; loro-1.13.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Keywords: local-first, CRDT, loro
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
pycrdtpycrdt provides Python bindings for Yrs, a CRDT…
permissive · top 5,000 on PyPI
y-pyYpy is a Python binding for Y-CRDT that…
permissive · top 5,000 on PyPI
eclipse-zenohEclipse Zenoh is a Python binding to a…
unclear · top 15,000 on PyPI
pycrdt-websocketPycrdt-websocket provides an async WebSocket…
permissive · top 5,000 on PyPI
pycrdt-storeProvides persistent storage backends for…
permissive · top 15,000 on PyPI
delta-kernel-rust-sharing-wrapperProvides Python bindings to the Rust-based…
permissive · top 5,000 on PyPI
zubanZuban is a Rust-based Python language server…
agpl · top 15,000 on PyPI
rustworkxA high-performance graph library for Python,…
permissive · top 5,000 on PyPI
spdlogProvides a Python wrapper around the C++ spdlog…
permissive · top 15,000 on PyPI
ignore-pythonProvides fast recursive directory traversal…
unclear · top 15,000 on PyPI