skillfed

pycrdt

Python bindings for Yrs

pycrdt v0.14.2 2.3M downloads/30d#3,147 on PyPI203
Permissive license Active released

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 pycrdt

uv

uv add pycrdt

poetry

poetry add pycrdt

Installing 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

Development Status :: 4 - BetaIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseProgramming Language :: PythonProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyProgramming Language :: Rust

Tags

crdt python bindingscollaborative data structuresconflict-free replicationdistributed data syncyrs python wrapperreal-time collaborationcrdt library python
crdtcollaborationdistributed-systems

More Software Development packages