I ve been using Codex, Claude Code, and OpenClaw for different kinds of work:
Codex (now @ChatGPT by OpenAI )is strong at long-context planning and execution.
@Claude Code acts like a supervisor and a second pair of eyes.
@OpenClaw is like my daily operations intern.
I know there are many other agent harnesses. Many are open-source, including OpenHands, @Pi Coding Agent , and Hermes.
Hey Product Hunt π
I'm Richard, co-founder of HarnessRouter. Today we're launching Harness Memory, which gives agents built on HarnessRouter a long-term memory.
Here's why we built it. Every agent we built kept forgetting things, like what a user told it yesterday or what it figured out last session. It was worse whenever we switched harnesses, say from Claude Code to Hermes, or from Pi to Codex, because we had to wire memory up all over again each time. We kept thinking memory should be part of the agent instead of something you glue on afterwards.
So that's what Harness Memory does:
It's built in. When you build an agent, HarnessRouter picks a memory engine that fits the agent's job and tells you why. The options are Mem0, Graphiti, Hindsight and ReMe, or you can bring your own. Some agents shouldn't remember anything, like a translator that only transforms input, and those get no memory at all.
It works in every session. The agent recalls memory when each turn starts, uses it through tools during the turn, and records what it learned when the turn ends. You don't write any glue code.
It works across harnesses. A Claude Code agent, a Hermes agent, and a Codex agent can share one memory. In our demo, Codex saves a weekend plan, and Claude Code recalls that plan in a completely new session.
We built it for agents that serve lots of people, so we were strict about a few things:
Every user of the agent gets their own piece of memory, kept apart from everyone else's. Each memory needs its own access grant. Without a grant there's no access, and a model can't widen its own access.
Agents can forget, but only people can erase. We never give an agent erase memory via a tool. When a fact changes, Harness Memory saves a new version, so the history stays.
Memory informs the agent, but never instructs it. Recalled memory reaches the agent fenced off from its instructions, and each record is labeled with who wrote it. On the Memory page, people can see, edit or delete what's stored.
We also made it open. The memory layer is an open spec, the Harness Memory Protocol, which is the Memories chapter of the Unified Harness Protocol. Any memory service can plug in as a provider. If a provider doesn't support something, we report the gap rather than skip it silently.
Harness Memory is available today in the open-source Community Edition, and on HarnessRouter Cloud.
We'd love to hear from you:
What's the one thing you most wish your agent remembered?
Which memory engine should we support next?
We're around all day, so ask us anything π
Love that it's open source. How do you keep memory from going stale or bloated over time? Is there pruning or summarization, and can I scope memories per project?
@zain_sheikhΒ Thanks Zain, really glad the open source part resonates! π
Each memory engine handles stale or bloated memory in its own way:
- Mem0 updates or drops a fact when a newer one contradicts it.
- Graphiti keeps facts on a timeline, so a newer fact replaces the old one.
- Hindsight consolidates in the background.
When a turn starts, the agent recalls only the top matches for what was just asked and skips repeats, so it doesn't load the whole memory. Memories don't expire by age today. Instead you can see everything an agent remembers, and why, under Memories in the console, and edit or delete any of it.
A memory belongs to its workspace and doesn't reach into another one. Inside a workspace, each harness agent plugged with its own memor(ies), kept separately for each person if the agent serves multiple users. You can also share one memory across several agents when they should know the same things. It's a N * M combination: you can plug any number of memories in the same workspace to a single harness, and each memory can be plugged into any number of agent harnesses in the same workspace.
Would love to hear what you build with it!