Key takeaways

  • I work across several machines, and I switch coding agents depending on the task.
  • As they search a codebase, try approaches, hit errors, read documentation, and change direction, they leave behind a dense account of not…
  • For an agent to use those traces while it works, they need indexing, retrieval, ranking, and exact provenance.

What happened

I work across several machines, and I switch coding agents depending on the task. Every one of them meets my projects as a stranger. The reasoning from “last Tuesday” disappears when the session ends. Each new agent, on each new host, starts from zero. Earlier this year, Software Forgets: Agent Traces Are the Memory made the case that coding agents already produce the record we keep losing.

Underneath, the local memory is a Lance dataset, and the shared memory is a Hugging Face dataset (private by default) you own. Before anything reaches the Hub, credentials have already been redacted during indexing. Publishing then scans every chunk again and withholds anything that still looks like a secret. md, including what it does and doesn't cover.

When an agent reads a remote memory, funes caches the dataset files locally, so warm queries return to local speed. The Hub supplies the ownership, access control, versioning, and distribution it already supplies for other datasets. Your memory does not become an account in a separate memory service, and you do not rent it back through an API. recall is shaped for agents.

When you want to put a question to a memory yourself, use ask. It reads your local memory by default: Or point it at a shared memory. We published a memory of funes development, so you can ask why funes works the way it does without creating a memory of your own: A retrieval miss is not papered over.

If the passages do not support an answer, the agent says so. You can rephrase the question or add funes to the agent so it can search the memory iteratively during normal work. A shared memory is not tied to the agent or model that created it. Start a task in Claude Code, continue it in Codex next week, and the second agent can recall the first agent's reasoning.

Use pi with a local model or one served through the Hugging Face router, then return to Claude. Claude makes a decision; a hook indexes it; Codex recalls it in another session. The older hits in the demo are earlier recordings of the same experiment: an append-only memory remembered the rehearsals too. Published memories carry a dataset card and the funes tag, making them recognizable and discoverable on the Hub.

Why it matters

As they search a codebase, try approaches, hit errors, read documentation, and change direction, they leave behind a dense account of not just what changed, but why. While the diagnosis is correct, traces are only potential memory. The session logs of an agent are still just an archive. ” across ten thousand turns.

For an agent to use those traces while it works, they need indexing, retrieval, ranking, and exact provenance. That is what funes provides. It is a durable memory layer for your agents (Claude Code, Codex, pi, and Hermes). It is built from the sessions already on your machine. It works locally and becomes part of your agent's normal workflow with one command.

When you want it to, it can also travel to a Hugging Face dataset you own, private by default. funes is a single binary. Its default inference backend has no ML runtime dependency, and embedding and reranking happen on your machine. Install it: That one add command builds the first index, gives the agent recall and get tools, and installs the automation that indexes each completed turn.

Indexing is incremental, with new runs adding new turns rather than embedding the whole history again. The older and deeper content can backfill in bounded steps. From there, you just work. When a task touches a past decision, rationale, or finding, the agent can reach for recall itself. You do not need to remember the old session or paste its context into the new one.

recall returns the original text, not a summary, and shows exactly where it came from (the agent, timestamp, session, and turn). Each result includes a get command that opens the full turn and its surrounding context. Underneath, one deterministic pipeline parses every supported trace into the same turn-and-block shape, chunks it, embeds it with a pinned local model, and writes it to a local Lance dataset.

A query combines vector and BM25 search, fuses their rankings, reranks the candidates with a cross-encoder, reweights them by recency, and attaches neighboring chunks. The agent as a stranger problem is already solved on one machine. But memory gets more useful when the next agent is running somewhere else.

To make a memory follow your work, bind one when you add funes to an agent: The bind publishes your current memory there. funes then keeps it current, indexing each turn locally and publishing at session boundaries. The agent recalls from it throughout. Run the same command on another machine and the memory follows you there.

What to watch

The Hub already hosts open weights and datasets. funes adds open working memory. It holds the decisions, failed approaches, and rationale behind a project, queryable by another agent and traceable to the sessions that produced them. A long investigation bloats a session until each turn costs more to carry the context than to do the work.

The usual answers are to let the agent compact and carry on, or to write a handoff and start fresh. Recall is a third, so we measured them against each other on the handoff-vs-recall benchmark: two tasks whose answer cannot be reconstructed without the session prior knowledge.