pycrdt
Python bindings for Yrs
What it is and what it does
pycrdt is a Python binding to Yrs, a Rust-based CRDT library that provides conflict-free replicated data types for building collaborative applications. It allows multiple clients to modify shared data structures simultaneously, with automatic conflict resolution ensuring all replicas converge to the same state without explicit coordination. The package exposes Yrs's core data types and operations through a Python API, making CRDT functionality accessible to Python developers building real-time collaborative features.
The library depends on anyio, exceptiongroup, and typing-extensions for async support and compatibility across Python versions. It is actively maintained, supports Python 3.10 through 3.14, and is distributed as compiled wheels for most common platforms. With over 2 million monthly downloads, it occupies a stable position in the top 5000 PyPI packages, indicating real-world adoption despite being in Beta development status.
Use it for:
- Building real-time collaborative editing features (e.g., shared documents, whiteboards) where multiple users edit simultaneously.
- Implementing distributed state synchronization in peer-to-peer or decentralized applications without a central authority.
- Creating offline-first applications that merge local and remote changes automatically when connectivity is restored.
- Designing multiplayer game state management where client-side changes must converge across all players.
- Building collaborative note-taking or task-management systems with automatic conflict resolution.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
pycrdt provides Python bindings for Yrs, a CRDT (Conflict-free Replicated Data Type) library, enabling collaborative data structures that automatically resolve conflicts across distributed systems.
Yes, if you need CRDT functionality in Python. pycrdt is actively maintained, permissively licensed, and backed by a mature Rust implementation (Yrs). Medium install friction is manageable for most environments. No known vulnerabilities. Best suited for developers building collaborative or distributed systems who want production-grade CRDT semantics without implementing them from scratch.
Install
pycrdt on PyPI
pip
pip install pycrdtuv
uv add pycrdtpoetry
poetry add pycrdtInstalling pycrdt
Before you install
Medium install friction due to compiled wheels across many platforms (CPython 3.10–3.14, PyPy, multiple architectures). Active maintenance with a recent release (15 days ago) and steady repository activity; 203 stars indicate modest but engaged adoption.
License in practice
MIT license (permissive) means you can use, modify, and distribute pycrdt with minimal restrictions, making it suitable for both open-source and commercial projects.
Quickstart
pip install pycrdt
import pycrdt
# Create a CRDT document
doc = pycrdt.YDoc()
text = doc.get_text('shared_text')
text.extend('Hello')
Requires Python 3.10 or later; compiled wheels are available for most platforms but installation may require a C compiler on unsupported architectures.
Verify before relying
- Whether pycrdt's API surface and performance characteristics are suitable for your specific collaboration use case.
- How pycrdt handles network synchronization and persistence—whether it includes built-in transport or requires external integration.
- Whether the Yrs upstream library's design decisions and maturity level meet your production requirements.
Package facts
| License | not declared (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 3 — anyio, exceptiongroup, typing-extensions |
| Maintenance | actively maintained — 15 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 2,311,618/month — #3,147 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pycrdt-0.14.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl; pycrdt-0.14.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; pycrdt-0.14.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl; pycrdt-0.14.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl; pycrdt-0.14.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl; pycrdt-0.14.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pycrdt-0.14.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl; pycrdt-0.14.2-cp310-cp310-musllinux_1_2_aarch64.whl; pycrdt-0.14.2-cp310-cp310-musllinux_1_2_armv7l.whl; pycrdt-0.14.2-cp310-cp310-musllinux_1_2_i686.whl; pycrdt-0.14.2-cp310-cp310-musllinux_1_2_x86_64.whl; pycrdt-0.14.2-cp310-cp310-win32.whl; pycrdt-0.14.2-cp310-cp310-win_amd64.whl; pycrdt-0.14.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl; pycrdt-0.14.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; pycrdt-0.14.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl; pycrdt-0.14.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl; pycrdt-0.14.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl; pycrdt-0.14.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pycrdt-0.14.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl
Keywords: crdt
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
loroLoro provides Python bindings for a CRDT…
unclear · top 5,000 on PyPI
pycrdt-storeProvides persistent storage backends for…
permissive · top 15,000 on PyPI
y-pyYpy is a Python binding for Y-CRDT that…
permissive · top 5,000 on PyPI
pycrdt-websocketPycrdt-websocket provides an async WebSocket…
permissive · top 5,000 on PyPI
jupyter-ydocProvides pycrdt-based collaborative data…
permissive · top 5,000 on PyPI
jupyter-server-ydocAdds real-time collaborative editing to Jupyter…
permissive · top 5,000 on PyPI
jupyter-docproviderAdds real-time collaborative editing to…
permissive · top 15,000 on PyPI
jupyter-collaborationAdds real-time collaborative editing to…
permissive · top 15,000 on PyPI
ypy-websocketYpy-websocket is an async WebSocket connector…
permissive · top 5,000 on PyPI
jupyter-collaboration-uiAdds real-time collaboration UI elements to…
permissive · top 15,000 on PyPI