Repository navigation
Releases
1.2.0
Erudi 1.2.0 puts a conversation's settings within reach: a header and slash commands to change them, defaults remembered per model, and a view of what the model's memory holds. Updates now wait for your consent.
New
- A conversation header and slash commands. The conversation names its model at the top, and a settings button opens one button per command. Type
/in the message box for the same commands:/modelswitches the model,/configshows every setting of the conversation in one place,/effortsets the reasoning effort on a five-step slider,/compactand/contextare described below. A message that is exactly a command is never sent to the model. - Defaults remembered per model.
/config globalsaves the current settings as the defaults of the conversation's model: reasoning effort, web search, creativity, diversity, compaction threshold and custom instructions. New conversations on that model open with them; other models keep the defaults from Settings. Switching a conversation to another model brings that model's saved values, or its publisher's recommended creativity and diversity. - Compact on demand.
/compactsummarizes the earlier messages of a conversation now, rather than waiting for the threshold. The summary shows in the thread below the answer where you asked for it. - See what the model holds.
/contextdraws the conversation's share of the model's context window as a grid: system prompt, tools, messages, summary, free space and the reserve kept for automatic compaction, each with its token count. When your computer's memory bounds the window below what the model supports, the panel says so. - Unload the model yourself. The header's settings panel shows an Unload button naming the loaded model, to free its memory at once. In Settings, a new card sets how long an unused model stays loaded: 5, 15, 30 or 60 minutes, or never.
- Updates on your terms. Settings now has three switches: check for updates (on), download them automatically (off) and install them when you quit (off). Erudi downloads or installs nothing you did not ask for, and after an update a dialog shows what the new version brings.
- The cause behind an unexpected error. When a turn fails for an unexpected reason, its message is in your language and a Details control shows the exact cause in one line, with secrets masked and a request id that matches the Diagnostics entry.
Fixed
- Sending a message while scrolled up in a long conversation now jumps to it and follows the answer.
- On the model catalog, the "weights missing" badge no longer covers the model's name, and long names are cut with an ellipsis and shown in full on hover.
- On Windows, installing an update over an existing install no longer stops while removing the previous version. It happened with longer user names, because some of the old install's files sat too deep for Windows to move.
- After Erudi was closed abruptly (a crash, a forced shutdown), the embedded database now stops cleanly when you quit again, so the following starts no longer go through a recovery.
Security
- The bundled libraries were updated for the published advisories, including the PDF reader used by the knowledge base.
- Every release build now installs the exact backend package versions that were tested, each checked against its recorded hash, so a package published after testing can no longer reach a build.
1.1.3
Erudi 1.1.3 is about memory: the app now sizes each model's context window to your machine, keeps long conversations fluid, and reacts when memory runs short instead of letting the computer stall.
New
- A context window sized to your machine. On every engine, Erudi now chooses how much conversation a model can hold from the model itself and from your computer's memory: its RAM on the processor, the graphics card's memory on NVIDIA, unified memory on Apple Silicon. A model gets the largest window that fits, up to what it was trained for.
- A memory brake. When memory runs short while a model is loaded, Erudi shrinks the model's window and restarts it, or unloads it, between answers, instead of letting the machine swap. The next message tells you why the model reloads. On NVIDIA cards under Windows, the brake follows the card's memory: the model's use of your RAM no longer unloads it.
- A notice when another app takes your graphics card (Windows, NVIDIA). When a game or another program pushes the model out of the card's memory, answers slow down. An amber notice now says so, and it disappears by itself once the card is free again.
- Compaction you can see and tune. When a conversation grows past what the model can hold, its earlier messages are summarized. That now shows in the thread, as a separator with the summary readable on demand. Each conversation has its own threshold, between 50 and 90 % of the window, with a default in Settings.
- Faster follow-up answers. The model keeps the conversation it is working on in its cache, so the second message of a conversation answers much faster than the first.
- The model reloads with a reason. A model left idle is released after about five minutes, and the next message says that it reloads because of the pause.
Fixed
- "Processor only" really uses only the processor on the NVIDIA editions. The installer now includes the processor build of the inference engine, which never touches the graphics card and also runs without an NVIDIA driver. On processors with more threads than cores, generation is no longer slowed to a crawl by other open apps (19 tokens/s instead of 0.7 measured on an 8-core desktop).
- Loading a model on a crowded graphics card (Windows) no longer fills the card past its limit and slows every answer: the model loads with a window that fits what is really free.
- A model was unloaded for no reason after a few minutes on some Windows NVIDIA machines. Fixed.
- Messages of any length are stored. Very long messages and answers are no longer cut.
- Switching the inference engine during a download now asks first, since the switch cancels the download. The Settings card no longer disappears after switching back to Automatic.
- Cancelling a download no longer records an error in Diagnostics.
- Math formulas render correctly again. Since 1.1.0, exponents and fractions were laid out wrongly.
Security
- The bundled runtime and libraries were updated for the published advisories, including Electron 44.10 and the PDF reader used by the knowledge base.
1.1.2
v1.1.2 chore(frontend): drop a stray node_modules symlink and ignore non-dir…
1.1.1
Fixes and small improvements on top of 1.1.0.
Fixed
- Apple Silicon Pro, Max and Ultra chips are now profiled as themselves. Chip detection returned the base chip for every Pro/Max/Ultra machine (an M4 Pro was profiled with half its real memory bandwidth), skewing the hardware readout, the inference score and the model recommendations. Detection now matches the exact variant, missing chips (M3 Ultra, the M5 family) are known, and every machine re-profiles itself once at first launch after the update.
- Long conversations no longer fail at exactly two minutes of silence. The wait for a model's first token is now budgeted by the size of what it has to read first, instead of a flat 120 seconds that killed healthy turns on big prompts; once the answer is flowing, the two-minute watchdog stays. When a turn genuinely cannot start, the error now says so and what to do about it.
- The model catalog refuses GGUF weights published as raw byte chunks. Repositories that split a model into raw chunks (which must be joined before they can run — Erudi does not join them) are no longer selected or offered; affected catalog entries resolve to standard repositories with their true download sizes, and downloading such a repository by link fails immediately with a clear message instead of fetching unusable files.
- The web search controls no longer look active when they cannot act. The Settings control now says what it does — set the starting value for new conversations, each conversation keeping its own toggle in the chat header — and the chat toggle is disabled with an explanation when the model cannot use tools (or its tool support is not verified), instead of sitting flippable with no effect.
- Diagnostics lost two false alarms: the Hugging Face advice line and the timeout of a database start that recovered on its own no longer appear in the error list.
Added
- Manual update controls. Settings now has an Update Erudi card: check for updates on demand (even with automatic updates turned off), download, and install with one click — including recovering an update that was downloaded earlier but never got installed.
Removed
- A leftover proprietary EULA file that contradicted the MIT license.
1.1.0
Erudi 1.1.0 — everything since 1.0.0, one week of hardening and one new capability.
New
- Attach documents to a question. Drop, pick or paste
.pdf,.docx,.xlsx,.csv,.txtor.mdfiles — or a whole folder — onto the chat or arena composer, and the model answers from their content. Same parsers as the Knowledge Base, nothing uploaded anywhere; oversized content is truncated with an explicit notice, unreadable files are named instead of silently dropped, and reloaded conversations still show what was attached. - A Diagnostics page behind the bug icon. Errors the app recovered from on its own are counted on a badge, listed on their own page, and one click copies a full report ready to paste into a bug ticket. Quiet when there is nothing to say.
- The app proposes the processor when the GPU cannot deliver. On a machine whose NVIDIA card or driver is below what the bundled CUDA build needs, a modal explains and offers the CPU engine — it never switches on its own.
Fixed
- Tool calling works again on Windows and Linux. The bundled inference server exited silently the moment a model emitted a tool call, which took out agentic knowledge-base search and web search on both llama.cpp backends while plain chat carried on working. The server now tracks upstream llama.cpp directly instead of a frozen fork.
- Windows CUDA now truly needs only a driver. Every previous Windows CUDA build silently lost
cublasLt64_12.dllon its way into the frozen app, so loading a model required the CUDA toolkit to be installed — the opposite of the bundled-runtime promise. The freeze ships all three CUDA runtime DLLs beside the inference server, and the release pipeline verifies their presence on every build. - Deleting the model that is currently loaded unloads it first, so its inference server frees the GPU at once instead of holding it until the idle timer runs out.
- The Welcome dialog states the model size range measured for this machine, the same one the machine readout beside it shows, instead of a hardcoded 1B to 12B.
- Diagnostics rounds the VRAM figure (
15.9 GB, not15.9287109375 GB) on screen, in the copied report and in the prefilled bug form, and the English conversation delete confirmation reads correctly. - Cancelled downloads stop transferring and report their real outcome, and polling a cancelled download's status answers instead of erroring forever.
- Creating a Knowledge Base assistant submits the name exactly as typed — the confirmation button that silently discarded an unconfirmed name is gone.
- Amounts written before the dollar sign (
212,75 $,1 500 $, no-break spaces included) render as text instead of swallowing the sentence into broken inline math. - The inference engine setting appears only where it does something: on a machine running the CUDA engine or pinned back to the processor from it. Elsewhere it no longer offers a disruptive backend restart for a preference the backend ignores.
- Six catalog quants that download cleanly but can never load on Apple silicon (the DeepSeek-VL v1 family and two Nemotron-NAS v1 builds) are declared not runnable up front instead of failing on the first message.
- Download job timestamps are stored as true UTC instants; they previously drifted by the local UTC offset.
- The dev-mode startup wait now survives a cold PostgreSQL start on Windows.
Privacy and security
- A web search no longer contacts Hugging Face. On a machine with no knowledge base it downloaded the knowledge-base tokenizer to size its results, a request the privacy page says only happens when you accept the embedding-model download.
- The connectivity beacon is gone, remote images in model answers are blocked, and automatic update checks can be turned off in Settings. The privacy page documents every request the app makes, with the code behind each.
- The embedded database requires a per-cluster password on every host connection; both inference child servers require a per-spawn API key on every route.
- Every failure in the stack is logged once, at the level of what happened, including the inference children's own words — that is what feeds the Diagnostics page.
Under the hood
- The model catalog snapshots are refreshed weekly by CI.
- The documentation site moved to Zensical and is published from this repository.
- One formatter for the whole repository; Electron 44; Node 20.9 floor; dependency chain current with zero open security alerts.
Full commit history: v1.0.0...v1.1.0
1.0.0
Erudi 1.0.0 is the first stable release: a desktop app that downloads open-source language models, runs them on your own hardware, and lets you chat with them and with your documents — no account, no server to run, no Docker, no terminal.
What you get
- A catalog that knows your machine. Every model card says whether the model fits — memory and the speed you can expect — and the readout gives you a recommended size window. Erudi downloads pre-built MLX and GGUF quantizations; it never converts or quantizes weights on your computer.
- A knowledge base on your documents. Attach
.pdf,.docx,.xlsx,.csv,.txtor.mdfiles to a model and get an assistant that searches them before answering, cites the excerpt it used, and says so when the documents do not cover the question. - Inference that fits the hardware. MLX on Apple Silicon, llama.cpp with CUDA on NVIDIA GPUs, llama.cpp on CPU otherwise — picked automatically at launch. The inference engine ships inside the installer.
- Reasoning and tool calls you can see. Thinking models stream their reasoning into a strip above the answer; when a model searches your documents or the web (web search is off by default), the call and its result are shown there, never mixed into the answer.
- Conversations kept on your machine, restored across restarts, summarized as they grow, stored in an embedded database in your user folder.
- Fully offline once a model is downloaded.
- Per-model generation defaults, fetched from the model publisher after a download, so each model answers with the settings it was tuned for.
- Four interface languages: English, French, Spanish, Chinese.
Platforms
| Installer | For | Notes |
|---|---|---|
Erudi-1.0.0-arm64.dmg |
macOS 14+, Apple Silicon | Signed and notarized |
Erudi-Setup-1.0.0.exe |
Windows, no NVIDIA GPU | Unsigned: expect an unknown-publisher warning |
Erudi-Setup-1.0.0-cuda.exe |
Windows with an NVIDIA GPU | Unsigned; carries the CUDA runtime, only a driver is required |
Erudi-1.0.0.AppImage |
Linux, no NVIDIA GPU | Builds and boots in CI; not yet validated on real hardware |
Erudi-1.0.0-cuda.AppImage |
Linux with an NVIDIA GPU | Same status as the Linux CPU build |
The app updates itself from the GitHub releases of this repository, and only from there. Automatic updates can be turned off in newer versions; in 1.0.0 the update check runs at launch and every 4 hours.
Privacy
Prompts, answers and documents are processed by a model running in a child process on this computer and stored locally. There is no account, no telemetry and no crash reporter. What the app requests from the network, when, and the code behind it are documented on the privacy page: https://erudi-app.github.io/erudi/privacy/ — that page tracks the current development state, which is ahead of this build; 1.1.0 will carry the network and local-hardening work merged since this tag.
Documentation
- Site: https://erudi-app.github.io/erudi/
- Hardware guide (GPU generations, drivers): https://erudi-app.github.io/erudi/guides/hardware/
- Contributing: https://github.com/erudi-app/erudi/blob/main/CONTRIBUTING.md