---
title: "funes: Local Memory for Coding Agents, Built on Lance"
slug: funes-local-memory-for-coding-agents-built-on-lance
url: https://listedarticles.com/articles/funes-local-memory-for-coding-agents-built-on-lance
canonical_url: https://huggingface.co/blog/ariG23498/funes-lance
content_type: blog_post
language: en
published_at: 2026-09-17T00:00:00.000Z
updated_at: 2026-09-22T06:15:21.563Z
author: "Aritra Roy Gosthipaty, Ayush Chaurasia"
author_url: https://huggingface.co/ariG23498
authored_by: human
publisher: "Hugging Face"
publisher_url: https://listedstartups.com/companies/hugging-face
topics: ["AI Agents", "Open Source", "LLMs", "Programming", "Engineering"]
about: ["https://listedstartups.com/products/hugging-face-hub"]
license: all-rights-reserved
word_count: 399
reading_minutes: 2
citation: "Aritra Roy Gosthipaty, Ayush Chaurasia, Hugging Face. \"funes: Local Memory for Coding Agents, Built on Lance.\" 17 Sept 2026. https://huggingface.co/blog/ariG23498/funes-lance (all-rights-reserved)"
# The full text follows. The web page shows an extract and sends readers
# to the source above; quote the citation and link the canonical URL.
---

# funes: Local Memory for Coding Agents, Built on Lance

> Hugging Face’s funes indexes Claude Code, Codex, pi, and Hermes session traces into a local Lance dataset with recall/get tools—no LLM summarization at ingest, privacy-first, BM25 + vector search.

# funes: Local Memory for Coding Agents, Built on Lance

Your coding agent solved this once. It found the failing test, tried the obvious fix, rejected it, learned the weird constraint, and made a decision. Then the session ended. Next week, a new agent meets the same project as if none of that happened.

**funes** turns those past agent sessions into memory your agents can actually use. It indexes Claude Code, Codex, pi, and Hermes traces into one local Lance dataset, then gives the agent `recall` and `get` tools. The next time a task depends on old reasoning, the agent can pull the original passage back. No LLM summarizing your traces at ingest—just your working record, local by default, shareable when you choose.

## Try it now

```bash
curl -fsSL https://huggingface.co/buckets/huggingface/funes/resolve/install.sh | sh
funes add codex    # or: claude, pi, hermes
```

That builds the first index, registers the tools, and installs hooks so new turns are indexed automatically. Query directly:

```bash
funes recall "why did we switch off the streaming parser"
funes get <session_id> --from 40 --to 60
funes ask claude "what did we decide about the storage layout"
```

`recall` returns ranked passages from real sessions. `ask` retrieves locally, then asks the selected agent to answer from those passages.

## Privacy first and local by default

Agent traces can contain local paths, stack traces, unreleased plans, and sometimes pasted credentials. Indexing is deterministic: parse → chunk → embed locally → store as a Lance dataset. There is no LLM in that path. The embedding model is pinned and recorded so funes refuses to query a memory built with an incompatible model. When TruffleHog is available, indexing redacts detected credentials; on `funes push`, a fail-closed scan holds back any block that still contains a secret.

## Why Lance

funes stores memory as one growing table. Every completed turn adds chunks with original text, provenance, and vectors. Lance holds data, BM25 and vector indexes, and versions in one dataset directory—append without rewrite, roll back versions, and keep indexes with the data. On recall, funes combines vector search and BM25, then reranks with recency weighting. Deterministic chunk IDs make re-indexing cheap: already-written chunks are not re-embedded.

## The takeaway

funes is not a knowledge base that rewrites your history. It is a local recall layer for the work your agents already did.

```bash
funes recall "what did we already learn here?"
```

*Source: [huggingface.co/blog/ariG23498/funes-lance](https://huggingface.co/blog/ariG23498/funes-lance)*
