Concordant Software and Demo Applications

The Concordant software, Version 0, is now available. The code and documentation can be accessed by following this link. If you would like greater access, e.g., to post issues/tickets or to contribute merge requests, let us know at and we will create an account for you.

We are just starting off, so help, comments, tips, assistance, ideas are all welcome. Please spread the word and let others around you know about us. We are especially looking for use cases, so if you have one, please get in touch.

Welcome to Concordant and thanks for checking us out.

Our software is currently divided into 3 modules:

  1. the Concordant CRDTlib (or C-CRDTlib for short) contains the object types that we have currently implemented;
  2. the Concordant Service (C-Service), which provides replicated storage and communication (currently as a wrapper over couchdb) via a REST API;
  3. and Concordant the Client (C-Client), which manages communication between your application and the C-Service.


CRDTs currently implemented in our library:


Counters implemented:

  • PNCounter
  • Bounded Counter

Availables operations :

  • increment
  • decrement
  • get


Maps implemented:

  • LWWMap
  • Map
  • MVMap

Availables operations :

  • set
  • get
  • iterator


Registers implemented:

  • LWWRegiter
  • MVRegister


Others CRDTs implemented:

  • Ratchet
  • RGA


Using CouchDB ... Providing REST API:


Communications between the application and the C-Service ...


let session = client.Session.Companion.connect("miniapp", "http://localhost:4000", "credentials");


let collection = session.openCollection("miniAppCollection", false);


let cntr ="mycounter", "PNCounter", false, function () {return});


this.props.session.transaction(client.utils.ConsistencyLevel.None, () => { ... })

Demo Applications

The following links take you to some demo applications which allow you to see how our platform can work and what it can do. In order to best understand, you should open at least two windows of each to see how the applications interact collaboratively.


The CRDT Demo is a web page showing how our CRDTs work: PNCounter, RGA, LWWMap, LWWRegister, MVRegister CRDTs. You can create multiple replicas, perform updates, and observe how updates are applied, propagated between replicas, and merged.

See our CRDT Demo.


Sudoku is a basic example of a collaborative multi-player game. You can create multiple instances of the same Sudoku grid, and solve it collaboratively. When one user fills a square, the others observe the update, and can correct it if they wish. If two users fill the same square at the same time, both updates are retained, until one of the users imposes a new value. A user can disconnect and work in isolation; when he/she reconnects, his/her updates are merged into the shared grid. Switching between connected/disconnected modes is seamless: the application continues to work without a hitch and without any loss of data.

The Sudoku application is based upon the Concordant MVMap CRDT.

See our Sudoku.

Collaborative Markdown editor

Our collaborative editor enables multiple users to collaborate over a shared text document. It supports both synchronous and asynchronous modes. In synchronous mode, multiple users connected and see each others' edits in real time. In asynchronous mode, a user works disconnected, and his/her updates are merged into the shared document when he/she reconnects. Switching between synchronous and asynchrounous modes is seamless: the editor continues to work without a hitch, and without any loss of data.

The Markdown editor exercises the RGA and LWWMap CRDTs.

See our Markdown editor.