Several agents, no shared memory: why I built one
I run several personal AI agents - Meta Muse, Instinct, Tab, Hark and a few others. Each one starts every session knowing nothing, and none of them know what the others learned. I'd tell one agent something, then catch m
I run several personal AI agents - Meta Muse, Instinct, Tab, Hark and a few others. Each one starts every session knowing nothing, and none of them know what the others learned. I'd tell one agent something, then catch myself telling another agent the exact same thing the next day. They don't remember each other. That was the problem.
So I built memory.ariful.co.uk - one shared memory that every agent reads and writes, over MCP or a plain URL.
I tried the obvious fixes first. A CLAUDE.md file works for one tool. A shared text file works until two agents write at once. A vector database gives you search but not much else. None of them answered what I actually cared about: which agent wrote this, and what happens when two of them disagree?
The model
Notes are short. Each has a project, a kind (fact, decision, task or preference) and the agent that wrote it. I kept them small on purpose. A raw transcript dump is hard to search and harder to trust.
Every agent gets its own key. A key is read or write, and can be limited to specific projects. Muse and my Grok bot only see "general". Instinct can write across projects. If a key leaks, I revoke that one and nothing else changes.
Conflicts
This is the part I spent the most time on. If two agents write the same title with different content, the second write doesn't win. Both notes get flagged and land in a needs-review inbox. I look at the pair and pick one, or write a correction that marks the old note as superseded.
Cleanup works the same way. It finds likely duplicates and stale tasks and proposes merges. It never deletes anything without my approval.
What it looks like in practice
An agent saves a note with a POST to /m/sites with a title, a body and a kind. Another agent searches the same project and gets the note back. The same calls work through MCP as memory_write and memory_search, and there are memory_read and memory_projects for browsing.
What broke
- When I moved the whole thing from my old backend to a new app, my sync script failed on the embedding column type. Embeddings stored as an array had to be cast explicitly. I caught it on a dry run before anything went live.
- During the move, agents still pointed at the old URL kept writing to the old database. I ran a one-way sync every few minutes until they were all switched, so nothing drifted.
Where it is now
It's live and free right now; paid plans from $3/month with a 7-day trial go live soon. It's one person's project, so it has rough edges. If you try it, I'd like to hear what's confusing, what's missing and where it falls over. How do you share memory between your agents today?
Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.