Blog

Announcements, how-to guides, engineering deep dives and thought leadership. Every number in a post links the published record it comes from, or says in the same sentence that it comes from a test tree. Atom feed.

Engineering deep dives · 18 October 2026 · Semurg · 5 min read

Graph on one server: a 4-hop query 19 to 388 times faster than the incumbents

We ran Semurg and six graph databases on the same public social graph on one bare-metal server, every answer checked first. One 4-hop query, many at once, and walks to 131,072 hops: where we win, where it is close, how to run it yourself.

benchmarksgraphneo4jarangodbfalkordbarcadedbsurrealdbperformance

Engineering deep dives · 17 October 2026 · Semurg · 6 min read

Linus fixed a cache line every core fights over. We had one too, one level up

Linus Torvalds' new page-cache series stops small reads from all writing one shared counter. Semurg skips the kernel page cache, but our own cache had the same pattern. What it cost a graph walk, and the fix.

engineeringperformancelinuxconcurrencyrustclaude-code

Engineering deep dives · 16 October 2026 · Semurg · 10 min read

64 agents, one lock: a futex storm in our prefetcher

Many agents writing into one memory made a node spend most of its time in the kernel. A profile of a symbol build of the shipped binary named one process-wide lock in the prefetcher; moving one lookup out of it fixed the collapse.

engineeringperformanceconcurrencyrustelixirmcp

Thought leadership · 14 October 2026 · Semurg · 4 min read

An enterprise in a box: persistent agent swarms on the BEAM, with their memory on Semurg

A digital twin of the organisation, its systems in one knowledge graph, with thousands of long-lived agents working on it, each an isolated BEAM process with its own memory. What it takes, and how to build it on Semurg today.

agentsbeamelixirknowledge-graphdigital-twinenterprise

How-to guides · 14 October 2026 · Semurg · 4 min read

Persistent memory for Claude Code, on your own machine

Give Claude Code a long-term memory it asks instead of loads, a knowledge graph on your own machine, with one install command, one connect command and six lines of CLAUDE.md.

claude-codemcpagentsmemoryhow-to

Announcements · 13 October 2026 · Semurg · 10 min read

Semurg: local persistent memory for AI agents over MCP

Semurg gives any MCP agent a memory that outlives the session, a knowledge graph with vectors and graph retrieval on your own machine. What it does, how to install it and connect your agent, and its limits.

announcementmcpagentsmemoryknowledge-graphgraph-rag

How-to guides · 12 October 2026 · Semurg · 3 min read

Keep your node current: check for and apply the latest release

Updates are free for every node. A node checks the signed manifest, verifies and swaps in the new release, checks that it came up, and rolls back if it did not. Here is how to drive it from the command line or over HTTP.

updateinstalloperationshow-to

How-to guides · 12 October 2026 · Semurg · 3 min read

Large values by number, striped across your disks: put, get, delete (no S3 API, no listing yet)

An object primitive: store values of any size under your own whole-number ids, read them back in one sweep across every disk, replace or delete them. It does not speak the S3 API, list keys or read a byte range yet.

objectstoragedatabasehow-to

How-to guides · 12 October 2026 · Semurg · 3 min read

The latest reading of any series in one read: a latest-value store (no range queries yet)

A latest-value primitive: write readings for many series in one call and read the latest value of each series by name. It does not read a range of time, downsample or expire readings yet.

time-seriesdatabasehow-to

How-to guides · 12 October 2026 · Semurg · 3 min read

Values by number: put, get many, put if absent, delete (a key-value primitive, no expiry yet)

A key-value primitive: put values under whole-number keys, get many back in one call, put only if absent and delete. It has no expiry, no key scan, no compare-and-set and no string keys yet.

key-valuecachedatabasehow-to

How-to guides · 12 October 2026 · Semurg · 4 min read

Documents by id: store JSON bytes, read them back, find them by word (no field queries yet)

A document primitive: store JSON documents under your own ids, read them back one at a time or many at once and find them by word. It does not query inside a document, keep a secondary index or update part of one yet.

documentdatabasehow-to

How-to guides · 12 October 2026 · Semurg · 4 min read

One memory per end user: keep your users apart, and delete one on request

An app with many users needs each user's memory kept apart and erasable on request. Name the end user with user_id on any memory call, pin an MCP connection to one user, and delete one user's whole memory in one call.

memorymulti-userprivacydeletehow-to

How-to guides · 12 October 2026 · Semurg · 3 min read

Look after your node: health, version, status, utilisation and its disks

The few calls that tell you how a node is doing: whether it is up, which release it runs, what it holds, how hard its disks and cores are working, and whether its landing area and storage are in order.

operationsmonitoringinstallhow-to

How-to guides · 12 October 2026 · Semurg · 4 min read

Put the knowledge layer in your app: from a LiveView screen, from any language, or from an agent

The same memory, reached three ways: from a Phoenix LiveView screen with the Elixir client, from any language over HTTP or a client library, and from an AI agent over MCP. What one writes, the others read.

knowledge-graphgraph-ragelixirliveviewsdkmcp

How-to guides · 12 October 2026 · Semurg · 3 min read

Scopes: separate memories, shared on purpose

Every memory read or write names a scope, a separate memory. Agents that name the same scope share what they learn; a question in one scope never reaches another. Who may name a scope is decided by the token, or by your server.

knowledge-graphmemoryagentsscopesisolation

How-to guides · 12 October 2026 · Semurg · 4 min read

Graph RAG that says when it does not know: context that is cited, grounded, or refused

Ask the memory a question and get the facts and passages around it, found by name, keyword, meaning and the graph, each cited, with a verdict on whether your question's words are covered.

graph-ragragmemoryagentscitations

How-to guides · 12 October 2026 · Semurg · 4 min read

An ontology you never write: the classes and relations your memory builds as you store

Semurg builds the ontology of each memory from what you store, with no schema to write first. Read its classes and relations with one call, reuse them so agents stay consistent, and check that it holds together.

knowledge-graphontologymemoryagents

How-to guides · 12 October 2026 · Semurg · 5 min read

A knowledge graph your agents build as they work, with every fact traced to its source

Store entities, the relationships between them and the passages they came from in one call, recall them by name with each item cited back to its source, and add relationships later. The first post on Semurg's knowledge layer.

knowledge-graphmemoryagentsprovenance

How-to guides · 12 October 2026 · Semurg · 3 min read

Your first Semurg calls from Python or Elixir: remember a fact, recall it

Download the signed client archive, check it, and make your first three calls from Python or Elixir: is the node up, remember a fact, recall it. Plus where each of the other languages starts.

sdkpythonelixirgetting-startedhow-to

How-to guides · 12 October 2026 · Semurg · 4 min read

Connecting to Semurg over a WebSocket: live pushes and the same operations

One socket gives you the node's state pushed every second and every data operation the REST routes offer, with the same answers. How to connect, authenticate safely and send your first events.

connectionswebsocketrealtimehow-to

How-to guides · 12 October 2026 · Semurg · 4 min read

Talk to a Semurg node over plain HTTP: addresses, the token, answers and errors

Everything a node does is reachable over plain HTTP with one token. How to address a node, send the token, read an answer, and read a refusal, with a hello world you can run in a minute.

connectionsrestapiauthhow-to

How-to guides · 12 October 2026 · Semurg · 4 min read

Connecting to Semurg over MCP: the endpoint, both protocol eras, tools and errors

The node's Model Context Protocol endpoint, at the level a client author needs: one address, the token, both protocol eras it speaks, the tools it lists, and how a refusal comes back.

connectionsmcpagentsprotocolhow-to

How-to guides · 12 October 2026 · Semurg · 5 min read

Which papers support a claim, and which contradict it: a research graph

A blueprint for a research group: papers, authors and the claims they make or dispute as one graph, so the question "what supports this, and what contradicts it" is a walk with the evidence attached.

build-on-semurgresearchknowledge-graphagentsblueprint

How-to guides · 12 October 2026 · Semurg · 6 min read

Ticks and research notes on one engine: a blueprint for a quant desk

A blueprint for a quant research desk: ticks into the time-series pack, the latest mark of every instrument in one call, and the research notes kept as a graph beside the instruments they are about.

build-on-semurgfinancetime-seriesresearchblueprint

How-to guides · 12 October 2026 · Semurg · 5 min read

Follow the money: a connection graph for fraud and AML investigators

A blueprint for an investigations team: accounts, owners, companies and transfers as one graph, so a flagged account leads straight to where the money went, who controls each hop, and the loop that brings it back.

build-on-semurgfraudamlgraphblueprint

How-to guides · 11 October 2026 · Semurg · 7 min read

A support agent that remembers every customer: a blueprint

A blueprint for a support desk whose agents forget customers between conversations: customers and tickets as a graph, every conversation stored with its date, and the history in front of the agent first.

build-on-semurgcustomer-supportagentsmemoryblueprint

How-to guides · 11 October 2026 · Semurg · 7 min read

Give your agent persistent memory with MCP in five minutes

Install a node on your own machine, prove the seven memory tools over plain HTTP, then point your agent or framework at the same memory over MCP.

mcpagentsmemoryhow-to