Skip to main content

DevoxxGenie 1.18.0: A Routers Tab, Generic Local Providers and IntelliJ IDEA 2026.3

ยท 7 min read
Stephan Janssen
Creator of DevoxxGenie

DevoxxGenie 1.18.0 is a minor release about providers. LLM routers now run on one generic provider with their own Routers settings tab, and four new routers join OpenRouter. Local OpenAI-compatible servers get the same treatment: Nativ, Rapid-MLX, GPT4All, llama.cpp and Jan now share one local provider that reads each server's real models and context window. If you're on IntelliJ IDEA 2026.3, this is also the release that makes the settings pages load again.

๐Ÿ”€ Routers get their own tabโ€‹

LLM routers are OpenAI-compatible gateways that give you many models from many vendors behind one API key. Until now each router was its own provider with its own classes. In 1.18.0 they all run on one generic router provider, and the LLM settings have a new tab layout:

Local | Cloud Direct | Routers | Sharding | Custom OpenAI

The Routers tab in the LLM settings

The Routers tab supports five routers:

RouterNotes
OpenRouterMoved onto the generic provider
OrcaRouterNew. Its catalog also lists image, video, embedding and speech models, so DevoxxGenie keeps only entries that support chat_completions
UberLLMNew. Display names, context windows and prices come from its /models catalog; only text-output models are kept
RequestyNew, contributed by @Thibaultjaigu
DemonRouteNew

How the tab behaves:

  • A privacy warning at the top. A router forwards your prompts and code to other providers, so you should know that before you turn one on.
  • A checkbox per router decides whether it appears in the chat's provider list. New routers are off by default.
  • No affiliate, referral or attribution data is sent.
  • An editable base URL per router, pre-filled with the default. Leave it blank to use the default, or point it at an alternative endpoint such as Requesty's EU router. Changing the URL refreshes that router's model list.
  • Nothing is sent unless you opt in. A disabled router or one without an API key makes no requests, and a failed catalog request backs off for 60 seconds instead of retrying on every refresh.
  • Your API key stays put. A key is only written on Apply when you changed it, so an empty keychain read can no longer delete it.

A note on testing: OrcaRouter's model list was checked against the live service, but its chat requests were not. Requesty and DemonRoute were not tested against the live services. If you use one of them, please open an issue if something doesn't work.

For contributors: adding a typical OpenAI-compatible router now takes one enum line and one RouterDefinition in RouterRegistry.

๐Ÿ–ฅ๏ธ One generic local provider for OpenAI-compatible serversโ€‹

The same idea now applies to local servers. Nativ, Rapid-MLX, GPT4All, llama.cpp and Jan share one OpenAI-compatible local provider, which reuses the router catalog parser. That gives each of them the real list of models the server is running and, where the server reports it, the real context window.

The Local tab in the LLM settings

What that changes per server:

  • Rapid-MLX (new). A fast local inference server for Apple Silicon. It's off by default, runs at http://localhost:8000/v1/, and its context window comes from max_model_len. Thanks to @raullenchai for the original provider and for Rapid-MLX itself.
  • llama.cpp. It used to show a hard-coded test-model with an assumed 8k context. It now lists the models llama-server actually serves, with the context window read from meta.n_ctx (or meta.n_ctx_train). It also gains streaming chat, "Add Project" to context, and the "is not running" notice. The provider is now shown as llama.cpp instead of LLaMA.c++; settings saved under the old name still load.
  • GPT4All. Its models now have a context window (8,000 tokens by default, with an optional fallback setting); before they had none. New users start on Ollama when it's available instead of landing on GPT4All.
  • Jan. The compact-JSON request workaround for older Jan versions moves with it as a definition flag. Checked against Jan 0.8.8.
  • Nativ. Moved onto the generic provider. Its links now point to its new website; the download button on the Local tab used to open a dead page.

Saved GPT4All, Nativ and llama.cpp settings migrate once on upgrade, keeping a custom URL and a disabled state.

A related fix: local model servers now always show the model dropdown, even with a single model. llama.cpp often serves exactly one model, and the dropdown used to disappear. Cloud providers and routers still hide a single choice.

๐Ÿงฉ Exo moves to a Sharding tabโ€‹

Exo, which spreads one model across several machines, moves to the new Sharding tab. The tab also lists planned distributed-inference options as "Coming soon".

๐Ÿ› ๏ธ IntelliJ IDEA 2026.3 supportโ€‹

On IntelliJ IDEA 2026.3 the plugin was first disabled as incompatible, and once that was fixed, the DevoxxGenie settings pages stayed on "Loading" with ClassNotFoundException: org.jdesktop.swingx.JXTitledSeparator. Two things changed in 2026.3:

  • The platform no longer gives plugins SwingX. The settings pages now use the platform's own TitledSeparator, and a test keeps SwingX out of the code base.
  • The VCS check-in API moved into the bundled Version Control plugin. Commit message automation is now registered through an optional vcs-features.xml.

The plugin now declares support for build 263.*, and the Plugin Verifier checks 2026.3 on every build.

๐Ÿงฏ Full error text in the chat, with Copyโ€‹

Errors longer than 300 characters were cut off before they reached the chat, which often removed the part you needed. The error card now keeps the full text: it shortens long errors on screen with a Show full error / Show less link, the text is selectable, and a Copy button next to Retry copies the whole error, ready to paste into an issue.

๐Ÿ› Other fixesโ€‹

  • Agent file tools reach every module in multi-module projects. When modules sat side by side with no root module, the file tools only saw the first one, and write_file could write into the wrong module. File and semantic tools now share the opened folder as their root, and file tools accept absolute paths inside the project.
  • No more blank chat after a thinking-only reply. A streamed reply with no visible text (a reasoning model that returned only reasoning) made the chat fail with Key ... was already used and stay blank, hiding later prompts too.
  • Backlog milestones survive a restart. Milestones added through backlog_milestone_add were written to config.yml but dropped on the next read.
  • Spec task parsing. Folded and literal block scalar list items (- >-, - |) are read as their text instead of the >- marker, so a task's references reach the model's <TaskSpec> block. Text after a blank line inside a block scalar is no longer dropped, and a dependency listed twice in one task no longer causes a false "circular dependency" error that refused the whole agent loop run.
  • UberLLM's key button opens its API key page instead of the sign-up page.

๐Ÿ“ฆ Dependenciesโ€‹

  • langchain4j 1.22.0 โ†’ 1.23.0 (beta modules 1.22.0-beta32 โ†’ 1.23.0-beta33)
  • jsoup 1.23.2 โ†’ 1.24.1, netty 4.2.19 โ†’ 4.2.20, AWS SDK BOM 2.57.8 โ†’ 2.57.11
  • Gradle wrapper 9.8.2 โ†’ 9.9.0

๐Ÿ“š Documentationโ€‹

The docs now cover the Routers and Sharding tabs, OrcaRouter, UberLLM, Requesty, DemonRoute and Rapid-MLX, with a screenshot of each settings tab. See Routers, Local Models and Settings. LLaMA.c++ is renamed to llama.cpp throughout.

๐Ÿ™ Thank you, contributorsโ€‹

Getting itโ€‹

DevoxxGenie 1.18.0 is available from the JetBrains Marketplace; update it from Settings โ†’ Plugins. The full list of changes is in the changelog and the GitHub release.