<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Datalog on RockB</title><link>https://baeseokjae.github.io/tags/datalog/</link><description>Recent content in Datalog on RockB</description><image><title>RockB</title><url>https://baeseokjae.github.io/images/og-default.png</url><link>https://baeseokjae.github.io/images/og-default.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 23 Aug 2026 13:01:39 +0000</lastBuildDate><atom:link href="https://baeseokjae.github.io/tags/datalog/index.xml" rel="self" type="application/rss+xml"/><item><title>Simmis Review: A Self-Hosted Shared Memory Workspace for People and AI Agents</title><link>https://baeseokjae.github.io/posts/simmis-shared-memory-workspace/</link><pubDate>Sun, 23 Aug 2026 13:01:39 +0000</pubDate><guid>https://baeseokjae.github.io/posts/simmis-shared-memory-workspace/</guid><description>Simmis is a self-hosted workspace where people and AI agents share one versioned, queryable memory — chat, wiki, ledger, and repo on a single substrate.</description><content:encoded><![CDATA[<p>Simmis is a self-hosted workspace where people and AI agents share a single, versioned, queryable memory — chat rooms, wiki pages, knowledge bases, a double-entry ledger, and a code repository all live on one substrate instead of being scattered across siloed tools. Built in Clojure on the replikativ stack, it treats humans and agents as the same kind of participant, so @mentions, governance, and history work identically across both. It is an early, MIT-licensed &ldquo;release early&rdquo; project that is used daily but still has rough edges.</p>
<h2 id="what-is-simmis-a-self-hosted-shared-memory-workspace-for-people-and-ai-agents">What is Simmis? A self-hosted shared-memory workspace for people and AI agents</h2>
<p>Simmis is a reference application for the replikativ stack, a set of Clojure libraries for building distributed, versioned, local-first systems. The project&rsquo;s own description is precise: it is a self-hosted workspace where people and AI agents share one memory. That memory is not a single chat log or a single database table — it is a durable, versioned substrate that holds chat rooms, wiki pages, knowledge bases, an accounting book, and a code repository, all queryable as one coherent store.</p>
<p>The project was created on 2026-08-20 and is explicitly an early &ldquo;release early&rdquo; first public cut. At research time it had roughly 5 stars and 2 forks on GitHub, which tells you this is not a mature, widely adopted product. It is a serious, opinionated prototype that its author uses daily, with a clear architectural vision and an unusually honest list of known gaps.</p>
<h2 id="the-core-idea--one-versioned-queryable-substrate-instead-of-siloed-tools">The core idea — one versioned, queryable substrate instead of siloed tools</h2>
<p>Most teams today run their collaboration across a patchwork of tools: Slack or Discord for chat, Notion or Confluence for wiki, a spreadsheet or accounting package for money, and Git for code. Each tool has its own data model, its own history, and its own access controls. When you add AI agents to the mix, the fragmentation gets worse — each agent needs its own memory layer, its own context, and its own way of writing back.</p>
<p>Simmis collapses this into a single substrate. Chat, wiki, knowledge bases, the ledger, and the repository all live in the same versioned store. Because everything is on one substrate, a query can cross boundaries that would be impossible in a siloed setup: you can ask &ldquo;what did we decide about pricing, and what did the agent write into the ledger to reflect it?&rdquo; and get a single, coherent, time-traveling answer.</p>
<p>This is the fundamental differentiator. Memory-layer tools like mem0, Letta, Cognee, and Zep give agents a memory store, but they do not give you a shared workspace where humans and agents collaborate on the same artifacts with the same governance. Simmis is not a memory layer bolted onto your existing tools — it is a workspace built around shared memory as the organizing principle.</p>
<h2 id="key-features-rooms-knowledge-bases-proposals-time-travel-the-book-agents-intake">Key features: Rooms, Knowledge bases, Proposals, Time travel, The book, Agents, Intake</h2>
<h3 id="rooms--conversation-with-durable-memory">Rooms — conversation with durable memory</h3>
<p>Rooms are Simmis&rsquo;s chat primitive, but they are more than chat. A room is a conversation with durable memory, and humans and agents are the same kind of participant — a &ldquo;party.&rdquo; That means @mention works across both humans and agents, and a room can mirror to Telegram so you can interact with your workspace from a messaging app you already use.</p>
<h3 id="knowledge-bases--a-real-datalog-database">Knowledge bases — a real Datalog database</h3>
<p>Each knowledge base is its own Datahike database holding wiki pages, blocks, links, and typed entities. The key insight is that <code>[[Title]]</code> links are stored as datoms, so backlinks and neighborhood queries are ordinary database queries rather than string matching. This is a genuinely different architecture from a typical wiki, where links are just text.</p>
<h3 id="proposals--governed-agent-writes">Proposals — governed agent writes</h3>
<p>Every governed agent write lands on a fork (a yggdrasil branch), shows a semantic diff, and merges only with <code>:merge</code> authority. This is the trust mechanism that lets you be generous with what agents may write: an agent can propose anything, but nothing takes effect until a human (or authorized party) reviews and merges it.</p>
<h3 id="time-travel--history-preserving-memory">Time travel — history-preserving memory</h3>
<p>Stores keep their history, and any knowledge base can be read as-of a point in time. This means agents and humans can audit exactly how a page or a ledger entry got to where it is. If an agent proposes a change that turns out to be wrong, you can see precisely what changed and when.</p>
<h3 id="the-book--a-governed-double-entry-ledger">The book — a governed double-entry ledger</h3>
<p>The book is a governed double-entry ledger built on kontor. Unbalanced entries are rejected in the writer, so an agent cannot corrupt the ledger by posting a one-sided transaction. This is a strong example of domain-level integrity enforced at the write boundary.</p>
<h3 id="agents--sandboxed-with-a-curated-vocabulary">Agents — sandboxed with a curated vocabulary</h3>
<p>Agents run in an SCI sandbox with a curated vocabulary: <code>wiki/</code>, <code>kb/</code>, <code>kontor/</code>, <code>proposal/</code>, <code>workflow/</code>, the muschel shell, and <code>datahike.api</code>. They can schedule recurring workflows. The sandbox is a soft boundary, not a VM — a point the project itself is honest about.</p>
<h3 id="intake--everything-lands-in-the-same-substrate">Intake — everything lands in the same substrate</h3>
<p>A web-clipper browser extension, mail accounts, screen capture, and voice notes all land in the same substrate. This means your external inputs become part of the same versioned, queryable memory as your internal collaboration.</p>
<h2 id="how-governance-works--fork-and-review-proposals-and-the-merge-authority">How governance works — fork-and-review proposals and the :merge authority</h2>
<p>The governance model is the heart of what makes Simmis safe to give agents write access. When an agent wants to write, it does not write directly to the shared state. Instead, the write lands on a fork — a yggdrasil branch — and is presented as a semantic diff. A party with <code>:merge</code> authority reviews the diff and decides whether to merge it.</p>
<p>This is a fork-and-review model borrowed from how code review works in Git, applied to every kind of write an agent can make. The practical effect is that you can be generous with what agents may attempt, because nothing is destructive by default. An agent can propose a wiki edit, a ledger entry, or a knowledge-base change, and a human reviews it before it becomes part of the shared memory.</p>
<p>The ledger adds a second layer of integrity: unbalanced double-entry transactions are rejected in the writer itself, so even a buggy or malicious agent cannot post a transaction that breaks the accounting invariant. This is domain-level enforcement on top of the process-level governance.</p>
<h2 id="the-architecture--local-first-datahike-replica-server-as-authorization-boundary">The architecture — local-first Datahike replica, server as authorization boundary</h2>
<p>Simmis&rsquo;s architecture is deliberately local-first. The client runs a real Datahike replica in the browser, backed by IndexedDB, and keeps it in sync with the server via konserve-sync. Queries run locally against your replica, and the server is the authorization boundary — not a query API.</p>
<p>This has two important consequences. First, it is privacy-friendly and offline-friendly: your data lives in your browser, and reads do not require a round-trip to a server. Second, it changes the security model: the server does not need to be a general-purpose query endpoint, because the client already has the data it needs locally. The server&rsquo;s job is to authorize writes and keep replicas in sync, not to serve arbitrary queries.</p>
<p>The trade-off is that this is a more complex architecture than a simple client-server app, and it is single-node only at this stage. There is no clustering, no multi-node replication across servers, and no migration tooling yet.</p>
<h2 id="the-replikativ-stack-under-the-hood">The replikativ stack under the hood</h2>
<p>Simmis is the reference application for the replikativ stack, and understanding the stack helps you understand the architecture. The main components are:</p>
<ul>
<li><strong>Datahike</strong> — a durable Datalog database that provides the queryable, versioned store. Datahike itself drew 146 points on Hacker News, indicating real interest in the underlying technology.</li>
<li><strong>konserve</strong> — the storage abstraction layer, with konserve-sync handling browser/server sync.</li>
<li><strong>yggdrasil</strong> — the CRDT-based replication and branching layer that powers forks and merges.</li>
<li><strong>kabel</strong> — the messaging/transport layer.</li>
<li><strong>kontor</strong> — the governed double-entry ledger.</li>
<li><strong>spindel</strong> and <strong>dvergr</strong> — additional components for the distributed system.</li>
</ul>
<p>This is a coherent, opinionated alternative to mainstream agent stacks. Where most agent frameworks are built around Python, REST APIs, and vector databases, Simmis is built around Clojure, Datalog, and CRDTs. That is a real philosophical difference, not just a language preference: Datalog gives you declarative, time-traveling queries, and CRDTs give you conflict-free replication.</p>
<h2 id="getting-started--prerequisites-quick-start-llm-providers">Getting started — prerequisites, quick start, LLM providers</h2>
<p>Getting Simmis running requires a JDK 21+ and Node 18+. The quick start is:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>npm install
</span></span><span style="display:flex;"><span>clj -M:dev
</span></span></code></pre></div><p>The UI runs at <code>localhost:8080</code> and the WebSocket endpoint at port 47295. LLM providers are configured via environment keys for Fireworks, OpenAI, Anthropic, and Groq, with a fallback model of <code>accounts/fireworks/models/glm-5p2</code>. Model settings can be configured per room.</p>
<p>For production use, you must set <code>SIMMIS_JWT_SECRET</code>. The project is clear that this is not a set-and-forget install — it is a developer-oriented tool for people comfortable with the Clojure toolchain.</p>
<h2 id="known-gaps-and-honest-limitations">Known gaps and honest limitations</h2>
<p>Simmis&rsquo;s documentation includes a refreshingly honest list of known gaps, which is a strong trust signal for an early-stage tool — but also a caution for production use:</p>
<ul>
<li><strong>No integration-level auth test</strong> — the auth path is not yet covered by integration tests.</li>
<li><strong>Blob reads are authenticated but not authorized</strong> — a security gap that matters if you store sensitive blobs.</li>
<li><strong>The agent sandbox is a soft boundary, not a VM</strong> — a determined or buggy agent could potentially escape the SCI sandbox.</li>
<li><strong>No migration tooling</strong> — upgrading the data model is not yet automated.</li>
<li><strong><code>SIMMIS_JWT_SECRET</code> must be set in production</strong> — easy to miss.</li>
<li><strong>Room apps are private</strong> — no public/shared room apps yet.</li>
<li><strong>Single-node only</strong> — no clustering or multi-node replication.</li>
</ul>
<p>For a project this early, these gaps are expected. But they mean Simmis is not yet a drop-in for a production team that needs hardened security and operational tooling.</p>
<h2 id="how-simmis-compares-to-mem0-letta-cognee-and-zep">How Simmis compares to mem0, Letta, Cognee, and Zep</h2>
<p>The agent-memory space is crowded, and it is worth positioning Simmis against the incumbents. The table below summarizes the key differences.</p>
<table>
  <thead>
      <tr>
          <th>Tool</th>
          <th>Stars (approx.)</th>
          <th>Core model</th>
          <th>Differentiator vs Simmis</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>mem0</td>
          <td>~63.8k</td>
          <td>Memory layer / API</td>
          <td>Drop-in memory extraction and retrieval; not a full workspace</td>
      </tr>
      <tr>
          <td>Cognee</td>
          <td>~30.1k</td>
          <td>Knowledge-graph memory</td>
          <td>Graph-centric memory engine; Simmis uses Datalog with time travel</td>
      </tr>
      <tr>
          <td>Letta</td>
          <td>~24.3k</td>
          <td>Stateful agents with self-improving memory</td>
          <td>Agent memory and self-improvement; Simmis adds shared human+agent workspace</td>
      </tr>
      <tr>
          <td>Zep</td>
          <td>~4.8k</td>
          <td>Long-term memory for agents</td>
          <td>Memory layer; Simmis adds governance and a real ledger</td>
      </tr>
      <tr>
          <td>Simmis</td>
          <td>~5</td>
          <td>Full self-hosted workspace</td>
          <td>Shared human+agent memory, fork-and-review governance, double-entry ledger</td>
      </tr>
  </tbody>
</table>
<p>The pattern is clear: the incumbents are memory layers or agent platforms, while Simmis is a full self-hosted workspace. If you already have a stack and just need agent memory, mem0 or Letta may be the pragmatic choice. If you want a single substrate where humans and agents collaborate on the same artifacts with real governance, Simmis is the differentiator.</p>
<h2 id="who-should-use-it-today--and-who-should-wait">Who should use it today — and who should wait</h2>
<p>Simmis is best suited today for developers and small teams who:</p>
<ul>
<li>Are comfortable with Clojure and the JVM toolchain.</li>
<li>Value local-first, privacy-friendly architecture.</li>
<li>Want to experiment with fork-and-review governance for agent writes.</li>
<li>Need a coherent, versioned, queryable store rather than another memory API.</li>
<li>Are willing to accept early-stage rough edges and a soft sandbox.</li>
</ul>
<p>You should wait if you need hardened production security, multi-node scaling, migration tooling, or a large ecosystem of integrations. The single-node limitation, the blob authorization gap, and the soft sandbox are real blockers for production use at this stage.</p>
<h2 id="verdict-and-caveats">Verdict and caveats</h2>
<p>Simmis is one of the most architecturally interesting entries in the agent-collaboration space. The core idea — one versioned, queryable substrate where people and agents share memory, with fork-and-review governance and a real double-entry ledger — is genuinely novel and well-executed for an early project. The local-first architecture and the Datalog/CRDT foundation are thoughtful choices that set it apart from the memory-layer incumbents.</p>
<p>There are two caveats worth calling out. First, the project is very early: ~5 stars, no migration tooling, a soft sandbox, and a blob authorization gap. Treat it as a promising prototype, not a production system. Second, there is a discoverability red flag: <code>replikativ.io</code> now resolves to a parked/spam site (a casino page) rather than the project&rsquo;s official site. The official web presence appears gone or compromised, which is a credibility concern for a project you might want to depend on. Verify the GitHub repository directly and be cautious about any links that route through the project&rsquo;s former domain.</p>
<p>Overall, Simmis is a compelling vision with a strong architectural foundation. If you are building a self-hosted, local-first workspace where humans and AI agents genuinely collaborate, it is worth a close look — with your eyes open about its early stage.</p>
<h2 id="faq">FAQ</h2>
<h3 id="what-is-simmis">What is Simmis?</h3>
<p>Simmis is a self-hosted workspace where people and AI agents share a single, versioned, queryable memory. Chat rooms, wiki pages, knowledge bases, a double-entry ledger, and a code repository all live on one substrate, built in Clojure on the replikativ stack.</p>
<h3 id="how-is-simmis-different-from-mem0-or-letta">How is Simmis different from mem0 or Letta?</h3>
<p>mem0, Letta, Cognee, and Zep are memory layers or agent platforms that give agents a memory store. Simmis is a full self-hosted workspace where humans and agents collaborate on the same artifacts, with fork-and-review governance and a real double-entry ledger.</p>
<h3 id="is-simmis-safe-to-give-ai-agents-write-access">Is Simmis safe to give AI agents write access?</h3>
<p>Simmis uses a fork-and-review governance model: every governed agent write lands on a fork, shows a semantic diff, and merges only with <code>:merge</code> authority. The ledger also rejects unbalanced entries in the writer. However, the agent sandbox is a soft boundary, not a VM, so treat it as a trust mechanism, not a hard security boundary.</p>
<h3 id="what-are-simmiss-main-limitations">What are Simmis&rsquo;s main limitations?</h3>
<p>Known gaps include no integration-level auth test, blob reads that are authenticated but not authorized, a soft (non-VM) agent sandbox, no migration tooling, single-node-only operation, and the need to set <code>SIMMIS_JWT_SECRET</code> in production.</p>
<h3 id="is-simmis-ready-for-production-use">Is Simmis ready for production use?</h3>
<p>Not yet for most teams. It is an early &ldquo;release early&rdquo; project with ~5 stars, no migration tooling, a soft sandbox, and a blob authorization gap. It is best suited to developers comfortable with Clojure who want to experiment with a local-first, governed shared-memory workspace.</p>
]]></content:encoded></item></channel></rss>