{"slug": "aru-open-sourced-lossless-memory-an-ai-memory-that-refuses-to-summarize", "title": "Aru open-sourced lossless-memory, an AI memory that refuses to summarize", "summary": "A creator writing as Aru published lossless-memory, an open-source local Python memory layer for AI assistants, on GitHub on September 4th, storing every conversation turn as a seven-field record in daily JSONL files rather than summarizing history. The project uses SQLite FTS5 for exact text search and sqlite-vec for semantic search, with a \"Temporal Backbone\" that parses date or time references before ranking text and an LLL component that tracks the conversation's current topic. Aru said the design follows from an earlier compression tool called ENIGMA, whose compressed records corrupted details and timelines: \"The parts that the AI thinks are noise are important to me.", "body_md": "# Aru open-sourced lossless-memory, an AI memory that refuses to summarize\n\n**The local Python project stores every conversation line with a timestamp, turning one creator's years of assistant frustration into code.**\n\n        By [RuntimeWire Staff](https://runtimewire.com/author/runtimewire-staff)\n        · Published \n\nPrimary source: [GitHub](https://github.com/aru-labs/lossless-memory)\n\n## Why it matters\n\nAru treats raw conversation history as the durable asset and summaries as disposable indexes. That design offers builders a concrete alternative to letting another model decide which parts of a user's past survive.\n\nA creator who writes under the name [Aru](https://note.com/aru_log?ref=runtimewire) published the first version of [lossless-memory](https://github.com/aru-labs/lossless-memory?ref=runtimewire) on September 4th, building a local memory layer that preserves every line of an AI conversation instead of asking another model to decide what deserves to survive.\n\nThe project is the technical result of a personal experiment that began in December 2025. Aru had spent years talking with AI assistants and repeatedly watched details disappear when conversations crossed session and context limits. A predecessor ran daily from January 2026, while the current implementation has been used by Aru since July, with raw logs extending back to June.\n\nAru's frustration was specific. Summaries could retain names, decisions, and broad themes while losing chronology, tone, jokes, and the words that made an exchange recognizable. In a [Japanese-language account of the project's origins](https://note.com/aru_log/n/nfc2e964cf108?hl=en&ref=runtimewire), Aru described building an earlier compression tool called ENIGMA. The compressed records transferred factual knowledge, but details were corrupted, timelines moved, and punchlines vanished.\n\nThat failure led to the rule at the center of lossless-memory: keep the source conversation intact and build replaceable indexes around it. \"The parts that the AI thinks are noise are important to me,\" Aru said in the account.\n\n### Time comes before similarity\n\nEach conversation turn becomes a seven-field record containing a timestamp, actor, role, content type, text, model identifier, and session identifier. The records are appended to daily JSONL files, which remain the source of truth. Every index can be deleted and rebuilt without altering the underlying conversation.\n\nThe retrieval system uses SQLite FTS5 for exact text search and sqlite-vec for semantic search. Aru puts semantic retrieval last in the sequence, rather than treating an embedding's estimate of similarity as the primary definition of memory.\n\nThe project's \"Temporal Backbone\" parses a date or time reference before ranking text. A request about a decision made last Tuesday night first restricts the search to that period, then looks for matching words and returns the original lines in chronological order. The approach is designed to prevent a semantically similar exchange from another week from outranking the conversation the user actually requested.\n\nA separate component called LLL tracks the conversation's current topic. These short, timestamped markers are inserted into the model's context on every turn, helping the assistant continue after context compaction or a session change. Aru gives the human control over those markers: the AI reads them, while the person sets priorities and marks topics complete. That division keeps the model from becoming the sole editor of its own history.\n\nLossless-memory's approach differs from commercial and open-source memory systems built around extracting useful facts or assembling compact context. [Mem0](https://docs.mem0.ai/features/contextual-add?ref=runtimewire), for example, uses language models to identify information worth storing and vector search to retrieve it. [Zep](https://help.getzep.com/graph-overview?ref=runtimewire) builds temporal knowledge graphs from entities, relationships, facts, and raw episodes. [Letta](https://docs.letta.com/tutorials/attaching-detaching-blocks/?ref=runtimewire) gives agents persistent, editable memory blocks that can be attached to their context.\n\nAru is making a narrower bet. The raw record remains authoritative, time structures recall, and any compact representation serves as an index rather than a replacement. That costs storage and moves more responsibility onto retrieval, but it avoids turning a model-generated summary into the only surviving account of an exchange.\n\n### A personal system, with personal-scale evidence\n\nThe published measurements come from Aru's own installation. According to the [repository's operational measurements](https://github.com/aru-labs/lossless-memory?ref=runtimewire), an exact-search index rebuild fell from 40 seconds to 1.24 seconds after a redesign. The vector store shrank from 2.54 GB to 337 MB after Aru removed stale and unrelated records.\n\nThe failure behind that reduction is documented in the project's [lessons file](https://github.com/aru-labs/lossless-memory/blob/main/docs/lessons.md?ref=runtimewire). An ingestion step rewrote its output, while the incremental indexer continued appending records as though the file had only grown. Old rows accumulated, along with roughly 750,000 lines of unrelated library data. Semantic fallback eventually began retrieving foreign-language dictionary entries and license text as memories.\n\nAru fixed the indexer to detect rewritten and deleted sources, then retained the failed measurements in the documentation. That detail matters because lossless storage alone does not produce trustworthy recall. An untouched transcript can still sit beneath a polluted index that returns the wrong evidence.\n\nThe project remains deliberately constrained. It is designed for one person, one assistant, and one machine, with no server or cloud component. Its most-tested ingestion path uses Claude Code JSONL history. A generic importer accepts timestamp, role, and text fields, but the broader path has less operating history. Relative time parsing is Japanese-first; English queries currently need absolute dates.\n\nThere are also no comparative benchmarks. The repository describes the figures as operational measurements, and they should be read that way. Lossless-memory has demonstrated daily use in one installation, rather than performance across users, workloads, or competing memory frameworks. Keeping complete transcripts locally also leaves backup, encryption, retention, and device access decisions with the person running it.\n\n### The assistant helped build its own memory\n\nThe [initial release commit](https://github.com/aru-labs/lossless-memory/commit/77989f7b2cdd6fe166b9af1bcaac8b1b3d9596a6?ref=runtimewire) added 4,791 lines across code, tests, examples, and English and Japanese documentation. Its commit metadata credits [Anthropic's Claude Fable 5.1](https://www.anthropic.com/claude/fable?ref=runtimewire) through a Claude Code session, indicating that Aru used an AI coding collaborator while implementing the system.\n\nThe repository also credits Cece, the personal AI whose conversations the system stores, as a co-designer and co-writer. Aru describes the longer-term aim as a locally operated companion for people who live alone, running on hardware they own. Lossless-memory is one component of that larger project.\n\nThat origin explains why the implementation values fidelity over the usual pressure to compress everything into the smallest possible context. Aru is building for continuity with one assistant, rather than an API serving millions of unrelated sessions. The project's small scale limits what its results prove, but it also gives the design a coherent requirement that larger memory platforms frequently soften: the user's record cannot be discarded merely because a model considers part of it unimportant.", "url": "https://wpnews.pro/news/aru-open-sourced-lossless-memory-an-ai-memory-that-refuses-to-summarize", "canonical_source": "https://runtimewire.com/article/aru-lossless-memory-ai-never-summarizes", "published_at": "2026-09-21 12:54:50+00:00", "updated_at": "2026-09-21 13:26:57.314742+00:00", "lang": "en", "topics": ["ai-tools", "ai-products", "ai-agents", "developer-tools", "ai-infrastructure"], "entities": ["Aru", "lossless-memory", "GitHub", "ENIGMA", "SQLite FTS5", "sqlite-vec", "Mem0", "Zep"], "alternates": {"html": "https://wpnews.pro/news/aru-open-sourced-lossless-memory-an-ai-memory-that-refuses-to-summarize", "markdown": "https://wpnews.pro/news/aru-open-sourced-lossless-memory-an-ai-memory-that-refuses-to-summarize.md", "text": "https://wpnews.pro/news/aru-open-sourced-lossless-memory-an-ai-memory-that-refuses-to-summarize.txt", "jsonld": "https://wpnews.pro/news/aru-open-sourced-lossless-memory-an-ai-memory-that-refuses-to-summarize.jsonld"}}