Upgrading Mneme, keyless web search and cleaner page reads
In the last post I mentioned I was excited for beta.35, and most of that is down to the upgrades in Mneme, Mercury's memory system, alongside a much more useful set of web tools.
Mneme now scores and retrieves records like a proper hybrid search and retrieval system instead of relying on flat word matching. Recall matches different forms of a word, weighs recency when matches tie, and tracks which facts a model actually opened and cited so useful records rise to the top next time without an extra model call. Alongside word matching, a 118 MB local BGE embedding model runs in-process on your machine to rank records by meaning as well, with nothing leaving your machine and no paid API call involved. Starting a session is also smarter: your pinned rules still load in full, and beside them Mercury brings in up to 4,000 characters of the facts and earlier notes that match the branch you are on and the files you touched recently. You can also run /memory page to open your project's memory library in the browser as a visual graph of facts, pinned rules, stale marks and links.
A lot of work also went into keeping memory clean over long projects without deleting history. If a model tries to save a fact that contradicts a rule or fact already on record, Mneme refuses it at write time and names the conflict. When a new fact restates an existing one, consolidation merges them and keeps the older wording in history. Facts that have not been confirmed, opened or cited for about two months are marked stale rather than deleted, and come back as soon as they are used again, while pinned rules never age. If an end-of-session note mostly repeats what is already in the record, Mercury asks the model once more for what is actually new.
Web search is now useful out of the box without needing a separate search API key. It uses your provider's own search when available, then checks official coding sources directly: Stack Exchange for error messages, npm, PyPI and crates.io for packages, GitHub for code, Hacker News and Wikipedia, plus any SearXNG instance you configure, with every result naming its source. That same search step also helps when you ask for a new model ID that is not in the live or known lists yet: Mercury can look up the provider's model page and ask you to confirm what it found, without ever launching a model straight from web text. WebFetch is more token-efficient too: instead of running a small-model summary by default, it returns the page's own words and tables as markdown up to 38,000 characters per call, using r.jina.ai when a page needs a browser render and only summarising with a small model when asked.
Finally, there is a much simpler way for testers to report issues. Running /bug --short or visiting https://mercury-cli.ai/report opens a short form asking only for your OS, what you tried and what broke, with no health dump required. A set of fixes from beta.34 is in as well, including routing Gemini API keys through Google's native endpoint so multi-step tool sessions keep their thought signatures, and hiding empty rows when a provider withholds thinking text.