Everything your agents ever did. Anything you ever prompted. One question away.
The AI memory system that is a real database. Any agent, any model, one continuous line of work. The archaeology of why things are the way they are, one query away.
One tool, zero dependencies, 100% local. SQLite + exact SQL + optional local semantic search. CLI + MCP.
la-roca-ad-v2-fade-github.mp4
Your agents forget everything they write to disk (thinking blocks, exchanges, tool calls...). La Roca makes it easy for your agents to query that data, and teaches them how as they go:
- every answer says what you got and which command comes next
- every error names its fix
- the shipped skills carry the craft
An agent learns La Roca by using La Roca. CLI and MCP.
Do not read a manual. Tell your agent:
Install https://github.com/thellmwhisperer/la-roca and learn to use it.
The repository teaches your agent the rest: AGENTS.md tells
it what this is, how to install it, and how to search well. Three commands
later it is answering questions about everything your agents ever did:
$ curl -fsSL https://raw.githubusercontent.com/thellmwhisperer/la-roca/main/install.sh | sh
$ roca init
$ roca query "what did we decide about the retention window"
search hybrid · engines fts,vector · 24 ms
terms[2]: retention, window
rows[1]{rank,source,legs,consensus,snippet}:
1,corpus.memories.202,vector+fts,true,"30 days and out. I do not want eternal logs."
Init installs the skills into every runtime it detects. If your runtime was not
detected, use roca skill install codex (or claude, opencode, pi, or
hermes) as a fallback.
If an already signed-in agent CLI is on PATH (claude, codex, ...),
no login of any kind is needed: La Roca borrows the plan you already pay
for. Supported on macOS, Linux, and native Windows.
Install details and the full init flow.
You: which model do I actually have chemistry with?
Your agent: Claude is the passionate one: three times the praise and three times the cursing of anyone else, and you always come back. Codex is the contractor: half the anger, a third of the joy, and the only one you trust overnight. Want the rows behind that?
The bug you know you fixed once, the perfect one-liner an agent wrote for you in July, yesterday's decision with the conversation that made it: one question away, always with the rows as proof.
Everything above works from minute one: exact SQL and full-text search need nothing extra. The full experience begins when you index your corpus: one model download, one background build, and your agents also search by meaning. Search finds what you already know how to name; investigation finds the rest:
You: find that authentication rewrite we abandoned
Your agent: your sessions never call it that. They call it "the passport mess": 41 mentions across 3 projects, first on 11 February, dropped in April after the token bug. Want the month-by-month arc?
Underneath, the hybrid loop: vectors find nearby rows, full text counts them, SQL frames them. No model invents a single row.
A session starts by asking for the latest handoff and ends by storing one. The Claude session you open today knows what Codex did last night, without you re-explaining the project. Every agent reads and writes the same database, from the shell or through MCP.
Patterns in your history become skills that travel back to every agent. A regular skill is a snapshot of a tool; a skill distilled from La Roca comes with its whole story: the how, the why, and the failed attempts behind the final answer. Skills and distillation.
Because it is a real database, not a search box:
roca exec "SELECT source_agent, COUNT(*) FROM sessions
WHERE started_at LIKE '2026-07%' GROUP BY 1 ORDER BY 2 DESC"roca query searches with deterministic full-text and optional vector fusion.
roca playground compiles a question into one checked SELECT, while
roca explore turns that model-backed machinery into a guided investigation.
Queries, explore, and the read-only gate.
Register an SSH target, run the same gate-approved SELECT there, or scatter
one SELECT across local and remote rocks into a temporary in-memory SQLite:
roca remote add studio --ssh dev@studio.example
roca remote exec studio "SELECT COUNT(*) AS sessions FROM sessions"
roca remote cross "SELECT source_agent, COUNT(*) AS sessions FROM sessions GROUP BY 1" --on studioSSH configuration owns authentication. La Roca opens no port and adds no sync
or daemon; remote data calls are plain ssh <target> roca ... --json and remain
read-only. Remote query details and exit codes.
Everything runs on your machine: static binaries, SQLite under ~/.roca,
zero network in the ingest path. Models see your schema and at most ten
result rows, never the database. Go fully local with Ollama and nothing
leaves at all. The full privacy contract.
Ten coding agents and counting, plus your ChatGPT and Claude data exports: incremental, idempotent, read-only against live stores. Every source in detail.
- One normalized schema. Sessions, exchanges, thinking, tool calls, and curated memory layers, the same shape for every runtime.
- Query is deterministic hybrid retrieval. Rare-term FTS and optional local vectors fuse into labeled evidence without an answering-model pass.
- The playground keeps model-written SQL. With
--full, the first model sees the schema and writes oneSELECT; the second sees only result rows. Either can be local. - Extensible. Plugins federate your own SQLite databases into the same query surface: a checksummed package, one consent screen, and your team's sources answer next to the corpus.
Architecture has the longer story.
The docs index: models · MCP · vector · ingest · plugins · operations · lifecycle · releases · build and test
MIT
