AnythingLLM v1.17.0 on your box: chat over your own files, run agents, keep the stack local. No account for the core app. Desktop is the fast solo path; Docker when you need multi-user, passwords, or widgets.
Mintplex Labs ships it as open-source desktop/server software for RAG over PDFs, docs, and sites against whatever LLM you attach. Release line called out here is v1.17.0 (GitHub latest/tag notes list 1 October 2026 – confirm on the releases page before you script a fleet rollout). Homes: anythingllm.com, docs.anythingllm.com, source at Mintplex-Labs/anything-llm.
System requirements before you touch the installer
The app shell is light. RAM and disk blow up when you attach a local model or a big embedder – not when you only open the UI.
| Setup | RAM | CPU | Storage | Notes |
|---|---|---|---|---|
| Docker (app only, cloud LLM) | 2 GB min | 2-core + AVX2 | 5 GB | Official Docker baseline |
| Desktop + small local model | 8-16 GB+ | Modern x64 / Apple Silicon | GGUF-sized | Built-in engine needs headroom |
| Local 7B-9B | 16 GB class | 4+ cores; GPU helps | 10-20 GB+ | VRAM 6-8 GB+ if you care about speed |
Official Docker system-requirements page: default LanceDB on x86 expects AVX2. Miss it and the container dies almost immediately with Illegal instruction (core dumped). ARM builds (Apple Silicon and friends) follow a different path. On Linux: lscpu | grep -o avx2. Proxmox/QEMU guests on kvm64 often hide the flag – CPU type host if the physical chip has AVX2.
Ever watched a “simple” compose file exit in under a second on a cheap cloud VM? That illegal-instruction line is the whole story. Not networking. Not your .env. The instruction set.
Windows Desktop is aimed at normal Win10/11 user accounts. Pull installers only from the project CDN/docs.
Official download sources (v1.17.0 line)
- Windows x64: cdn.anythingllm.com/latest/AnythingLLMDesktop.exe
- Windows ARM64: AnythingLLMDesktop-Arm64.exe
- macOS: Apple Silicon or Intel DMG via the project download/docs pages; or Homebrew cask (tracks 1.17.0 as of this writing – re-check with
brew info --cask anythingllm) - Linux:
curl -fsSL https://cdn.anythingllm.com/latest/installer.sh→ AppImage; re-run to update - Docker:
mintplexlabs/anythingllm:latest→ UI on port 3001 with a mounted storage volume
Hub: anythingllm.com/download. Skip random mirrors.
Desktop install (solo machines)
Built-in local LLM engine. One user. I use this unless I need shared access or embeddable widgets – Docker simply does not ship that engine.
Windows
Run the matching .exe. Current User only. All Users is unsupported and is what breaks later upgrades and “cannot be closed” loops.
# Silent / unattended - current user under %LOCALAPPDATA%ProgramsAnythingLLM
.AnythingLLMDesktop.exe /S
# Optional Meeting Assistant model download
.AnythingLLMDesktop.exe /S /DOWNLOAD_MODEL=yes
First launch can sit for 1-2 minutes while support bits land. Outbound HTTPS has to work (GPU/Ollama support libs, related tooling). Logs stay under the install directory when something fails.
Installer says “AnythingLLM cannot be closed” but Task Manager looks clean? Tray – minimize-to-tray behavior has been around since v1.11.0. Quit from there. Old All Users install still present? Run that folder’s
Uninstall AnythingLLM.exefirst; app data under%APPDATA%anythingllm-desktopstays.
macOS
Correct DMG → Applications. Gatekeeper may want a Privacy & Security click on first open.
brew install --cask anythingllm
Silicon is the pleasant path for local models. Intel works; it just feels older.
Linux
curl -fsSL https://cdn.anythingllm.com/latest/installer.sh -o installer.sh
chmod +x installer.sh
./installer.sh
# Optional: ANYTHING_LLM_INSTALL_DIR=/path/to/user/writable/dir ./installer.sh
AppImage + .desktop entry land in your home (or the dir you set). Launch ./AnythingLLMDesktop.AppImage when you want logs in the foreground. Same script again = update; storage paths persist under ~/.config/anythingllm-desktop/storage/.
Docker install (multi-user / always-on)
Several people, password gates, widgets, white-label ideas – this lane. You bring Ollama, LM Studio, or a cloud key. No built-in desktop engine.
# Linux / macOS
export STORAGE_LOCATION=$HOME/anythingllm
mkdir -p $STORAGE_LOCATION
touch "$STORAGE_LOCATION/.env"
docker pull mintplexlabs/anythingllm:latest
docker run -d --name anythingllm --restart unless-stopped
-p 3001:3001
--cap-add SYS_ADMIN
-v ${STORAGE_LOCATION}:/app/server/storage
-v ${STORAGE_LOCATION}/.env:/app/server/.env
-e STORAGE_DIR="/app/server/storage"
mintplexlabs/anythingllm:latest
# Windows PowerShell
$env:STORAGE_LOCATION="$HOMEDocumentsanythingllm"
If(!(Test-Path $env:STORAGE_LOCATION)) {New-Item $env:STORAGE_LOCATION -ItemType Directory}
If(!(Test-Path "$env:STORAGE_LOCATION.env")) {New-Item "$env:STORAGE_LOCATION.env" -ItemType File}
docker run -d --name anythingllm --restart unless-stopped `
-p 3001:3001 `
--cap-add SYS_ADMIN `
-v "${env:STORAGE_LOCATION}:/app/server/storage" `
-v "${env:STORAGE_LOCATION}.env:/app/server/.env" `
-e STORAGE_DIR="/app/server/storage" `
mintplexlabs/anythingllm:latest
Open http://localhost:3001. No volume? Workspaces vanish on restart. --cap-add SYS_ADMIN helps collector/scrape paths.
Default process user is UID/GID 1000. Storage under root-owned /mnt, /data, /opt is a classic foot-gun – official local-docker FAQ direction is chown -R 1000:1000 on $STORAGE_LOCATION before start. Symptom: unable to open database file. Prefer chown over chmod 777 (that dumps keys and docs to everyone on the host).
Host Ollama from a container is not localhost. Mac/Windows Docker usually wants http://host.docker.internal:11434; Linux needs the host gateway IP you actually use.
Minimum first-time config
Wizard pops on Desktop launch or :3001. Goal: one workspace answers from one file. Nothing else.
- LLM provider – Desktop can use the built-in engine immediately; Docker needs a configured provider (cloud or local endpoint).
- Embedder – built-in CPU MiniLM is enough to prove the loop.
- Create a workspace (isolated doc + chat bucket).
- Drop two small PDFs/DOCX/TXT. Wait for embed.
- Ask something only those files can answer. Citations should show on hits.
Stop there until chat works. Agents and MCP can wait. Version badge → Open storage when you need raw folders (lancedb, documents, models, anythingllm.db). Desktop data roots: Windows %APPDATA%anythingllm-desktopstorage; Mac ~/Library/Application Support/anythingllm-desktop/storage; Linux ~/.config/anythingllm-desktop/storage/.
Workspaces behave like labeled desks, not global search. Mix HR PDFs and a private finance sheet in one bucket and you will get “helpful” answers you did not want. Split early – is that friction, or is it the product doing its job?
Verify
Desktop: UI opens, version reads 1.17.0 (or whatever latest resolved to today), workspace creates, model replies, storage folder is writable.
Docker:
docker ps # anythingllm up, 3001 published
curl -I http://localhost:3001
docker logs anythingllm # no Illegal instruction; no SQLite open errors
Image healthcheck needs a minute on cold start. Do not declare victory on “container created.”
Install failures you will actually hit
Windows: “AnythingLLM cannot be closed.” Tray quit. Or finish removing a prior All Users copy, then install Current User. Chats live under APPDATA; the uninstall path above is about the program files, not wiping storage by default.
Desktop: GPU/Ollama support failed to download or extract from CDN. Firewall or flaky network during install. Read ollama_install.log under %LOCALAPPDATA%ProgramsAnythingLLM for the version string the installer expected. Official Windows troubleshooting: pull the matching support packages from the project’s CDN support/ollama tree, place them where the desktop engine expects under %APPDATA%anythingllm-desktopstorage, write the .ollama-version marker the docs describe, restart – or skip built-in GPU stack and point the app at a separate Ollama install. Paths with spaces have also broken Meeting Assistant CUDA extract in community reports (PowerShell splitting); default install locations avoid that mess.
Docker: instant death, Illegal instruction. AVX2 missing or masked. Fix the guest CPU exposure or move hosts. Same root cause as the requirements section – do not chase Python packages for this one.
Docker: unable to open database file. Ownership. chown -R 1000:1000 "$STORAGE_LOCATION".
Upgrade and uninstall
Upgrade Desktop: run the newest installer again – storage stays. Linux: re-run installer.sh. Mac Homebrew: brew update && brew upgrade --cask anythingllm. Docker: docker pull mintplexlabs/anythingllm:latest, recreate with the same volume mounts.
Uninstall Windows:
& "$env:LOCALAPPDATAProgramsAnythingLLMUninstall AnythingLLM.exe" /S
# Also wipe models/docs:
& "$env:LOCALAPPDATAProgramsAnythingLLMUninstall AnythingLLM.exe" /S /DELETE_DATA=yes
Mac: Trash the app; optional delete of ~/Library/Application Support/anythingllm-desktop. Homebrew: brew uninstall --zap --cask anythingllm. Linux: remove AppImage, .desktop, and ~/.config/anythingllm-desktop. Docker: docker rm -f anythingllm, then delete STORAGE_LOCATION only if you want a blank slate.
Your move: run Desktop or Docker for the v1.17.0 line, one workspace, one real document, one question only that file answers. Citation shows up – install is done.
FAQ
Does AnythingLLM Desktop need Docker or Node?
No. Desktop installers are self-contained. Docker is a different deployment shape for multi-user/server work.
I installed for All Users on Windows earlier – can I fix it without losing chats?
Yes. Open the old install location from the shortcut, run Uninstall AnythingLLM.exe (admin if prompted), then install the current .exe for Current User only. Data under %APPDATA%anythingllm-desktop remains; that is the storage tree the desktop docs point at.
Why does my Docker container die instantly on an old cloud VM?
Picture a bargain VPS image with CPU type stuck on generic. Container starts, LanceDB hits an AVX2 opcode, kernel dumps core, Docker shows “Exited” before you finish typing docker logs. Run lscpu in the guest. No avx2? Either set the VM CPU to host when the physical CPU supports it, or move the workload. People blame compose syntax first – the log line Illegal instruction (core dumped) is the tell that it was never the YAML.