R sync server for Automerge CRDT documents. Implements the automerge-repo WebSocket protocol, enabling R to serve as a synchronization hub for Automerge clients in R, JavaScript, Rust, and other languages.
Features
- Full
automerge-repoprotocol compatibility (interoperates with sync.automerge.org) - Secure connections via TLS (wss://)
- Persistent document storage
- Ephemeral message broadcasting
- Client functions for fetching documents from remote servers
Installation
pak::pak("shikokuchuo/autosync")Server
Create a WebSocket sync server:
library(autosync)
server <- amsync_server(port = 3030)
server$start()
# Server runs non-blocking in the background
server$stop()With TLS for secure connections:
cert <- nanonext::write_cert()
tls <- nanonext::tls_config(server = cert$server)
server <- amsync_server(port = 8080, tls = tls)
server$start()Document management
# Create a new document
doc_id <- create_document(server)
# List all documents
list_documents(server)
# Get a document
doc <- get_document(server, doc_id)Client
Fetch documents from any automerge-repo sync server:
# Fetch from public sync server
doc <- amsync_fetch("wss://sync.automerge.org", "your-document-id")
# Inspect document structure
automerge::am_keys(doc)Debug sync issues with the inspect helper:
amsync_inspect("wss://sync.automerge.org", "your-document-id")Shiny Collaborative Editor
For a real-time collaborative text editor widget, see the autoedit package which provides a CodeMirror-based editor that connects to autosync servers.
Links
- automerge - R bindings for Automerge CRDT