{"id":13415318,"url":"https://github.com/alangibson/awesome-crdt","last_synced_at":"2026-01-27T02:05:37.484Z","repository":{"id":40346033,"uuid":"145613073","full_name":"alangibson/awesome-crdt","owner":"alangibson","description":"A collection of awesome CRDT resources","archived":false,"fork":false,"pushed_at":"2021-03-20T03:16:21.000Z","size":94,"stargazers_count":1353,"open_issues_count":6,"forks_count":53,"subscribers_count":45,"default_branch":"master","last_synced_at":"2026-01-17T16:53:57.653Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alangibson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-21T19:58:51.000Z","updated_at":"2026-01-17T16:53:47.000Z","dependencies_parsed_at":"2022-08-03T04:16:09.110Z","dependency_job_id":null,"html_url":"https://github.com/alangibson/awesome-crdt","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alangibson/awesome-crdt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alangibson%2Fawesome-crdt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alangibson%2Fawesome-crdt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alangibson%2Fawesome-crdt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alangibson%2Fawesome-crdt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alangibson","download_url":"https://codeload.github.com/alangibson/awesome-crdt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alangibson%2Fawesome-crdt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28739316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T22:12:27.248Z","status":"ssl_error","status_checked_at":"2026-01-24T22:12:10.529Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T21:00:47.059Z","updated_at":"2026-01-27T02:05:37.469Z","avatar_url":"https://github.com/alangibson.png","language":null,"funding_links":[],"categories":["CRDTs or Conflict-Free Replicated Data Types","Technical","Others","others","Other Lists","Other Awesome Lists","Data Science","🌍 Community"],"sub_categories":["awesome-*","TeX Lists","Peer-to-Peer","Stay Connected"],"readme":"# Awesome CRDT\n\nA collection of awesome CRDT resources\n\n## Know Before You Go\n\n### Set Theory\n\n- [Set Notation and Concepts](https://link.springer.com/content/pdf/bbm%3A978-0-85729-829-4%2F1.pdf)\n- [Set theory symbols](https://www.rapidtables.com/math/symbols/Set_Symbols.html)\n\n### Order Theory\n\n- [Partially ordered set (Wikipedia)](https://en.wikipedia.org/wiki/Partially_ordered_set)\n- [Total Order (Wikipedia)](https://en.wikipedia.org/wiki/Total_order)\n- [Causal Ordering](http://scattered-thoughts.net/blog/2012/08/16/causal-ordering/)\n- [Semilattice (Wikipedia)](https://en.wikipedia.org/wiki/Semilattice)\n- [A CRDT Primer Part I: Defanging Order Theory](http://jtfmumm.com/blog/2015/11/17/crdt-primer-1-defanging-order-theory/)\n\n### Clocks\n\n- [Logical Clock (Wikipedia)](https://en.wikipedia.org/wiki/Logical_clock)\n- [Lamport Timestamps (Wikipedia)](https://en.wikipedia.org/wiki/Lamport_timestamps)\n- [Assigning Lamport \u0026 Vector Timestamps](https://www.cs.rutgers.edu/~pxk/417/notes/clocks/index.html)\n- [Vector Clock (Wikipedia)](https://en.wikipedia.org/wiki/Vector_clock)\n- [Version Vector (Wikipedia)](https://en.m.wikipedia.org/wiki/Version_vector)\n- [Why Logical Clocks are Easy](https://queue.acm.org/detail.cfm?id=2917756)\n\n## Papers \n\n### Foundations\n\n- [Achieving Convergence, Causality-Preservation, and Intention-Preservation in Real-Time Cooperative Editing Systems - Sun et. al. (1998)](http://diyhpl.us/%7Ebryan/papers2/distributed/distributed-systems/real-time-cooperative-editing-systems.1998.pdf)\n- [Designing a commutative replicated data type - Marc Shapiro et. al. (2007)](https://arxiv.org/pdf/0710.1784)\n- [CRDTs: Consistency without concurrency control - Mihai Letia et. al. (2009)](https://arxiv.org/pdf/0907.0929)\n- [A commutative replicated data type for cooperative editing - Nuno Preguiça (2009)](https://hal.inria.fr/inria-00445975/document)\n- [A comprehensive study of Convergent and Commutative Replicated Data Types - Marc Shapiro et. al. (2011)](https://hal.inria.fr/inria-00555588/document)\n- [Convergent and Commutative Replicated Data Types - Marc Shapiro et. al. (2011)](https://hal.inria.fr/hal-00932833/document)\n- [Conflict-free Replicated Data Types - Marc Shapiro et. al. (2011)](https://hal.inria.fr/inria-00609399v1/document)\n- [Pure Operation-Based Replicated Data Types - Carlos Baquero et. al. (2017)](https://arxiv.org/pdf/1710.04469.pdf)\n- [Evaluating CRDTs for Real-time Document Editing - Mehdi Ahmed-Nacer et. al.](https://members.loria.fr/CIgnat/files/pdf/AhmedNacerDocEng11.pdf)\n- [Large-Scale Geo-Replicated Conflict-free Replicated Data Types - Carlos Bartolomeu](http://www.gsd.inesc-id.pt/~ler/reports/carlosbartolomeu-midterm.pdf)\n- [Pure Operation-Based Replicated Data Types - Carlos Baquero et. al. (2017)](https://arxiv.org/pdf/1710.04469.pdf)\n- [Consistency, Availability, and Convergence - Mahajan et. al.](http://www.cs.utexas.edu/users/dahlin/papers/cac-tr.pdf)\n\n#### Clocks\n\n- [Time, Clocks, and the Ordering of Events in a  Distributed System - Leslie Lamport (1978)](https://lamport.azurewebsites.net/pubs/time-clocks.pdf)\n- [Virtual Time and Global States of Distributed Systems - Friedemann Mattern (1988)](https://www.vs.inf.ethz.ch/publ/papers/VirtTimeGlobStates.pdf)\n- [Timestamps in Message-Passing Systems That Preserve the Partial Ordering - Colin Fidge (1988)](http://fileadmin.cs.lth.se/cs/Personal/Amr_Ergawy/dist-algos-papers/4.pdf)\n- [Dotted Version Vectors: Efficient Causality Tracking for Distributed Key-Value Stores - Carlos Baquero et. al.](http://gsd.di.uminho.pt/members/vff/dotted-version-vectors-2012.pdf)\n\n### Applications\n\n- [WOOT: Real time group editors without Operational transformation - Gérald Oster et. al. (2005)](https://hal.inria.fr/inria-00071240/document)\n- [RGA, RHT, RFA: Replicated abstract data types: Building blocks for collaborative applications - Hyun-Gul Roh (2011)](http://csl.skku.edu/papers/jpdc11.pdf)\n- [Logoot: A Scalable Optimistic Replication Algorithm for Collaborative Editing on P2P Networks - Weiss et. al. (2009)](https://hal.archives-ouvertes.fr/inria-00432368/document)\n- [TreeDoc: A commutative replicated data type for cooperative editing (2009)](https://hal.inria.fr/inria-00445975/document)\n- [SwiftCloud: Fault-Tolerant Geo-Replication Integrated all the Way to the Client Machine - Marek Zawirski et. al. (2013)](https://arxiv.org/pdf/1310.3107.pdf)\n- [LSEQ: an Adaptive Structure for Sequences in Distributed Collaborative Editing - Brice Nédelec et. al. (2013)](https://hal.archives-ouvertes.fr/hal-00921633/document)\n- [WOOTR: Abstract unordered and ordered trees CRDT - Stéphane Martin et. al. (2011)](https://arxiv.org/pdf/1201.1784.pdf)\n- [Logoot-Undo: Distributed Collaborative Editing System on P2P Networks - Stéphane Weiss et. al.](https://s3.amazonaws.com/academia.edu.documents/39769048/Logoot-Undo_Distributed_Collaborative_Ed20151107-5753-e8mgn.pdf?AWSAccessKeyId=AKIAIWOWYYGZ2Y53UL3A\u0026Expires=1535395093\u0026Signature=0osSBA0TEG5rjZ58sr9z7%2FrC%2Bxc%3D\u0026response-content-disposition=inline%3B%20filename%3DLogoot-Undo_Distributed_Collaborative_Ed.pdf)\n- [Yjs: A Framework for Near Real-Time P2P Shared Editing on Arbitrary Data Types (2015)](http://dbis.rwth-aachen.de/~derntl/papers/preprints/icwe2015-preprint.pdf)\n- [Causal trees: towards real-time read-write hypertext - Victor Grishchenko](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.627.5286\u0026rep=rep1\u0026type=pdf)\n- [RGASplit: High Responsiveness for Group Editing CRDTs](https://pages.lip6.fr/Marc.Shapiro/papers/rgasplit-group2016-11.pdf)\n- [COPS: Don’t Settle for Eventual: Scalable Causal Consistency for Wide-Area Storage with COPS](http://www-users.cselabs.umn.edu/classes/Spring-2018/csci8980/Papers/CloudDataStorageManagement/COPS.pdf)\n\n#### Clocks\n\n- [Dotted Version Vectors: Logical Clocks for Eventually Consistent Systems](https://github.com/ricardobcl/Dotted-Version-Vectors)\n\n### Proof and Verification\n\n- [A framework for verifying Conflict-free Replicated Data Types (CRDTs) - Dominic Mulligan (2017)](http://srepls6.cs.ucl.ac.uk/images/mulligan.pdf)\n- [Verifying Strong Eventual Consistency in Distributed Systems - VICTOR B. F. GOMES (2017)](https://arxiv.org/pdf/1707.01747.pdf)\n- [On Verifying Causal Consistency - Bouajjani et. al. (2017)](https://pages.lip6.fr/Marc.Shapiro/workshop-2017-05-03/attachments/enea-slides.pdf)\n\n## Blogs\n\n- [A Look at Conflict-Free Replicated Data Types](https://medium.com/@istanbul_techie/a-look-at-conflict-free-replicated-data-types-crdt-221a5f629e7e)\n- [Distributed data structures with Coq](http://christophermeiklejohn.com/coq/2013/06/11/distributed-data-structures.html)\n- [Towards a unified theory of Operational Transformation and CRDT](https://medium.com/@raphlinus/towards-a-unified-theory-of-operational-transformation-and-crdt-70485876f72f)\n- [Working code for Operational Transformation/CRDT hybrid](https://medium.com/@raphlinus/working-code-for-operational-transformation-crdt-hybrid-9d04a57309da)\n- [Convergent Replicated Data Types](http://simongui.github.io/distributed-systems/crdt.html)\n- [Logs and docs](https://medium.com/@gritzko/logs-and-docs-b6cb34efc7de)\n- [CRDTs explained - supercharge your serverless with CRDTs at the Edge (Russell Sullivan)](https://serverless.com/blog/crdt-explained-supercharge-serverless-at-edge/)\n- [Good Spirits: Syncing Data Statelessly](http://archagon.net/blog/2018/09/03/good-spirits-persisting-data-statelessly/)\n- [Delta State Replicated Data Types](https://blog.acolyer.org/2016/04/25/delta-state-replicated-data-types/)\n- [Datanet: a New CRDT Database that Let's You Do Bad Bad Things to Distributed Data](http://highscalability.com/blog/2016/10/17/datanet-a-new-crdt-database-that-lets-you-do-bad-bad-things.html)\n- [Data Laced with History: Causal Trees \u0026 Operational CRDTs](http://archagon.net/blog/2018/03/24/data-laced-with-history)\n- [Serverless collaboration - (03/03/2019)](https://thegeez.net/2019/03/03/serverless_collab.html)\n- [Code together in real time with Teletype for Atom - (15/11/2017)](https://blog.atom.io/2017/11/15/code-together-in-real-time-with-teletype-for-atom.html)\n- [A CRDT Primer Part II: Convergent CRDTs](http://jtfmumm.com/blog/2015/11/24/crdt-primer-2-convergent-crdts/)\n\n## Skepticism\n\n- [Real Differences between OT and CRDT for Co-Editors](https://arxiv.org/pdf/1810.02137.pdf)\n- [Why CRDT didn't work out as well for collaborative editing xi-editor](https://github.com/xi-editor/xi-editor/issues/1187#issuecomment-491473599)\n\n## Videos\n\n- [CRDTs: The Hard Parts - Martin Kleppman](https://youtu.be/x7drE24geUw)\n- [Strong Eventual Consistency and Conflict-free Replicated Data Types - Marc Shapiro (ThisByGustav)](https://www.youtube.com/watch?v=ebWVLVhiaiY\u0026index=9\u0026list=PLU3pXbz7Jcgn-tyj_hZ3kLlna_ojG5qD5)\n- [CRDTs in Practice - Marc Shapiro \u0026 Nuno Preguiça (Erlang Solutions)](https://www.youtube.com/watch?v=xxjHC3yLDqw)\n- [Automerge: Making servers optional for real-time collaboration - Martin Kleppmann (J On The Beach 2018)](https://www.youtube.com/watch?v=PHz17gwiOc8\u0026index=3\u0026list=PLBWIvCz5rfq0CFXhIWKhbznImXB1aBqbp)\n- [\"Transactions: myths, surprises and opportunities\" by Martin Kleppmann (Strange Loop)](https://www.youtube.com/watch?v=5ZjhNTM8XU8\u0026index=2\u0026list=PLBWIvCz5rfq0CFXhIWKhbznImXB1aBqbp)\n- [\"CRDTs Illustrated\" by Arnout Engelen (Strange Loop)](https://www.youtube.com/watch?v=9xFfOhasiOE\u0026list=PLBWIvCz5rfq0CFXhIWKhbznImXB1aBqbp)\n- [Dmitry Ivanov \u0026 Nami Naserazad - Practical Demystification of CRDT (Lambda Days 2016) (Erlang Solutions)](https://www.youtube.com/watch?v=PQzNW8uQ_Y4\u0026index=2\u0026list=PLU3pXbz7Jcgn-tyj_hZ3kLlna_ojG5qD5)\n- [ElixirConf 2015 - CRDT: Datatype for the Apocalypse by Alexander Songe (Confreaks)](https://www.youtube.com/watch?v=txD1tfyIIvY\u0026index=6\u0026list=PLU3pXbz7Jcgn-tyj_hZ3kLlna_ojG5qD5)\n- [Using Erlang, Riak and the ORSWOT CRDT at bet365 (...) - Michael Owen - Erlang User Conference 2015 (Erlang Solutions)](https://www.youtube.com/watch?v=WXmO1IvzIZY\u0026index=7\u0026list=PLU3pXbz7Jcgn-tyj_hZ3kLlna_ojG5qD5)\n- [Kappa Day - Practical demystification of CRDT - Tomtom (Jug Łódź)](https://www.youtube.com/watch?v=v2Wedv37w5Q\u0026index=8\u0026list=PLU3pXbz7Jcgn-tyj_hZ3kLlna_ojG5qD5)\n- [\"Distributed, Eventually Consistent Computations\" by Christopher Meiklejohn (Strange Loop)](https://www.youtube.com/watch?v=lsKaNDj4TrE\u0026index=11\u0026list=PLU3pXbz7Jcgn-tyj_hZ3kLlna_ojG5qD5)\n- [Lightning Talk: Just-Right Consistency: Closing The CAP Gap - Christopher Meiklejohn (Erlang Solutions)](https://www.youtube.com/watch?v=zVcv27m8zgY\u0026index=13\u0026list=PLU3pXbz7Jcgn-tyj_hZ3kLlna_ojG5qD5)\n- [Tutorial: How to build an Collaborative Editing Application with IPFS using CRDT (IPFS)](https://www.youtube.com/watch?v=-kdx8rJd8rQ)\n- [WOOT: an algorithm for concurrency and collaborative authoring! (Julien Genestoux)](https://www.youtube.com/watch?v=NSTZ4mIv_wk)\n- [CRDTs for Non Academics (Russell Sullivan)](https://www.youtube.com/watch?v=vBU70EjwGfw)\n- [Datanet Website Slideshow](https://www.youtube.com/watch?v=jANg6Za4T1w)\n\n### Playlists\n\n- [CRDT Talks Playlist (IPFS)](https://www.youtube.com/watch?v=em9zLzM8O7c\u0026list=PLuhRWgmPaHtSvjFsjaVm_Fj9nXuwW35Ai)\n- [Coding CRDT's (Jeroen Zuijderhoudt)](https://www.youtube.com/watch?v=em9zLzM8O7c\u0026list=PLzUeAPxtWcqxBXjUelmcm5ORVjEpbUlHH)\n- [CRDT (Adib Saikali)](https://www.youtube.com/watch?v=oyUHd894w18\u0026list=PL-qXCjp3nQxUjhbdaC7E02a6bzrmG7U89)\n- [crdt (Sonny To)](https://www.youtube.com/watch?v=rVRegyQvHqs\u0026list=PLfV2ToGTS-JpUYyGFVK5AE5bzGtw4inwE)\n\n## Implementations\n\n### Data Structures\n\n- [KSeq: A continuous sequence CRDT based on Logoot/LSEQ](https://github.com/nkohari/kseq)\n- [LSEQ: CRDT for sequences](https://github.com/Chat-Wane/LSEQ)\n- [LSEQTree: A data structure for distributed arrays using the LSeq allocation strategy](https://github.com/Chat-Wane/LSEQTree)\n- [LSEQArray: aims to provide an implementation of a CRDT-based array using the allocation strategy LSEQ](https://github.com/Chat-Wane/LSEQArray)\n- [Automerge: A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically](https://github.com/automerge/automerge)\n- [Yjs: framework for offline-first p2p shared editing on structured data like text, richtext, json, or XML](https://github.com/y-js/yjs)\n- [RON: Replicated Object Notation, a distributed live data format](https://replicated.cc/) ([implementations in C++, Elixir, Go, Haskell, Java, JavaScript, Rust](https://replicated.cc/impl/))\n- [teletype-crdt: The string-wise sequence CRDT powering peer-to-peer collaborative editing in Teletype for Atom](https://github.com/atom/teletype-crdt)\n- [Peer CRDT: An extensible collection of operation-based CRDTs that are meant to work over a p2p network](https://github.com/ipfs-shipyard/peer-crdt)\n- [Distributed Data Structures in Coq](https://github.com/cmeiklejohn/distributed-data-structures)\n- [Akka CRDT: An Eventually Consistent REST/JSON database using CRDTs, Akka Cluster and LevelDB](https://github.com/jboner/akka-crdt)\n- [Akka Distributed Data](https://doc.akka.io/docs/akka/snapshot/distributed-data.html?language=scala)\n- [wurmloch-crdt: Experimental implementations of conflict-free replicated data types (CRDTs) for the JVM](https://github.com/netopyr/wurmloch-crdt)\n\n#### Toy Implementations\n\n- [Companion to the article \"Data Laced with History: Causal Trees \u0026 Operational CRDTs\"](https://github.com/archagon/crdt-playground)\n- [Meangirls: Convergent Replicated Data Types](https://github.com/aphyr/meangirls)\n\n### Editors\n\n- [SandEdit: a project aiming to provide a distributed collaborative editor based on Conflict-free Replicated Data Type](https://github.com/Chat-Wane/SandEdit)\n- [Teletype for Atom: Share your workspace with team members and collaborate on code in real time in Atom](https://github.com/atom/teletype)\n- [Xi Editor: an attempt to build a high quality text editor, using modern software engineering techniques](https://github.com/google/xi-editor/blob/master/docs/docs/crdt.md)\n- [IPFS CRDT Shared Editing: Decentralized Real-Time Collaborative Documents - Conflict-free editing in the browser using js-IPFS and CRDTs](https://github.com/vigzmv/IPFS-CRDT-shared-editing)\n- [Shared editing demo using IPFS and CRDT](https://github.com/ipfs-shipyard/shared-editing-demo)\n- [Co: collaborative text editor, uses woot. front end in Elm, back in node](https://github.com/leahsteinberg/co)\n- [woot-collaborative-editor: A real time collaboration toy project based on WOOT. Implemented with node.js and ws](https://github.com/ryankaplan/woot-collaborative-editor)\n- [cljs-collab: Browser-to-browser collaborative editor](https://thegeez.net/2019/03/03/serverless_collab.html)\n- [Xray: An experimental next-generation Electron-based text editor](https://github.com/atom/xray)\n\n### Databases and Logs\n\n- [Concordant](https://www.concordant.io/)\n- [AntidoteDB](https://syncfree.github.io/antidote/)\n- [Riak KV](http://docs.basho.com/riak/kv/2.2.3/developing/data-types/)\n- [Hypermerge: combines Automerge, a CRDT, with hypercore, a distributed append-only log](https://github.com/automerge/hypermerge)\n- [Roshi: a large-scale CRDT set implementation for timestamped events](https://github.com/soundcloud/roshi)\n- [Swarm: JavaScript replicated model (M of MVC) library](https://github.com/gritzko/swarm)\n- [Datanet: an open source CRDT based data synchronization system](http://datanet.co/)\n- [Kuhirō: The Near Cloud](https://www.kuhiro.com)\n\n### Productivity\n\n- [ff — a distributed note taker and task manager](https://github.com/ff-notes/ff)\n\n## Projects and Organizations\n\n### SyncFree\n\n- [SyncFree](https://github.com/SyncFree)\n- [Automerge](https://github.com/automerge)\n\n## More Lists\n\n- [Readings in conflict-free replicated data types](http://christophermeiklejohn.com/crdt/2014/07/22/readings-in-crdts.html)\n- [Carlos Baquero bibliography](https://dblp.uni-trier.de/pers/hd/b/Baquero:Carlos)\n- [BOOM: Berkley Orders of Magnitude](http://boom.cs.berkeley.edu/papers.html)\n- [CRDT.tech](https://crdt.tech/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falangibson%2Fawesome-crdt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falangibson%2Fawesome-crdt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falangibson%2Fawesome-crdt/lists"}