Last Week

Last week, I was still assembling Hermes as a practical backup for my AI development workflow. The local models were working, OpenViking was connected, and I had learned that one model slot was not enough for every request an agent system makes. I was optimistic, but the setup was not yet fully operational.

This week, the memory side of that experiment began to pay off. OpenViking has not made Hermes perfect, but I spend far less time repeating the same instructions. That changes the experience more than I expected.

Shokken is available on Google Play and the iOS App Store. The storefronts and product website have been refreshed, and special launch pricing is now available to the first group of signups. That offer cannot last forever. If you are interested—or know someone who might be—the product website and app stores are the places to start.

Most of this week’s update, though, is about what it means for an agent to remember.

Files Are Memory, but Not a Memory System

Coding agents already have a basic way to remember things. I can put instructions in a repository so the agent knows how to work on that project, or put them in a user-level file so they apply everywhere.

That works well for a small number of durable rules. If I wanted every pull request to end with the same sign-off, for example, I could put that instruction in a file and stop thinking about it.

The trouble begins when the file grows.

The first problem is attention. If an agent receives a long list of instructions for every task, many of those instructions will be irrelevant to whatever it is doing now. A rule about pull requests does not help while the agent is diagnosing a database problem. The more unrelated material I put in front of the model, the easier it is for the important parts to get diluted.

The second problem is space. Models have finite context windows, and instructions consume some of that context on every turn. A one-word message from me can travel with thousands of tokens of system prompts, tool definitions, project rules, user rules, and conversation history. The more static material I add, the sooner the conversation needs to be compacted or compressed.

Flat files are valuable, but I do not want every preference I have ever expressed loaded into every interaction. I want the relevant instruction to appear when the agent needs it.

Memory by Meaning

That is what attracted me to Hermes Agent. It is not presented only as a coding tool. It is trying to be a more general agent—something closer to a personal assistant—and memory is part of that design rather than an extra file bolted onto the side.

Hermes supports external memory providers. I chose OpenViking, an open-source system I can host myself. I initially picked it after comparing the available benchmarks, but its retrieval model is what has kept me interested.

OpenViking still puts information into the agent’s context. The important difference is that it does not put everything there. It stores memories, searches for the ones that appear relevant to the current request, and returns a smaller set for the agent to use.

It also reduces the housekeeping burden. Instead of relying entirely on me to notice a useful preference, summarize it, and add it to an instruction file, the system can analyze interactions and extract memories from them. I will still need to manage what it learns and correct mistakes, but remembering is no longer a completely manual documentation task.

What Does It Mean in English?

Suppose I ask Hermes to check the review status of a pull request.

Without a memory subsystem, the request goes to the main model with the same static instructions it receives for other jobs. If the rules I care about are not in those files or the current conversation, I have to repeat them.

With OpenViking connected, Hermes first gives the memory system the request and conversational context. OpenViking uses an embedding model to retrieve semantically relevant candidates, and it can optionally rerank those results before returning the relevant context to Hermes. The main model can then use those memories while it works.

The useful part is that this is a search by meaning rather than an exact text match. “PR,” “pull request,” and nearby concepts can lead toward the same memories even when I did not use precisely the wording that was stored.

For the pull-request task, the agent can retrieve my pull-request preferences without also loading everything it knows about writing blog posts, debugging an application, or how concise I like routine status updates to be.

That is the difference between a pile of notes and a memory system: not merely storing information, but recalling the right information at the right time.

The Results So Far

In practice, it has worked surprisingly well. I do not need to restate exact instructions nearly as often as I did before.

Retrieval is not perfect. Sometimes OpenViking misses a relevant memory, or a memory does not appear in the scope where I expected it. But the repeated frustration of telling an agent the same thing five times has become much less common.

That has an emotional effect even though I know the agent has no emotions or intent of its own. These systems produce human-like language, so it is easy to react to them as if they were people. When an assistant remembers something I said earlier, the interaction feels more considerate. When it forgets, the failure feels more personal than a software bug should.

Other assistants are moving in this direction too. Consumer-facing systems can hide the storage, retrieval, and configuration behind a polished interface. With Hermes and OpenViking, I can see and control more of the machinery—but I also have to operate it.

The Cost of Admission

OpenViking is finicky to set up. My configuration needs a main model and an embedding model, with a reranker as an optional addition. Those models have to run somewhere, whether that means hardware I operate or cloud services I pay for.

Hermes itself is also rough. Most of the problems I have encountered are in its desktop interface: state does not always persist correctly, and asynchronous operations do not always start or finish the way I expect. It is not a polished, invisible assistant. It is software I have to understand and occasionally work around.

For now, the tradeoff is worth it. Hermes gives me a route away from dependence on any one proprietary model, while OpenViking gives the agent a much more useful way to remember how I work. I have paid for that flexibility with configuration time and frustration rather than a subscription fee.

I may feel differently in a few months. Right now, though, I am happy with what the experiment has become.

Next Week

The tooling is finally becoming useful enough that I can turn back toward the reason I built it.

Marketing work for Shokken is already underway: emails are going out, product pages are being updated, and the weekly Thursday product videos continue. My next goal is to increase the volume and reach of those videos before I spend too much time trying to perfect each one. They currently live on YouTube, and I want to start putting them in more places.

Next week, I expect to have more to report on that work—and, ideally, less to report about configuring the tools behind it.