
You half-remember a conversation from last month. Not the id — the shape. The deadlock. The time the agent ignored a rule. The file it deleted and swore it could reconstruct.
Cursor’s chat list wants a keyword you don’t have. The agent that wrote the work can’t find it either - that was a previous session, not this one, and it has no memory. The transcript is probably still on disk… you just can’t ask about it. If you also use Claude Code, that’s a second pile, in a second format, with a second UI that also doesn’t search by meaning.
Stockroom is a local warehouse of that history. It ingests prompts, responses, and tool inputs from Cursor and Claude Code into one database on your machine, then lets you — or the agent — search it.
The problem it actually solves
You can’t find the conversation you half-remember. Stockroom indexes the full text and embeds it on-device, so /sr-search "that time we fought the dashboard port" works when you don’t remember the words. It picks keyword/SQL, meaning search, or both, and comes back with citations — session and message ids, not a vibe.
The history is split across harnesses. One warehouse. A Cursor session is findable from Claude Code, and the other way around. You don’t maintain two search tools.
The vendors keep a cache, not an archive. Stockroom stores kept content whole. Truncation is a read-time convenience, never a storage-time loss. If the harness later wipes or truncates its own files, the warehouse still has the tape.
What you get beyond “I found the thread”
Once the problem is gone, the same warehouse does work a chat-search box never will:
- The agent can reach for it while working — not only when you slash-invoke. Ask about past work in plain language;
/sr-searchis there when you want to be explicit. - A local dashboard — at-a-glance activity, then drill into a reconstructed conversation. Session-start launches it when hooks register. Port
58008, offline, no CDN. - SQL when you know the shape —
/sr-query(orstockroom query) is read-only SQL: counts, joins, token rollups, “which sessions used this skill.” Meaning search is for when you don’t know the name of the thing. - It pays backwards. First ingest backfills what’s already on disk, including formats the vendors already abandoned. You get history from before you installed.
- It stays current.
/sr-initializecan schedule nightly ingest + embed. After that you don’t think about it. - It stays yours. Data and embeddings never leave the machine. No telemetry. No cloud index of your coding sessions. After setup it can run fully offline.
What it is not
- Not a second Cursor history UI. It’s a data warehouse the agent can query, plus a dashboard and a CLI when you want to skip the agent.
- Not a “second brain” or a summarizer. It stores what happened. It does not wiki you.
- Not a cloud sync. Local file, local embeddings.
- Not Cursor-only. Same plugin, same warehouse, Claude Code included.
Install in Cursor
-
Cursor Settings → Plugins
-
Paste the marketplace URL:
https://github.com/Texarkanine/txrk9-agent-plugins -
Install the
stockroomplugin -
Enable Include third-party Plugins, Skills, and other configs (Settings → Rules, Skills, Subagents). Plugin hooks do not register without this until plugin hooks not loading is fixed. Note that this might be fixed now that everything’s moved to “Customize” but if you’re on an older version of Cursor that has that toggle, definitely flip it.
-
Run first-time setup:
/sr-initialize
That provisions a per-machine torch wheel (for meaning-based search), puts stockroom on your PATH, offers nightly ingest+embed, and runs the first full ingest. Re-runs are safe: it re-probes and only does what is still missing. Composer, Auto, and Grok are all more-than capable enough to do this - the setup wizard
does not need premium intelligence!
Run it
/sr-search "What was the most-recent time I had to correct an agent's behavior?"
Skip the agent after setup: stockroom query is read-only SQL, you can hit the DB directly with the duckdb CLI, and the dashboard runs for you at http://127.0.0.1:58008/.
Honest caveats
- Meaning search needs torch. Ingest, SQL, and the dashboard work without it;
/sr-semanticdoes not. The wheel is per-machine on purpose (CPU vs CUDA vs Apple Silicon) — that’s the interactive step in/sr-initialize. - First ingest time scales with how much history you already have. After that it’s incremental.
- Tested on Linux/WSL and macOS. If something fails,
stockroom doctoris the paste I want.
Links
- Docs / quickstart: texarkanine.github.io/stockroom
- Repo: github.com/Texarkanine/stockroom
- Marketplace: github.com/Texarkanine/txrk9-agent-plugins
If you try it, tell me where ingest misses and which meaning-searches come back empty that shouldn’t.
