从源码构建需 Node.js ≥20、Yarn ≥4.5.3、Make ≥3.81 和 Rust(Tauri),macOS Apple Silicon 还需单独下载 MetalToolchain;Windows 上必须在 Git Bash 里跑 make,cmd.exe 不行,且需装 VS2022 Build Tools、LLVM、Ninja、CMake;模型需自行从 HuggingFace 下载,本地 API 默认占用 1337 端口。
git clone https://github.com/janhq/jan
cd jan
make devmacOS 需 13.6+,8GB 内存跑 3B 模型、16GB 跑 7B、32GB 跑 13B;Windows 10+ 支持 NVIDIA/AMD/Intel Arc GPU 加速;Linux 多数发行版可用并支持 GPU 加速。README 未给出具体显存要求。
开源版 ChatGPT 桌面替代品,在本地离线跑大模型,数据不出本机
在本地电脑上离线运行大模型的桌面客户端,是 ChatGPT 的开源替代品,无需联网即可对话,数据不出本机。
核心能力
- 从 HuggingFace 下载并本地运行 Llama、Gemma、Qwen 等模型
- 可接入 OpenAI、Anthropic、Mistral、Groq 等云端模型
- 在 localhost:1337 提供 OpenAI 兼容的本地 API 服务
- 支持 MCP 协议,为助手扩展智能体能力
- 可创建面向特定任务的定制助手
容易踩的坑
- v0.8.80.8.8最新正式版2026-10-28 · 2026-10-28 03:31 UTC
Jan v0.8.8: security fixes, llama.cpp 0.7.0, and Trusted Hosts for the local API
A security update to v0.8.7. We recommend updating. Your data and settings carry over; a few behaviours change, listed under What you might notice.
Security
- Links in chat open in your browser. Links in model replies, tool results, model cards and release notes now always open in your system browser, never inside Jan's window. Links that aren't web or email links are shown as plain text.
- The local API server checks where browser requests come from. A web page can only call it if its origin is trusted: the same machine, Jan itself, or a host you list in Trusted Hosts. Requests without a browser origin (SDKs, scripts, curl, Claude Code) work as before.
- Server-side tool execution stays opt-in for every endpoint. Requests to the local API run MCP tools only when Settings > Local API Server allows server-side tool execution.
- Paths are checked before Jan reads or writes them. Thread and assistant ids, and the file operations extensions use, stay inside Jan's data folder.
- The Claude Code integration writes your shell profile safely. Values are quoted, unusual variable names are refused, and Jan's lines are kept in one marked block that Reset removes completely without touching your own lines.
- The agent's file tools no longer follow a link out of their workspace, and folders such as your home, credentials and startup folders can't be attached as writable.
- Windows: Jan runs system tools from the Windows system folder, and sign-in links are opened without going through
cmd. - MCP sign-in only uses web addresses (
http/https) for its endpoints.
What you might notice
- Trusted Hosts for browser-based clients. A web app on another machine (for example Open WebUI's direct connection) or a browser extension calling Jan's API needs its host added to Settings > Local API Server > Trusted Hosts. Entries can include a scheme, so
app://obsidian.mdworks for Obsidian plugins (thanks to @SnowingFox, #8608). Pages without a normal origin (local files, sandboxed frames) can be allowed by listingfile://ornull. - The CORS switch now takes effect, and it starts on after updating. In earlier versions it was shown but had no effect.
- Custom environment variables for Claude Code: keys that change how programs are found (
PATH,PATHEXT,SystemRoot,ComSpec,LD_*,DYLD_*,JAN_*and the GPU runtime paths Jan uses) are refused with a message. Other variables, includingNODE_OPTIONS, save as before. - Moving the data folder to a system folder, your home folder itself or a drive root (for example
D:\) is refused; choose a folder such asD:\Jan. - MCP servers whose sign-in endpoints aren't web addresses now show a sign-in error.
New
llama.cpp engine 0.7.0.
The bundled engine moves from 0.5.0 to 0.7.0 (b11669). New per-model settings: an MoE expert GPU cache for mixture-of-experts models, Probabilistic draft sampling and Draft batch size for speculative decoding. They default to the engine's own defaults, so nothing changes unless you set them. Saved prompt caches from the previous engine are discarded once and rebuilt. (#9399)
Fixes
Local models failed to load on Windows when the user name had non-English characters (for example Cyrillic). (#9418)
With an HTTP proxy configured, documents with "Use embeddings" failed, because Jan's requests to its own engine went through the proxy. They now go direct; remote providers still use the proxy. (#9353)
An attachment was sent again on every turn, adding a copy per message and defeating the prompt cache. It's now included once per request. Thanks to [@yaodong-shen](htt
- v0.8.70.8.72026-10-20 · 2026-10-20 04:33 UTC
查看更新说明
Jan v0.8.7: shell switch, image size limit, and fixes
A minor update to v0.8.6. Your data and settings carry over; one MCP clean-up runs on first launch (below).
New
- Turn the shell tool off in chat. The chat input's tool menu has a Shell switch. Off, the model is not given the shell tool; web search, fetch and your MCP tools keep working. On by default, and shown when the shell can run sandboxed and the model supports tools (#9222).
- A separate size limit for images. Settings > Attachments > Max Image Size (MB): default 10, range 1 to 100 (#9312).
- Built-in subagents for the Jan agent: explore (read-only by default), research, review and debug, each with its own model (#9261).
Fixes
- A thread no longer leaves its project when you attach a document (#9197, thanks @enkynakamura).
- Pasted code with
@decoratorsis sent as typed; only an@followed by a real file or folder is a reference (#9291). - Stop ends the whole turn, including a tool that is running or waiting for approval (#9241).
- A web page read by the built-in fetch tool is kept within the model's context window (#9283).
- Chat with a local model no longer fails behind a proxy or VPN: requests to Jan's own engine always go direct (#9182).
- Windows: a
^in a command name (cm^drunscmd) now always asks for approval (#9315). - macOS explains why Jan asks for Local Network access (#9318).
- The sidebar's Jan label is back on Windows and Linux (#9242).
Migration
- On first launch, the hosted Exa MCP server that v0.8.3 added to the default list is removed. Servers you added, and an Exa entry you configured with your own key, are kept (#9010).
Jan agent and CLI
- A sandboxed shell command can ask to run outside the sandbox, with your approval each time (#9239).
- A tool call outside a run's
allowed_toolsis refused (#9254); a subagent's permission prompt is denied when nobody can answer it (#9259). - Windows: edits match CRLF files, and unusable file names such as
con.txtare refused (#9262, #9263). jan cli mcp addworks on a fresh install (#9257); an MCP server that never answers is given up on (#9281).- Compaction summaries use your small model when one is set (#9252); the terminal UI gains search and clearer subagent and background-command rows.
Also
- On NVIDIA GPUs, the engine logs the driver version at start, and a crash caused by a driver too old for the engine says to update the driver.
- A model download stopped by a network error says why in more cases (#9294), and a failed model-list fetch records the address it could not reach in the app log (#9292).
Known issues
- With Shell off, a model that calls the shell anyway ends its reply instead of continuing without it (#9319).
- Auto compact needs Max Context Tokens set for remote models; Jan does not detect a remote model's context window yet (#9317).
- Local models do not run on Intel Macs, as in v0.8.5.
Full
- v0.8.60.8.62026-10-09 · 2026-10-09 09:03 UTC
查看更新说明
Jan v0.8.6: hotfix for v0.8.5
Fixes only. If you're on 0.8.5, updating is recommended, especially on Linux (AppImage) and on older NVIDIA GPUs.
Fixes
- Linux AppImage crashed on every model load on some distributions (#9173, fixed in #9178). The AppImage bundled the build machine's Vulkan loader. It now uses your system's loader, and the build fails if a GPU loader is ever bundled again.
- NVIDIA Turing GPUs (GTX 16xx, RTX 20xx) failed with "the provided PTX was compiled with an unsupported toolchain" (#9185, fixed in #9187). On drivers older than R595, the Windows and Linux CUDA engine could not run on these cards. It now ships native Turing code, as 0.8.4 did, so no driver update is needed.
- Qwen3.8 with MTP (speculative decoding) slowed down sharply after updating to 0.8.5 (#9183, fixed in #9186). With Parallel Sequences on auto, the engine reserved memory for 4 slots. On cards with 12 GB or similar, that pushed the model into shared system memory. A model with MTP now uses one slot when Parallel Sequences is auto; a value you set yourself is respected.
- Images returned by MCP tools now reach the model as images (#9188, building on #9176 by @cpius). Previously they were sent as base64 text, which the model could not read and which could exceed a provider's input limit. Models without vision get a short note instead, and long chats no longer drop your question when trimming history around an image.
Also
- Settings → Model Providers → Llama.cpp now links to how to use a different llama.cpp version (#9179). You run your own
llama-serverand add it as a custom provider. It's a workaround if the bundled engine misbehaves with a particular model, for example #9177, which remains open.
Full Changelog: https://github.com/janhq/jan/compare/v0.8.5...v0.8.6
- v0.8.50.8.52026-10-08 · 2026-10-08 08:32 UTC
查看更新说明
This release is fixes only
No new features are announced in v0.8.5. Work in progress stays in the nightly channel: Cowork and the current agent work ship there until they are announced, and a stable build does not show them.
One thing a first launch will notice: the first-run setup is now a guided wizard - welcome, engine setup, a first model, and the consent page - instead of opening straight into the chat with no engine or model set up. It is onboarding rather than a new capability, so it is not a headline; it is written down here so a new install is not a surprise.
Migration
The llama.cpp engine now ships with the app.
Jan no longer downloads a llama.cpp backend for your machine on first run or when one is updated. The engine (llama.cpp 0.5.0, build b11146) is bundled in the installer, runs in its own worker process, and updates together with the app, so the backend version and engine auto-update settings are gone. On Windows and Linux, NVIDIA GPUs use the bundled CUDA 13 build; other GPUs, and NVIDIA GPUs or drivers that cannot run CUDA 13 (Pascal cards such as the GTX 10 series, for example), use Vulkan. (In 0.8.4 such systems could download a CUDA 11 or 12 backend; that option is gone.) macOS uses Metal.
Backends downloaded by earlier versions, in
llamacpp/backends(andllamacpp/lib, if present) inside your Jan data folder, are no longer used and are safe to delete.Local models no longer run on Intel Macs.
Intel-based Macs have not been supported since v0.8.0, and the bundled engine is built for Apple Silicon only. On an Intel Mac, Jan v0.8.5 still opens and works with remote and custom providers, but llama.cpp models will not load. If you rely on local models on an Intel Mac, stay on v0.8.4.
The desktop executable is now
Jan-Desktop.The app is still called Jan, and its menu entries, shortcuts and
Jan.appbundle keep working, but the executable inside was renamed. On Linux the.debinstalls/usr/bin/Jan-Desktopinstead of/usr/bin/Jan, and on macOS it isJan.app/Contents/MacOS/Jan-Desktop; scripts that launch the old path need updating. On Windows, the in-app update moves the Start-menu and desktop shortcuts to the new executable.The
janCLI is no longer part of the desktop app.The desktop app no longer bundles the
jancommand-line agent, installs it, or adds it to yourPATH; it is now a separate install (see the agent quickstart).- macOS and Linux: a
janthat v0.8.4 installed (in/usr/local/binor~/.local/bin) is left in place but stays at v0.8.4. Reinstall it from the quickstart to keep it current. - Windows: updating from v0.8.4 removes the
jan.exeit put in the app'sresources\binfolder, sojanstops working until you install the CLI from the quickstart. The Windows installer now puts it in%USERPROFILE%\.local\bin, the same place as on macOS and Linux, not in the desktop app's folder, so a later app update cannot remove it. The update leaves that folder's entry in your userPATH; you can delete the entry.
The Local API Server checks Trusted Hosts when bound to
0.0.0.0.Previously, binding to
0.0.0.0accepted anyHostheader. Now a request whose host is notlocalhost,host.docker.internal, a loopback or private LAN IP, or an entry in Trusted Hosts is rejected with403. If clients reach Jan by another name - a machine name such asmy-pc.local, a domain behind a reverse proxy, or a non-private IP - add it to Settings > Local API Server > Trusted Hosts (or*to allow any host).The agent's
bashtool is now calledshell.On Windows it runs in PowerShell, so Git Bash is no longer needed; on macOS and Linux it is still bash. Agent definitions and tool allowlists that name
bashstop match - macOS and Linux: a
- v0.8.40.8.42026-07-23 · 2026-07-23 06:29 UTC
查看更新说明
Migration
Settings and credentials now live in a backend-managed store.
Provider settings and credentials previously persisted in the webview's
localStorage. In 0.8.4, Jan reads and writes them from a backend-managed store instead (secrets go to the OS keyring). Your existing settings and API keys are copied over automatically on first launch - no manual action is needed, and from this version on all new changes are saved to the backend store.Your old
localStoragedata is not deleted - it's kept as a snapshot so you can downgrade to a pre-0.8.4 build and still have your previous settings. Any changes you make in 0.8.4+ live only in the backend store, so a downgrade sees the older snapshot, not your latest settings.
What's Changed
- chore(flatpak): add 0.8.3 release notes to appdata by @qnixsynapse in https://github.com/janhq/jan/pull/8343
- docs: update changelogs for v0.8.3 and update documentation by @qnixsynapse in https://github.com/janhq/jan/pull/8336
- Merge release/v0.8.3 to main by @qnixsynapse in https://github.com/janhq/jan/pull/8344
- i18n(ja): update Japanese translations (#8264) by @mahirhir in https://github.com/janhq/jan/pull/8348
- i18n(ja): complete common.json translations and fix terminology (#8264) by @mahirhir in https://github.com/janhq/jan/pull/8349
- i18n(ja): complete settings.json translations (#8264) by @mahirhir in https://github.com/janhq/jan/pull/8352
- fix(markdown): force code blocks LTR in RTL language context by @qnixsynapse in https://github.com/janhq/jan/pull/8350
- feat(chat): add toggle for folding interim text into reasoning trace by @qnixsynapse in https://github.com/janhq/jan/pull/8363
- fix(rag): repair embeddings, stop chat-model reloads, and parse more PDFs by @qnixsynapse in https://github.com/janhq/jan/pull/8360
- ci: close issues inactive for over 180 days by @qnixsynapse in https://github.com/janhq/jan/pull/8366
- ci: grant actions:write to stale workflow for state persistence by @qnixsynapse in https://github.com/janhq/jan/pull/8377
- fix(chat): stop persisting detached assistant replies in branched threads by @qnixsynapse in https://github.com/janhq/jan/pull/8376
- feat(settings): move settings/credentials off localStorage to backend store by @qnixsynapse in https://github.com/janhq/jan/pull/8388
- fix(params): coerce numeric assistant params from string to number by @qnixsynapse in https://github.com/janhq/jan/pull/8386
- fix: use snake case for ADL enum in get_gpu_usage by @nkulshre-amd in https://github.com/janhq/jan/pull/8390
- fix(chat): stop MCP tool-approval popup from hanging; move transient approval state off disk by @qnixsynapse in https://github.com/janhq/jan/pull/8391
- API key rotation for Gemini by @jjchen01 in https://github.com/janhq/jan/pull/8408
- fix(security): bump handlebars to 4.7.9 to clear RCE advisory by @qnixsynapse in https://github.com/janhq/jan/pull/8395
- fix(chat): ignore custom SSE event types in OpenAI-compatible streams by @qnixsynapse in https://github.com/janhq/jan/pull/8392
- feat: OpenAI-compatible translating gateway + Responses API + unified reasoning by @qnixsynapse in https://github.com/janhq/jan/pull/8423
- fix: Stabilize chat prefix caching, restore cloud providers, unify logging (v0.8.4) by @qnixsynapse in https://github.com/janhq/jan/pull/8425
- fix(mcp): guard against duplicate serve() on streamable-http MCP servers by @thinhlpg in https://github.com/janhq/jan/pull/8435
- fix(providers): send anthropic-version on model-list fetch by @qnixsynapse in https://github.com/janhq/jan/pull/8433
- fix(desktop): macOS hide-on-close; hide-to-tray when Local API Server runs by @qnixsynapse in https://github.com/janhq/jan/pull/8436
- feat(extensions): bundle built-in extensions into the app binary and update tests by @qnixsynapse in https://github.com/janhq/jan/pull/8437
- feat(llamacpp): per-model chat template kwargs by @qnixsynapse in https://github.com/janhq/jan/pull/8441
- feat: token counter for remote/MLX prov
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Jan - Open-source ChatGPT replacement
Jan is bringing the best of open-source AI in an easy-to-use product. Download and run LLMs with full control and privacy.
Installation
The easiest way to get started is by downloading one of the following versions for your respective operating system:
Download from jan.ai or GitHub Releases.
Features
- Local AI Models: Download and run LLMs (Llama, Gemma, Qwen, GPT-oss etc.) from HuggingFace
- Cloud Integration: Connect to GPT models via OpenAI, Claude models via Anthropic, Mistral, Groq, MiniMax, and others
- Custom Assistants: Create specialized AI assistants for your tasks
- OpenAI-Compatible API: Local server at
localhost:1337for other applications - Model Context Protocol: MCP integration for agentic capabilities
- Privacy First: Everything runs locally when you want it to
Build from Source
For those who enjoy the scenic route:
Prerequisites
- Node.js ≥ 20.0.0
- Yarn ≥ 4.5.3
- Make ≥ 3.81
- Rust (for Tauri)
- (macOS Apple Silicon only) MetalToolchain
xcodebuild -downloadComponent MetalToolchain
Run with Make
git clone https://github.com/janhq/jan
cd jan
make dev
This handles everything: installs dependencies, builds core components, and launches the app.
Available make targets:
make dev- Full development setup and launchmake build- Production buildmake test- Run tests and lintingmake clean- Delete everything and start fresh
Manual Commands
yarn install
yarn build
yarn dev
Building on Windows
Run make dev from Git Bash (installed with Git for Windows) — make dispatches its recipes through sh, so a plain cmd.exe won't work.
You do not need a "Native Tools Command Prompt for VS 2022". The bundled llama.cpp engine builds with Ninja + clang-cl, and clang-cl locates the MSVC toolchain and Windows SDK on its own. What has to be installed (and on PATH for ninja/clang-cl/cmake):
- Visual Studio 2022 Build Tools (MSVC x64 workload + Windows SDK)
- LLVM (provides
clang-cl) - Ninja
- CMake
- CUDA Toolkit — only for
JAN_ENGINE_VARIANT=cuda12/cuda13builds
Engine variants are picked with JAN_ENGINE_VARIANT (tokens: cpu, vulkan, metal, cuda12, cuda13, hip/rocm, joined by -), e.g.:
make dev JAN_ENGINE_VARIANT=cuda13
"nvcc fatal : Could not open output file ...fattn-...cu.obj.d" during tauri-plugin-llamacpp(build) means the build path crossed Windows' 260-character MAX_PATH limit — nvcc does not honor the long-path opt-in. The build script now detects this and automatically relocates the llama.cpp build tree to a short directory under %LOCALAPPDATA%\jan-engine. If you hit path-length errors anyway, set JAN_ENGINE_BUILD_DIR to a short path (e.g. C:\jb) or move the checkout closer to the drive root.
System Requirements
Minimum specs for a decent experience:
- macOS: 13.6+ (8GB RAM for 3B models, 16GB for 7B, 32GB for 13B)
- Windows: 10+ with GPU support for NVIDIA/AMD/Intel Arc
- Linux: Most distributions work, GPU acceleration available
For detailed compatibility, check our installation guides.
Troubleshooting
If things go sideways:
- Check our troubleshooting docs
- Copy your error logs and system specs
- Ask for help in our Discord
#🆘|jan-helpchannel
Contributing
Contributions welcome. See CONTRIBUTING.md for the full spiel.
Note: Please sign your commits so we can verify your contributions.
Links
- Documentation - The manual you should read
- API Reference - For the technically inclined
- Changelog - What we broke and fixed
- Discord - Where the community lives
Contact
- Bugs: GitHub Issues
- Business: [email protected]
- Jobs: [email protected]
- General Discussion: Discord
License
Apache 2.0 - Because sharing is caring.
Acknowledgements
Built on the shoulders of giants: