A type-safe, realtime collaborative Graph Database in a CRDT
phpnode
157 points
43 comments
April 21, 2026
Related Discussions
Found 5 related stories in 59.2ms across 5,223 title embeddings via pgvector HNSW
- An Interactive Intro to CRDTs (2023) evakhoury · 118 pts · March 03, 2026 · 58% similar
- Grafeo – A fast, lean, embeddable graph database built in Rust 0x1997 · 204 pts · March 21, 2026 · 57% similar
- Code-review-graph: persistent code graph that cuts Claude Code token usage tirthkanani · 11 pts · March 09, 2026 · 47% similar
- Lat.md: Agent Lattice: a knowledge graph for your codebase, written in Markdown doppp · 83 pts · March 29, 2026 · 44% similar
- RX – a new random-access JSON alternative creationix · 53 pts · March 18, 2026 · 44% similar
Discussion Highlights (9 comments)
cyanydeez
Eventually someone will figure out how to use a graph database to allow an agent to efficiency build & cull context to achieve near determinant activities. Seems like one needs a sufficiently powerful schema and a harness that properly builds the graph of agent knowledge, like how ants naturally figure how where sugar is, when that stockpile depletes and shifts to other sources. This looks neat, but if you want it to be used for AI purposes, you might want to show a schema more complicated than a twitter network.
2ndorderthought
Can anyone explain why it is a good idea to make a graphdb in typescript? This not a language flamewar question, more of an implementation details question. Though typescript is pretty fast, and the language is flexible, we all know how demanding graph databases are. How hard they are to shard, etc. It seems like this could be a performance trap. Are there successful rbdms or nosql databases out there written in typescript? Also why is everything about LLMs now? Can't we discuss technologies for their face value anymore. It's getting kind of old to me personally.
lo1tuma
15 years ago I was a big fan of this chaining methods pattern. These days I don’t like it anymore. Especially when it comes to unit-testing and implementing fake objects it becomes quite cumbersome to setup the exact same interface.
brianbcarter
Cypher-over-Gremlin is a smart call — LLMs can write Cypher, makes the MCP angle viable in a new way. How dos Yjs handle schema migrations? If I add a property to a vertex type that existing peers have cached, does it conflict or drop the unknown field?
AlotOfReading
I'm not terribly familiar with graph databases, but perhaps someone who is can explain the advantage of this awfully complicated seeming design. There's gremlin, cypher, yjs, and zod, all of which I understand are different languages for different problems. What's the advantage of using all these different things in one system? You can do all of this in datalog. You get strong eventual consistency naturally. LLMs know how to write it. It's type safe. JS implementations exist [0]. [0] https://github.com/tonsky/datascript
esafak
Got benchmarks?
cush
The page keeps crashing on safari
40four
I’ve recently gotten obsessed with local first app architecture, so I’m really digging into CRDT and trying to get familiar with it. So this looks very interesting to me. Thanks for posting!
rs545837
Oh this is cool. The Yjs as storage backend trick is clever, you basically get CRDT sync for free without having to build your own replication layer. And the pluggable storage means you can develop against in-memory and then flip to YGraph for collab mode without touching your queries. That's a nice developer experience. The live queries also caught my eye. Having traversals auto reexecute when data changes sounds straightforward until you realize the underlying data is being merged from multiple peers concurrently. Getting that right without stale reads or phantom edges is genuinely hard. I've been researching on something like this in a similar space but for source code, therefore built a tool called Weave( https://github.com/Ataraxy-Labs/weave ) for entity level merges for git. Instead of merging lines of text, it extracts functions, classes, and methods, builds a dependency graph between them, and merges at that level. Seeing codemix makes me think there might be something interesting here. Right now our entity graph and our CRDT state are two separate things. The graph lives our analysis engine and the CRDT lives in different crate. If something like @codemix/graph could unify those, you'd have a single data structure where the entity dependency graph is the CRDT.