Jan and GPT4All are both free, offline-first desktop chat apps that run local GGUF models and can also point at a hosted API, but only one of them is still shipping: Jan's repository took code on September 18, 2026, while GPT4All's newest release is v3.10.0 from February 25, 2025 and its only commit since is a CI chore. That does not make GPT4All dead — it is not archived, it still downloads, and its retrieval behaviour is better documented than Jan's. It makes the choice a task question, not a popularity one.
Two name collisions to clear first, because both are easy to publish by accident. Jan, at jan.ai, is not Janitor AI — different product, different audience, no relation. And the "$20/Month" banner on nomic.ai is not a GPT4All price: it belongs to the Nomic Platform, an architecture-and-construction agent product with drawing review and code-compliance features. GPT4All itself is MIT licensed and free.
Pick by task, not by star count
GPT4All carries 77,394 stars against Jan's 44,551 (GitHub API, September 19, 2026). It is the more famous name and the less current codebase. Here is the decision on the axes that actually move:
| Decision axis | Jan | GPT4All | Who wins |
|---|---|---|---|
| Everyday chat workflow | Projects, assistants, message branching, native web search since v0.8.4 | Chats, model/character settings, a JavaScript code interpreter | Jan, on breadth |
| Documents | PDF, DOCX, XLSX, PPTX, Markdown and code indexed per project; retrieval internals undocumented | Folder index with on-device embeddings; docx/pdf/txt/md/rst by default in the source, 512-character snippets, 3 per prompt by default; .xlsx attachable to a message | Split — see below |
| Tools and execution model | MCP host; you approve each tool call inline, with the arguments shown | No MCP in the docs or in a code search of the repository; the code interpreter is the only tool | Jan |
| Hosted API protocol | OpenAI-compatible or Anthropic-compatible; model discovery; fallback keys | OpenAI chat-completions only; model id typed by hand; one key | Jan |
| Cost path | $0 app; local models free per request, or your provider's per-token bill | $0 app; identical split | Tie — neither vendor takes a cut |
| Migration cost | Both are free to install side by side and both read plain GGUF files, so downloaded weights carry over. Neither documents an import path for the other's chat history, projects or LocalDocs collections. | Low, both ways | |
The short version: choose Jan unless something specific pins you to GPT4All — an Intel Mac, which Jan rules out explicitly, a locked software inventory, or a preference for a codebase that has stopped changing under you. Choose GPT4All when a frozen, documented folder-indexer is the feature.
Offline chat and the document workflow
This is the axis where the two genuinely separate, and it is not the one the listicles compare.
GPT4All LocalDocs indexes a folder using Nomic's free on-device embedding models and lets you click Sources under a response to see which files were referenced. Its settings defaults are specific and worth knowing before you point it at a document folder: snippet size is 512 characters and the maximum snippets per prompt is 3. Both are settings you can raise, and the docs warn that raising them slows generation.
On which file types get indexed, GPT4All's two sources disagree and the published one is the older: the settings page lists .txt, .pdf, .md and .rst, while the default in the released source — localdocs/fileExtensions in mysettings.cpp on main — is docx, pdf, txt, md, rst. LocalDocs gained .docx support in v3.4.0, so the docs page appears not to have been updated. Chat attachments are a separate path with its own list: the attach dialog in ChatView.qml filters for *.txt *.md *.rst *.xlsx — Excel attachments arrived in v3.4.0 and text, markdown and rst in v3.5.0-rc1, both per the changelog. A PDF is not in that filter, so it reaches the model through a LocalDocs collection or not at all.
Jan Projects take a wider set: "PDFs, Markdown, Office documents (DOCX, XLSX, PPTX), code files, and more", chunked and indexed for retrieval across every conversation in that project, with a progress bar and a chunk count per file. But Jan's documentation names no embedding model, no snippet size and no retrieval cap. Its privacy note on the same page says all files are processed locally on your machine, and that if you use a cloud provider, "files are sent to that provider's API as part of the request". It does not say which of those describes an indexed project file as opposed to a chat attachment, or what a gateway-backed custom provider counts as — so treat that as undocumented rather than settled.
One boundary that applies to both: the embedding step is not something Kunavo serves. Kunavo supplies the chat model. GPT4All computes its embeddings on your own device by default, or against Nomic's own API if you switch that on; Jan's engine docs list that step as available on llama.cpp and unavailable on MLX, and name no model for it. If you want the retrieval side explained end to end, RAG implementation covers the pieces.
Models, hardware and what each app will actually run
Jan runs local models on llama.cpp or MLX, the latter Apple-Silicon-only on macOS 14+; it downloads GGUF models from its own Hub and can import a GGUF file already on disk, linking it in place rather than copying it. GPT4All ships a curated catalogue that the app fetches at models3.json — 32 entries, the newest being the January 2025 DeepSeek-R1 distills, with no Qwen3, Gemma 3 or Llama 4 (checked September 19, 2026). Its Explore Models page also searches Hugging Face for GGUF files, so the catalogue is not a hard limit — but the curated shelf is a fair proxy for how long ago the project stopped being tended.
| Requirement | Jan Desktop | GPT4All (minimum) |
|---|---|---|
| macOS | 13.6 or higher; Intel Macs not supported | Monterey 12.6 per the README; M1 in the Apple CPU and GPU rows of the requirements table, with no Intel entry — see below |
| Windows | 10 or higher; AVX2 required (Intel Haswell 2013+, AMD Excavator 2015+) | Windows 10; an ARM installer ships, but sources disagree — see below |
| Linux | Supported; llama.cpp engine | Ubuntu 22.04 LTS or compatible; x86-64 only, no ARM |
| RAM | macOS: 8GB ≈ up to 3B models, 16GB ≈ up to 7B, 32GB ≈ up to 13B. Windows: 8GB minimum, 16GB recommended | 16GB, or 8GB for 3B models |
| GPU | 6GB VRAM minimum on Windows for NVIDIA, AMD or Intel Arc | Anything Direct3D 11/12 or OpenGL 2.1 capable |
| Disk | 10GB+ free | Not stated in the minimum table |
Jan figures from its Mac and Windows install pages; GPT4All figures from its system requirements table and README. All read September 19, 2026.
GPT4All contradicts itself on two hardware questions, and neither has a clean answer. On Intel Macs, its README says the macOS build "requires Monterey 12.6 or newer" and gives best results with Apple Silicon, which reads as though Intel works; its system-requirements table puts M1 in the Apple CPU and GPU rows and names no Intel processor anywhere. On Windows-on-ARM, the README links a win64-arm installer and says that build "supports Qualcomm Snapdragon and Microsoft SQ1/SQ2 processors", while the requirements table the README itself points to says Windows and Linux PCs with ARM CPUs are not supported. The v3.10.0 release does ship a win64-arm installer among its assets; the README link to it was committed ten minutes after that tag, on February 25, 2025, and the requirements table has had no commit since September 13, 2024. So the README is the newer statement — but this page does not resolve either contradiction for you. On an Intel Mac, GPT4All is the only one of the two worth trying at all, because Jan rules Intel out explicitly; on any ARM machine, install and verify before you commit.
One more gap worth naming: nomic.ai/gpt4all serves four download buttons with no version number, no changelog and no system requirements, and the four installer stubs on gpt4all.io all carry a Last-Modified date of February 4, 2025 — which is before the v3.10.0 tag. They are online installers, so they most likely fetch a current build at install time, but I could not locate the update repository they pull from. Do not assume a specific version from the download page; check About after installing.
Local API server, cloud access and what leaves the machine
Both apps expose an OpenAI-compatible server so other tools can talk to whatever model they have loaded, and the defaults differ in ways that matter for a shared machine.
| Local server | Jan | GPT4All |
|---|---|---|
| Default state | Started from Settings > Local API Server | Off by default |
| Default address | 127.0.0.1:1337, host configurable to 0.0.0.0 | Port 4891, localhost only, HTTP only |
| Auth | Optional API key; empty disables auth | No key documented; the docs' own examples send none |
| Endpoints | GET /v1/models, /v1/chat/completions, plus an Anthropic-shaped /v1/messages; /v1/responses documented as "coming soon" | /v1/models, /v1/models/<name>, /v1/completions, /v1/chat/completions |
| Extras | Configurable API prefix, trusted hosts, request timeout, CORS; server-side MCP tool execution off by default | Configurable port |
From Jan's Local API Server and API preference pages and GPT4All's API server documentation, September 19, 2026. Jan's server is documented as llama.cpp-powered with local-model examples throughout, and its docs do not say one way or the other whether a remote custom-provider model is reachable through port 1337 — undocumented, not ruled out, so verify it yourself before you build on it.
On privacy, Jan's Mac install page states that models, threads, settings and logs live under ~/Library/Application Support/Jan/data and that nothing is sent to the cloud — but its file-upload page is equally clear that with a cloud provider, files are sent to that provider's API as part of the request. Both apps are offline-capable, not offline-only; the moment you configure a remote provider, the usual data-handling questions apply to whoever is on the other end.
Pointing either app at one hosted key
The local-model path costs nothing per request but caps you at what your hardware fits. The alternative in both apps is a base URL and a key. This is where the two diverge most.
| Custom provider | Jan | GPT4All |
|---|---|---|
| Where | Settings > Model Providers > Add Provider > Add Custom Provider | Add Model > Remote Providers > the Custom card |
| Wire formats | OpenAI-compatible or Anthropic-compatible | OpenAI chat-completions only |
| Fields | Provider name, Base URL, API key (a placeholder is required even for keyless servers) | API Key, Base Url, Model Name — all three must be non-empty to install |
| Model discovery | Fetches {base_url}/models on save; manual entry if absent | Never runs for the Custom card; you type the id and nothing validates it |
| Capability flags | Not auto-detected — set tools, vision and audio per model by hand | Nothing to flag; no tools or vision pipeline for remote models |
| Key fallbacks | Numbered keys, retried only on 401, 403 or 429, with a Test keys button | One key, no test |
| Samplers | Full set exposed for custom providers; hidden for built-in cloud providers | Only temperature and top_p reach a remote model; stream is hard-coded on and max_tokens is deliberately omitted |
Jan's side comes from its Custom Endpoints page, which names gateways and proxies as a supported case outright. GPT4All's side was read from the released source on main: the four provider cards and the OpenAI whitelist live in AddRemoteModelView.qml, the three field labels in RemoteModelCard.qml, the URL construction in chatllm.cpp, and the hard-coded "stream": true plus Authorization: Bearer header in chatapi.cpp. None of it was runtime-tested.
The GPT4All fact nobody writes down: its built-in OpenAI card is a hard-coded whitelist, commented // last updated 2025-02-24, containing only gpt-3.5-turbo, gpt-3.5-turbo-16k, gpt-4, gpt-4-32k, gpt-4-turbo and gpt-4o. Even with a valid first-party OpenAI key, that card cannot offer a model OpenAI has shipped since. The Groq and Mistral cards carry frozen lists with the same comment date — though Mistral's includes -latest aliases, which still resolve to whatever Mistral serves today, so "frozen list" does not mean "frozen model" on that one. For anything newer than gpt-4o on an OpenAI-shaped key, the Custom card is the route — directly or through a gateway.
And the Jan gotcha that generates the most confusion: because Jan cannot capability-detect a custom provider, a model you add manually arrives with no tools capability ticked, and MCP requires a model that has it. Tick it on the model, not just on the provider.
For Kunavo the values are the same in both apps — base URL https://api.kunavo.com/v1, a Bearer key beginning sk-kn-. In Jan, choose the OpenAI-compatible format and let it populate the model list; in GPT4All, type the model id exactly, for example claude-sonnet-4-6, since GPT4All appends /chat/completions to whatever base you give it and never checks the id. Jan's Anthropic-compatible format can also reach an Anthropic-shaped endpoint, but Jan's docs say only to "use the base your gateway documents" and their own example omits /v1 — this page did not test which base string Jan wants for that path, so use the OpenAI one unless you are prepared to experiment.
# Both apps need the same two things: a base URL that ends in /v1 and a
# Bearer key. This is the check to run BEFORE you type either into an app.
curl -s https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."
# Jan calls this exact path to populate its model list.
# GPT4All never calls it for a Custom provider — you type the id by hand.A worked cost estimate for the hosted lane
These are illustrative token arithmetic, not measured task costs and not a bill ceiling. Assume a document-flavoured session that sends 30,000 uncached input tokens — system prompt, retrieved snippets and a running conversation — and receives 2,000 output tokens, repeated 50 times in a month. Rates are live Kunavo catalog prices per million tokens.
| Model | Input / output per 1M | Estimate per session | Estimate, 50 sessions |
|---|---|---|---|
| Claude Haiku 4.5 | $0.40 / $2.00 | $0.0160 | $0.80 |
| Gemini 3.8 Flash | $0.525 / $2.625 | $0.0210 | $1.05 |
| GPT-5.6 Terra | $0.70 / $4.20 | $0.0294 | $1.47 |
| Claude Sonnet 4.6 | $1.20 / $6.00 | $0.0480 | $2.40 |
Notice what the retrieval settings do to that arithmetic. GPT4All defaults to at most 3 snippets of 512 characters — roughly 400 tokens on the common four-characters-per-token approximation — so at those defaults a LocalDocs prompt on a hosted key costs barely more than the bare chat around it. Raise either setting and that grows in proportion. Jan publishes no cap at all, so the project-file share of a prompt is whatever the indexer decides. If your bill moves unexpectedly after switching from GPT4All to Jan, that asymmetry is the first place to look.
Scale these by your own usage before treating them as a budget, and note that the local-model path in either app has no per-request charge at all — hardware and electricity instead. Kunavo's catalog amount is a billing floor rather than a cap: when the upstream reports its charge, the bill is the greater of catalog cost and upstream cost times the applicable markup. Cache charges and external tools sit outside this example. The minimum top-up is $10 in prepaid credit, a funding minimum rather than a task fee or a subscription — see billing details.
Install, maintenance and the licence boundary
| Signal | Jan | GPT4All |
|---|---|---|
| Repository | janhq/jan, created August 2023, not archived | nomic-ai/gpt4all, not archived, not disabled |
| Last code pushed | September 18, 2026 | May 27, 2025 — a CI chore; the last feature commits are February 2025 |
| Latest release | v0.8.4, July 2026 | v3.10.0, February 25, 2025 |
| 2026 cadence | 0.7.6 Jan, 0.7.7 Feb, 0.7.8 Mar, 0.7.9 Mar, 0.8.0 May, 0.8.1 May, 0.8.2 Jun, 0.8.3 Jun, 0.8.4 Jul | No release in 2026 |
| Stars / open issues | 44,551 / 531 | 77,394 / 771 |
| Python package | Not the distribution channel | gpt4all 2.8.2 on PyPI, August 14, 2024 |
| Licence | Apache 2.0 with an attribution request (GitHub reports it as Other) | MIT |
All rows read September 19, 2026 from the GitHub and PyPI APIs and from each project's releases list. Two dating caveats: jan.ai's changelog dates v0.8.4 to July 21, 2026 while the GitHub release is stamped July 23, hence "July 2026" above; and GPT4All's own changelog dates v3.10.0 to February 24 against the release tag's February 25.
Two ownership details, stated carefully because the evidence only supports so much. Jan is developed in the open by the Jan team under the GitHub org janhq, whose profile now reads simply "Jan"; the older menloresearch/jan URL returns an HTTP 301 to it. Jan's LICENSE file still credits Menlo Research, while the separate menloresearch org now describes a humanoid-robotics product. No dated announcement explaining that change exists anywhere I could find, so this page does not claim a spin-out or a sale — just what the redirect and the two profiles say. GPT4All's maintainer has visibly changed business: nomic.ai's homepage headline is now about design and construction, and its product pages are an agent platform for drawing review and code compliance. The GPT4All page survives as a leftover. Nomic has issued no statement about GPT4All's status, and an issue titled "Is GPT4all dead?" is still open and unresolved.
One user-protection note that belongs on any GPT4All page: nomic.ai ships no mobile build. Its GPT4All page offers four desktop installers and nothing else, and the GitHub releases carry desktop artifacts only. A 2024 issue on the repository, opened December 20, 2024 and closed as not planned, reports a Google Play package named com.principia_tech.ai.gpt4all that the reporter says has nothing to do with the project and gates conversation behind ads. Download only from nomic.ai or the GitHub releases. Do not confuse the project with the unrelated "GPT4Free" either.
Setting up the hosted lane
Kunavo has not runtime-tested either app against its endpoint, and neither has a Kunavo setup page — everything above was read from official documentation and, for GPT4All, from released source. What is verifiable is the shape both apps need: one OpenAI-shaped base URL ending in /v1, one Bearer key, and a working GET /v1/models so Jan can populate its list. Run the smoke test above first, keep a working route available while you try it, then run one bounded task and read the charge your account actually recorded for it.
Create a Kunavo account when you are ready to fund a key. For background, OpenAI-compatible API explains the wire format both apps speak, best LLM gateway covers how to compare the hosted options, and if you are still choosing a desktop client, AnythingLLM vs Open WebUI compares two document-focused alternatives with the same free-app, metered-API split.
FAQ
Which is better, Jan or GPT4All?
They answer different questions, and star counts point the wrong way here: GPT4All has 77,394 stars against Jan's 44,551 (GitHub API, September 19, 2026), while Jan is the one still shipping. Pick Jan if you want a local chat app that is still gaining features, handles PDFs and Office documents in a project workspace, acts as an MCP host with per-call tool approval, and can be pointed at either an OpenAI-compatible or an Anthropic-compatible endpoint. Pick GPT4All if you want a simple, stable folder-indexing chatbot whose retrieval behaviour is fully documented, you are on an Intel Mac, which Jan rules out explicitly, and you can live with a codebase whose last release was February 2025.
Is GPT4All still maintained?
It is not archived and it still downloads, but the cadence evidence says dormant. The nomic-ai/gpt4all repository reports archived=false with 771 open issues; its newest release is v3.10.0, published February 25, 2025, and the only commit to main since then is a CI chore from May 27, 2025. The gpt4all package on PyPI is at 2.8.2 from August 14, 2024. The README's own 'read about what's new in our blog' link returns 404. The curated in-app catalogue stops at the January 2025 DeepSeek-R1 distills. Nomic has never published a statement that GPT4All is discontinued or in maintenance mode, so treat all of that as dates, not as an announcement. All checked September 19, 2026.
Is Jan free, and does it have a paid plan?
Jan Desktop costs $0. jan.ai's homepage describes it as free and open source, and both jan.ai/pricing and www.jan.ai/pricing return no pricing page — the www URL is a 404 (checked September 19, 2026). The LICENSE file is Apache 2.0 with an added line requesting attribution in user-facing documentation and materials, and GitHub's API reports the licence as Other rather than Apache-2.0. What you actually pay is either nothing, if you run local GGUF models on your own hardware, or the per-token API bill at whichever provider or gateway you wire into a cloud or custom provider. There is no Jan-side markup on that.
Does GPT4All cost $20 a month?
No. GPT4All is MIT licensed and free, and nothing in the app or its documentation is behind a paywall. The $20-per-month figure comes from a site-wide banner on nomic.ai that also appears on the leftover GPT4All product page; it belongs to the Nomic Platform, which is an architecture, engineering and construction agent product with drawing review and code-compliance features. Those two things are unrelated. The only paid-adjacent surface inside GPT4All is the optional 'Use Nomic Embed API' toggle in LocalDocs settings, which is off by default and needs a separate Nomic key; the default retrieval path runs on your own device at no charge. Kunavo serves no embedding model, so that step is never a Kunavo charge either.
Can Jan and GPT4All use an API key from a gateway instead of a local model?
Both can, and the difference is large. Jan's custom-provider dialog asks for an API format (OpenAI-compatible or Anthropic-compatible), a base URL and a key, then tries to fetch models from {base_url}/models when you save; it also supports numbered fallback keys that it retries on HTTP 401, 403 or 429, a 'Test keys' button, and full sampler controls that its built-in cloud providers hide. GPT4All's Custom card asks for API Key, Base Url and a hand-typed Model Name, speaks OpenAI chat-completions only, never calls /models for a custom provider, has no fallback keys and forces streaming on. Neither route has a plan gate. Both were read from official documentation and released source on September 19, 2026, not from a live session.
Which one is better for PDFs and Office documents?
Jan, on format coverage; GPT4All, on documented behaviour. Jan Projects chunk and index uploaded files for retrieval across every conversation in that project and list PDFs, Markdown, Office documents (DOCX, XLSX, PPTX) and code files among the supported formats, but Jan's docs name no embedding model, no snippet size and no retrieval cap. GPT4All LocalDocs indexes a folder using on-device Nomic embeddings and shows which files were referenced, and it publishes its retrieval defaults: 512-character snippets, at most 3 per prompt, both adjustable. Its two sources disagree on which file types are indexed by default — the settings page says .txt, .pdf, .md and .rst, while the default in the released source is docx, pdf, txt, md and rst. Separately, GPT4All's message attach dialog filters for .txt, .md, .rst and .xlsx, so a spreadsheet can be attached there too; PPTX and code files are the formats only Jan's list names. Both read September 19, 2026 from official documentation and released source, not from a live session.
Does either app support MCP servers?
Jan does; GPT4All shows no sign of MCP support in its documentation or in a code search of its repository. Jan describes itself as an MCP host, requires the model to support tool calling, and makes you approve each tool call individually in an inline panel that shows the exact arguments before you accept or deny, with an 'Allow All MCP Tool Permissions' setting available if you want to turn that off. GPT4All's desktop documentation has no MCP, tools or agents page at all; its one agentic feature is a built-in JavaScript code interpreter added in v3.6.0 on December 19, 2024. If you plan to run tools over a hosted key, that difference decides the choice on its own.
Checked September 19, 2026: both GitHub repository APIs, both releases lists, the gpt4all PyPI record, the GPT4All curated model catalogue and installer headers, the nomic.ai blog-tag link, the menloresearch/jan redirect, jan.ai's changelog and pricing URLs, Jan's install, file-upload, MCP, API-server and custom-endpoint docs, GPT4All's LocalDocs, settings and API-server docs, its README, changelog, models page and system-requirements table, the two issue threads linked above, the commit history of the README and the requirements table, and the GPT4All source on main — the remote-provider views, ChatView.qml's attach filter and the localdocs/fileExtensions default in mysettings.cpp. Not checked: any runtime session of either app against Kunavo's endpoint, the version the GPT4All online installer delivers today, and whether a Jan custom-provider model is reachable through Jan's own local server. Kunavo token rates come from the live catalog; every dollar example here is illustrative token arithmetic rather than a measured task cost.