MCPcopy Index your code
hub / github.com/alexjg/samod

github.com/alexjg/samod @v0.12.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.12.1 ↗ · + Follow
1,010 symbols 3,606 edges 147 files 237 documented · 23% updated 15d agov0.9.0 · 2026-03-25★ 379 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Documentation Crates.io License: MIT

Samod

samod: (Old English) simultaneously, at the same time, together

samod is an experimental implementation of automerge-repo in Rust. The goals of the project are:

  • Interoperability with the JS implementation of automerge-repo, both over the network and on disk
  • Ergonomic APIs for Rust
  • A core implementation which can be used via FFI in other languages
  • Predictable performance under load

The project currently consists of two crates:

  • samod - a high level rust async/await API which can be used in any async runtime which implements RuntimeHandle
  • samod-core - a sans-IO implementation of automerge-repo, intended to be wrapped in a runtime

Status

Right now this is very much a work in progress. There are probably lots of things which are broken. Feel free to have fun, but don't use this anywhere serious yet. Longer term, my objective is to replace the current automerge-repo-rs codebase with this one.

Extension points exported contracts — how you extend this code

Dialer (Interface)
Knows how to establish a transport to a remote endpoint. Implementations provide both *where* to connect ([`Dialer::url [8 …
samod/src/dialer.rs
AnnouncePolicy (Interface)
Whether to announce a document to a peer To configure announcement behavior implement this trait and pass the implement [3 …
samod/src/announce_policy.rs
RuntimeHandle (Interface)
An abstraction over the asynchronous runtime the repo is running on When a [`Repo`](crate::Repo) starts up it spawns a [3 …
samod/src/runtime.rs
Storage (Interface)
The storage abstraction used by a [`Repo`](crate::Repo) to store document data This trait is designed to be pretty gene [3 …
samod/src/storage.rs
LocalAnnouncePolicy (Interface)
A version of [`AnnouncePolicy`] that can be used with runtimes that don't require `Send` or `'static` bounds. See the [m [1 …
samod/src/announce_policy.rs

Core symbols most depended-on inside this repo

clone
called by 354
samod/src/unbounded.rs
samod
called by 193
samod-test-harness/src/lib.rs
map
called by 98
samod-core/src/io/io_task.rs
load
called by 85
samod/src/lib.rs
create_samod
called by 82
samod-test-harness/src/lib.rs
with_peer_id
called by 69
samod/src/builder.rs
run_until_quiescent
called by 68
samod-test-harness/src/lib.rs
stop
called by 58
samod/src/lib.rs

Shape

Method 620
Function 188
Class 134
Enum 60
Interface 8

Languages

Rust99%
TypeScript1%

Modules by API surface

samod-core/src/actors/hub/state.rs50 symbols
samod-test-harness/src/samod_wrapper.rs46 symbols
samod-test-harness/src/samod_ref.rs41 symbols
samod/src/lib.rs35 symbols
samod-core/src/actors/document/document_actor.rs31 symbols
samod/tests/connector_integration.rs29 symbols
samod-core/src/network/wire_protocol.rs28 symbols
samod/tests/js_interop/js_wrapper.rs21 symbols
samod-core/tests/connectors.rs21 symbols
samod-core/src/actors/hub/hub_event.rs20 symbols
samod/tests/smoke.rs18 symbols
samod-core/tests/document_sync_advanced.rs18 symbols

For agents

$ claude mcp add samod \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact