Model or dataset
Laumss/loominary avatar
Laumss/loominary

Loominary: a local archive for Claude, ChatGPT, Gemini and SillyTavern conversations

Conversations shouldn't just live in a scroll bar. Loominary gives your Claude and SillyTavern conversations a home — a local archive of every conversation, yours to keep. Coming soon...

460 stars48 forksJavaScriptMIT

At a glance

What is it?
Loominary is a local-first conversation manager that loads chats from seven AI platforms, indexes branches and context, and exports them. It is aimed at people who have accumulated hundreds of chats they can no longer search. The last push to the repository was on 2026-03-25.
Who is it for?
Adopt Loominary if you have a large backlog of conversations on Claude, ChatGPT, Grok or SillyTavern and you want them searchable and exportable without sending them to a server; the userscript route is the lowest-friction way to try it. Do not adopt it if you need mobile support today, since the README states that work is still in progress, or if you require a documented MCP integration, which the README describes as early-stage.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 174 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The scrollbar problem Loominary was built to solve

The README opens with a plain statement of the author's own frustration: hundreds of chats spread across Claude, ChatGPT and Gemini with no good way to search any of them. That is the problem Loominary addresses. It is not a chat client and not a proxy. It is a local archive: you load conversations in, it indexes them, and you search, tag, branch-navigate and export from there.

The target user is someone with a long history on one or more of the supported platforms. The README lists Claude, ChatGPT, Gemini, Grok, NotebookLM, Google AI Studio and SillyTavern. The author claims full account exports for Claude, ChatGPT, Grok and SillyTavern, with timeline visualization across all conversations, and notes that to their knowledge no other tool covers all four in that way. That claim is the author's, not an independently verified one, but it defines the scope: this is a tool for breadth across platforms rather than depth on a single one.

A second audience appears under For Developers. Building locally adds a backend that can serve archived conversation data to other tools on your machine, with tags, memories and project instructions exposed via MCP or similar protocols. The README is explicit that this integration surface is still in its early stages.

Realtime Recording and why branch history is the core feature

The most specific mechanism described in the README is Realtime mode. The observation behind it: most platforms overwrite a previous response the moment you edit a prompt, so the old answer is gone and the comparison you wanted to make is gone with it. Realtime Recording records every version in the background, covering regenerations and prompt edits, and the preview lays the branches out on a tree side by side.

The practical consequence is search. Because global search indexes every branch, content from older revisions that the platform itself has buried remains findable. The README gives one concrete scenario: after platform updates, some users found that reworking a prompt produced worse results with no way to revert. Realtime keeps the earlier versions. A second scenario is image generation, where you want to compare four variations.

Branch handling differs by platform. Claude, ChatGPT, Gemini and Grok are listed as supporting Realtime Branches. NotebookLM is listed as Whiteboard mode, and Google AI Studio has no entry in that column. SillyTavern is different again: Loominary loads all branch JSONL files and merges them into a single timeline, which the README states is not natively supported by SillyTavern itself. That merge is a file-level operation rather than a live recording, and the distinction matters if you expect the same behaviour across platforms.

What context gets captured beyond the messages

Loominary archives the material around a conversation, not just the turn-by-turn text. For Claude, the README lists project descriptions, instructions, project memory, knowledge files, user preferences and saved memories. For ChatGPT, memories are exported alongside conversations. For SillyTavern, character cards, world books and the current preset are archived.

This is the part that makes exports reproducible. A Claude project chat without its project instructions is a transcript with missing context; the same chat with instructions, memory and knowledge files attached is something you can reread later and understand. Users who have invested effort in SillyTavern characters and world books get a similar benefit, since those assets travel with the conversation.

The supported-platform table marks Project&Memories as Yes for Claude and SillyTavern only, with dashes for ChatGPT, Gemini, Grok, NotebookLM and Google AI Studio. The README text says ChatGPT memories are exported, which reads as a narrower capability than the Claude column. Either way, if project context is the reason you are interested, Claude and SillyTavern are the two platforms where the table confirms it.

Installing Loominary and loading a first conversation

There are two documented routes. The README points to a hosted version at the project's welcome page and to a Greasyfork userscript listing. The userscript is the quicker path; the README notes that the userscript version does not support SillyTavern, so SillyTavern users need the Chrome, Firefox or Edge extension or must load files manually.

For a local build, package.json defines the scripts. The repository is a Create React App project with a build.py at the top level and a postbuild step that copies index.html into build/welcome. The scripts in package.json are the source of truth here:

json
"scripts": {
  "start": "cross-env HOST=0.0.0.0 PORT=3789 PUBLIC_URL=/lyra-exporter react-scripts start",
  "start:local": "cross-env PORT=3789 react-scripts start",
  "start:network": "cross-env HOST=0.0.0.0 PORT=3789 react-scripts start",
  "build": "cross-env NODE_OPTIONS=--max-old-space-size=4096 react-scripts build",
  "deploy": "gh-pages -d build"
}

The start:local script sets PORT=3789, so the development server should come up on that port. A network-visible variant exists as start:network, which sets HOST=0.0.0.0 and the same port. A production build runs through npm run build, with NODE_OPTIONS set to a 4096 MB heap, and npm run deploy publishes to GitHub Pages via gh-pages.

Once the app is running, the workflow described in the README is: load your chats from a supported platform, then search, tag and export. For a full account export, the README mentions batch processing that can export hundreds of conversations into a ZIP file, with an option to export only the latest branch of each when you do not need the full history. That option is described as useful for large Claude account exports. Exports go to Markdown or PDF, with LaTeX and image support in the PDF path, and you choose what to include: timestamps, thinking processes, Artifacts, tool calls or citations.

The limits: mobile, the userscript gap and a struck-through feature

Mobile support is not finished. The README states that it is currently in the works and describes what is planned: navigation that hides on scroll, a dedicated mobile search layout, and working back gestures. Until that ships, treat Loominary as a desktop tool.

The userscript does not support SillyTavern. That is stated plainly in the README, with the extension or manual file and directory loading offered as the alternative. If SillyTavern is your main platform, the userscript route is the wrong one.

One detail in the feature list deserves attention. The Flexible Exports bullet reads "Export to Markdown, PDF (with LaTeX and image support)~~, or long screenshots~~." The strikethrough on long screenshots indicates the feature was removed or disabled rather than merely undocumented. Anyone who needs a long-screenshot export should confirm the current state before depending on it, since the README does not explain the removal.

There is also a scope caveat on the developer story. The README says the architecture supports serving archived data to local AI clients via MCP or similar protocols, but that the integration surface is still in its early stages and the work is still taking shape. That is a statement about intent, not a shipped interface.

How Loominary differs from SillyTavern and from browser-native export

The closest comparison in the README is SillyTavern itself. SillyTavern is a chat front end: you talk to models through it, and its branch data lives in JSONL files. Loominary does not replace that; it reads those files, merges the branches into one timeline and archives the character cards, world books and preset alongside them. The README describes the merge as something SillyTavern does not natively support. So the difference is direction of travel: SillyTavern generates conversations, Loominary indexes and exports them, and it also reaches into Claude, ChatGPT, Gemini, Grok, NotebookLM and Google AI Studio, which SillyTavern does not.

The other alternative is the platforms' own export features. Those give you a data dump, and the README's premise is that a dump is not the same as a searchable archive: no cross-platform search, no branch tree, no tagging, no selective export. Loominary's answer is the index plus the branch model. Whether that is worth installing depends on whether you actually revisit old conversations. If you never search your history, the platform export is sufficient and Loominary adds a layer you will not use.

Privacy, licence and the cost of keeping up

The privacy section is unambiguous: no analytics, no telemetry, no data collection, conversations processed entirely in the browser and stored locally, and the extension activating only on supported platforms and communicating solely with your local Loominary instance. That last clause matters because it is a constraint as well as a promise: the extension expects a local instance to talk to.

The repository is MIT licensed, which permits commercial and private use, modification and redistribution provided the copyright notice and permission notice are included. That is a permissive arrangement, but it is not legal advice; if you plan to redistribute a modified build, read the LICENSE file at the repository root rather than relying on a summary.

Maintenance is the open question. The last push to the repository was on 2026-03-25, and the most recent release listed is v7.5 (1.7.5) from 2026-03-02, following v7.4 (1.7.4) on 2026-02-17 and v7.2 (1.7.3) on 2026-01-29. The release cadence in that window was roughly every two to three weeks. The version numbering is unusual: package.json declares 26.03.0 while the releases use a 1.7.x scheme, so do not assume they track each other. The README also notes that Loominary is a ground-up rewrite of Lyra Exporter, and the start script still sets PUBLIC_URL=/lyra-exporter, a leftover from that lineage. The practical upgrade cost is the usual one for a browser tool: platform export formats change, and each change is a maintenance event the project has to absorb. The contributing guide and development roadmap are described as on the way, so there is no published process to check before filing work.

Editorial conclusion

Adopt Loominary if you have a large backlog of conversations on Claude, ChatGPT, Grok or SillyTavern and you want them searchable and exportable without sending them to a server; the userscript route is the lowest-friction way to try it. Do not adopt it if you need mobile support today, since the README states that work is still in progress, or if you require a documented MCP integration, which the README describes as early-stage. Before relying on it, verify that Realtime Recording captures branches for your platform, confirm that your full account export loads without truncation, and check that the export format you need is still listed as supported rather than struck through.

Frequently asked questions

Which platforms does Loominary support for loading chats?

The README lists Claude, ChatGPT, Gemini, Grok, NotebookLM, Google AI Studio and SillyTavern. Full account exports with timeline visualization are described for Claude, ChatGPT, Grok and SillyTavern. Project and memory capture is marked as supported for Claude and SillyTavern only.

Does Loominary send my conversations to a server?

According to the README, no. It states there are no analytics, no telemetry and no data collection, that conversations are processed entirely in the browser and stored locally, and that the extension communicates solely with your local Loominary instance.

Can I use Loominary with SillyTavern?

Yes, but not through the userscript. The README notes that the userscript version does not support SillyTavern, and points to the Chrome, Firefox or Edge extension or to manually loading files and directories. SillyTavern support includes merging branch JSONL files into a single timeline and archiving character cards, world books and the current preset.

What export formats does Loominary produce?

The README lists Markdown and PDF, with LaTeX and image support in the PDF path, and says you can choose whether to include timestamps, thinking processes, Artifacts, tool calls or citations. Long screenshots appear struck through in the feature list, so that format should not be assumed available.

Does Loominary work on mobile?

Not yet according to the README, which states that mobile support is currently in the works. It describes planned behaviour including navigation that hides on scroll, a dedicated mobile search layout and back gestures.

What does Realtime Recording in Loominary actually capture?

The README says Realtime mode records every version in the background, covering regenerations and prompt edits, and displays the branches on a tree in the preview. Global search indexes every branch, so older revisions that the platform has overwritten remain searchable.

Official sources

  1. Laumss/loominary on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Community notes

Community notes