Published

AnythingLLM

Self-hosted workspace for chatting with your documents (RAG) and running AI agents, for a person or a team that brings its own LLM API key or model server. One container holds the app, a CPU embedder and the LanceDB vector store.

Resources by load level

What the app itself needs at each level, next to what we recommend for a server that runs only this app.

LevelWhat it meansApp requirementsRecommended
LightEstimateUp to 5 users, up to 50 MB of extracted document text (~51,000 chunks) embedded by the built-in CPU embedder into LanceDB; LLM via an external API or server.2 vCPU · 2 GiB RAM · 5.2 GiB disk2.52 vCPU · 3.9 GiB RAM · 15.295 GiB disk
MediumEstimateUp to 20 users (multi-user mode), up to 250 MB of extracted document text (~255,000 chunks) embedded by the built-in CPU embedder into LanceDB; LLM via an external API or server.3 vCPU · 4 GiB RAM · 7.7 GiB disk3.72 vCPU · 6.3 GiB RAM · 18.17 GiB disk
HeavyEstimateUp to 50 users (multi-user mode), up to 1 GB of extracted document text (~1 million chunks) embedded by the built-in CPU embedder into LanceDB; LLM via an external API or server.4 vCPU · 8 GiB RAM · 17.7 GiB disk4.92 vCPU · 11.1 GiB RAM · 29.67 GiB disk

Recommended = app requirements + system baseline + safety headroom, under sizing policy 2026.10.0. Options stay at their defaults. “Estimate” means the sources give no number for that case, so it is worked out from them by the method stated under Components. How the numbers are built

Size it in the Stack Sizer

Ready-to-run files

Support level Supported

Compose template from the official sources; not yet verified by a run.

Create docker-compose

Components

What each component needs at each load level, before baseline and headroom.

vCPU / GiB RAM / GiB disk
ComponentLightMediumHeavySources
AnythingLLM (app)2 / 2 / 5.23 / 4 / 7.74 / 8 / 17.7[1][5][13][24][25][26][27][28][31]
How the estimates are worked out
  • AnythingLLM · Light: vCPU and RAM: the documented minimum, a 2-core CPU with AVX2 and 2GB RAM (taken as 2 GiB), "enough to store some documents, send chats". Disk: image 4.2 GiB (1.027 compressed + 3.148 unpacked, both kept by the containerd store). Data per 1 MB of extracted text (~1,021 chunks of 1,000 chars, 20 overlap): document JSON 1 MB + vector-cache JSON (384 floats as text ≈7.7 KB + 1.5 KB text/metadata per chunk) 9.4 MB + LanceDB (1,536 B vector + 1.5 KB) 3.1 MB ≈ 13.5 MB, taken as ×14. 50 MB × 14 = 0.65 GiB + 23MB model + SQLite → 1 GiB + 4.2 GiB image.
  • AnythingLLM · Medium: No upstream figure above the minimum. The embedder (ONNX, CPU only, 25 chunks per pass), LanceDB, the server and the collector all run in this one container; RAM 2 GiB × 2 → 4 GiB and one core added to the documented 2 (2 + 1 = 3) so embedding uploads does not stall chats. Disk: light's method (×14 per MB of text + 4.2 GiB image): 250 MB × 14 = 3.26 GiB → 3.5 + 4.2 image.
  • AnythingLLM · Heavy: The documented minimum doubled again over medium for concurrent users and large embedding jobs in the same process: RAM 2 GiB × 4 = 8 GiB, vCPU 2 × 2 = 4. Upstream suggests an external embedder for large data volumes. Disk: light's method: 1,000 MB × 14 = 13.04 GiB → 13.5 + 4.2 image.

Ports

Public ports are meant to be reached from outside the stack, usually through a reverse proxy; internal ones stay on the stack's own network.

ComponentPortExposurePurposeSources
AnythingLLM3001/tcpPublic, through a proxyWeb UI, REST API and agent WebSocket; publish only behind an HTTPS reverse proxy[1][3][15]

Every port in the catalog, with conflicts between apps

User and permissions (UID/GID)

The user each container's process runs as, and the paths it writes to. A bind mount for one of these paths must be writable by that UID:GID.

ComponentUID:GIDUserStarts as rootWrites toSources
AnythingLLM1000:1000anythingllmNo/app/server/storage/app/server/.env/app/collector/hotdir[3][9][14][27]
  • AnythingLLM: The Dockerfile creates anythingllm (1000:1000) and switches to USER anythingllm before the entrypoint, so the server and the collector never run as root. It writes the storage volume, /app/server/.env (UI settings) and /app/collector/hotdir (uploads being processed). A host folder must be owned by 1000:1000.

Storage growth

How much each component's data grows per month at each load level, on top of the disk in the profile. A value marked Assumption is ANAROQ's stated assumption, not a figure from the sources; the notes say what it rests on.

GiB per month
ComponentLightMediumHeavySources
AnythingLLMAssumption0.0830.2921.125[26][27]
What the growth figures rest on
  • AnythingLLM: Upstream gives no growth rate and keeps documents, vector-cache and vectors until they are deleted. Assumes the preset's data (1 GiB) fills over 12 months: 1 / 12 = 0.083. Chat history in SQLite is small next to it.
  • AnythingLLM: Same 12-month assumption: 3.5 GiB of preset data, 3.5 / 12 = 0.292.
  • AnythingLLM: Same 12-month assumption: 13.5 GiB of preset data, 13.5 / 12 = 1.125.

Upgrade and rollback

How to move to a new version safely, and how to go back if it fails.

Back up first

With the container stopped, copy the whole storage volume (anythingllm.db, documents, vector-cache, lancedb, models), plus the saved /app/server/.env and the .env of the Compose file (SIG_KEY, SIG_SALT). [8][22][27]DerivedUpstream documents keeping the storage folder and .env on the host between updates, not a backup procedure; copying them while stopped follows from SQLite and LanceDB living there.

Upgrade steps

  1. Read the release notes of every version between yours and the target; use a versioned tag (for example 1.18.0), not latest, which follows every commit. [17][30]
  2. Save the UI settings first: docker compose exec -T anythingllm cat /app/server/.env > anythingllm-settings.env (it holds API keys; keep it private). A new container starts without them. [1][9]DerivedUpstream keeps this file on the host with a bind mount; the template has no such mount, so it is copied out by hand.
  3. Back up the storage volume, set the new pinned tag, then docker compose pull and docker compose up -d. The entrypoint runs prisma migrate deploy on start. [5][15]
  4. Put the settings back: docker compose exec -T anythingllm sh -c 'cat > /app/server/.env' < anythingllm-settings.env, then docker compose restart anythingllm and check /api/ping. [4][9]DerivedThe server loads /app/server/.env with dotenv at start; values set in the Compose environment win over the file.

Roll back

Stop the container, restore the storage backup taken before the upgrade, start the previous pinned tag and put the saved settings file back. [5][15]DerivedUpstream documents no downgrade. Database migrations run forward on start, so the older tag is only safe on the data backed up before them.

Known breaking changes

  • In 1.16.2: Web browsing is enabled by default for agents, and You.com became the default web search provider. [30]
  • In 1.16.0: The workspace profile picture feature was removed. [30]

Limits

  • No LLM inside: the Docker build has no built-in LLM provider. Chat needs an API key or a model server of your own (for example Ollama), whose resources are not in these figures. The built-in embedder and LanceDB are included. [13][16]
  • The CPU must expose AVX2: the default LanceDB crashes with Illegal instruction without it. On Proxmox/QEMU set the VM CPU type to host; generic types such as kvm64 hide AVX2. [13][14]
  • Website and link imports use Chromium, which upstream runs with cap_add SYS_ADMIN. The generated file never adds it, so they fail unless the chromium-no-sandbox option is on. [6][15]
  • Settings saved in the UI (LLM, embedder, API keys) live in /app/server/.env inside the container and are lost when it is recreated, e.g. on upgrade; copy the file out first. One instance only: SQLite is not for horizontal scaling. [9][15]

Security

  • Without a password or multi-user mode the API and UI need no login. The template sets the instance password (AUTH_TOKEN) from .env; switch to multi-user mode for per-user roles (it cannot be reverted). [7][18]
  • Do not expose port 3001 directly: serve it through a reverse proxy with HTTPS that passes WebSocket upgrades for agents (/api/agent-invocation). [15]
  • The chromium-no-sandbox option runs Chromium without its sandbox on every page it scrapes; turn it on only if you need website imports, and keep anonymous telemetry in mind (DISABLE_TELEMETRY opts out). [6][15][21]

Backup

  • Back up the storage volume (/app/server/storage: anythingllm.db, documents, vector-cache, lancedb, models) with the container stopped; it holds every workspace, chat, user and vector. [14][22][27]
  • Also keep a copy of /app/server/.env (UI settings and API keys) and of SIG_KEY and SIG_SALT: without the same key and salt, data AnythingLLM encrypted cannot be read after a restore. [8][9]

Latest release

Newest upstream release
AnythingLLM 1.18.0 [29][30]
This profile was checked against

AnythingLLM 1.18.0

This profile was checked against the newest release.

Checked on
14 Oct 2026
State
Checked within the last 90 days
Where releases are published
GitHub Releases

Latest releases of every app

Version

Profile status
Published
Checked against release
AnythingLLM 1.18.0
Profile version
1.0.0
Figures verified
14 Oct 2026
Catalog release
2026.10.10
Sizing policy
2026.10.0
Compose file
Unverified
Official site
anythingllm.com

Sources

  1. docker/HOW_TO_USE_DOCKER.md at v1.18.0: docker run and Compose example (port 3001, cap_add SYS_ADMIN, STORAGE_DIR, storage volume; at least 2GB RAM, 10GB disk) (Official Compose · read 14 Oct 2026)
  2. docker/docker-compose.yml at v1.18.0 (build from source, user 1000:1000, .env and storage bind mounts, cap_add SYS_ADMIN) (Official Compose · read 14 Oct 2026)
  3. docker/Dockerfile at v1.18.0: USER anythingllm (1000:1000), HEALTHCHECK every 1m (timeout 10s, start period 1m) via docker-healthcheck.sh (Official repository · read 14 Oct 2026)
  4. docker/docker-healthcheck.sh at v1.18.0 (curl http://localhost:3001/api/ping, 200 = up) (Official repository · read 14 Oct 2026)
  5. docker/docker-entrypoint.sh at v1.18.0 (warns without STORAGE_DIR; prisma migrate deploy, then server and collector) (Official repository · read 14 Oct 2026)
  6. docker/.env.example at v1.18.0 (STORAGE_DIR, SIG_KEY/SIG_SALT 32+ chars, JWT_SECRET, ANYTHINGLLM_CHROMIUM_ARGS instead of SYS_ADMIN) (Official repository · read 14 Oct 2026)
  7. server/utils/middleware/validatedRequest.js at v1.18.0 (no auth when AUTH_TOKEN or JWT_SECRET is unset, outside multi-user mode) (Official repository · read 14 Oct 2026)
  8. server/utils/EncryptionManager/index.js at v1.18.0 (random SIG_KEY/SIG_SALT written to .env when unset) (Official repository · read 14 Oct 2026)
  9. server/utils/helpers/updateENV.js at v1.18.0 (dumpENV writes UI settings and keys to /app/server/.env) (Official repository · read 14 Oct 2026)
  10. server/utils/boot/markOnboarded.js at v1.18.0 (AUTH_TOKEN or JWT_SECRET set = onboarding marked complete) (Official repository · read 14 Oct 2026)
  11. server/utils/collectorApi/index.js at v1.18.0 (ANYTHINGLLM_CHROMIUM_ARGS passed to the collector's Chromium) (Official repository · read 14 Oct 2026)
  12. server/endpoints/system.js at v1.18.0 (GET /ping under /api, no auth) (Official repository · read 14 Oct 2026)
  13. AnythingLLM docs: System Requirements (2GB RAM, 2-core CPU with AVX2, 5GB storage; AVX2 required by LanceDB, Proxmox CPU type host) (Official docs · read 14 Oct 2026)
  14. AnythingLLM docs: Local Docker (storage volume required; image runs as UID/GID 1000; Illegal instruction without AVX2) (Official docs · read 14 Oct 2026)
  15. AnythingLLM docs: Deploy to Cloud VM (SYS_ADMIN needed to scrape web pages, SQLite not for horizontal scaling, reverse proxy with WebSocket for agents) (Official docs · read 14 Oct 2026)
  16. AnythingLLM docs: Docker installation overview (no built-in LLM provider on Docker; multi-user, password protection) (Official docs · read 14 Oct 2026)
  17. AnythingLLM docs: Docker Images (latest per commit; versioned images per release; pg image for PostgreSQL + PGVector) (Official docs · read 14 Oct 2026)
  18. AnythingLLM docs: Security & Access (single-user password, multi-user mode cannot be reverted, roles) (Official docs · read 14 Oct 2026)
  19. AnythingLLM docs: AnythingLLM Cloud (private managed instances by Mintplex Labs) (Official docs · read 14 Oct 2026)
  20. LICENSE at v1.18.0: MIT License, Mintplex Labs Inc. (Official repository · read 14 Oct 2026)
  21. README.md at v1.18.0 (telemetry on by default, DISABLE_TELEMETRY opt-out) (Official repository · read 14 Oct 2026)
  22. .dockerignore at v1.18.0 (server/storage data: documents, vector-cache, *.db, lancedb) (Official repository · read 14 Oct 2026)
  23. server/storage/models/README.md at v1.18.0 (native embedder all-MiniLM-L6-v2, 384 dimensions; local Whisper) (Official repository · read 14 Oct 2026)
  24. server/utils/EmbeddingEngines/native/constants.js at v1.18.0 (all-MiniLM-L6-v2: 23MB, 25 chunks per pass, 1,000-char chunks) (Official repository · read 14 Oct 2026)
  25. server/utils/TextSplitter/index.js at v1.18.0 (default chunkSize 1000, chunkOverlap 20, metadata header per chunk) (Official repository · read 14 Oct 2026)
  26. server/utils/vectorDbProviders/lance/index.js at v1.18.0 (each row: vector, chunk text and metadata; result cached to vector-cache) (Official repository · read 14 Oct 2026)
  27. server/utils/files/index.js at v1.18.0 (vector-cache stores each document's chunks and vectors as JSON) (Official repository · read 14 Oct 2026)
  28. Registry manifest of mintplexlabs/anythingllm:1.18.0 (linux/amd64): 1,102,229,449 B compressed; 20 layers decompressed and counted: 3,379,698,176 B (Measurement · read 14 Oct 2026)
  29. Docker Hub tags of mintplexlabs/anythingllm (1.18.0 pushed 2026-10-13, newest versioned tag on 2026-10-14) (Official repository · read 14 Oct 2026)
  30. GitHub releases: v1.18.0 (13 Oct, Latest), v1.17.0, v1.16.2 (agent web browsing on by default), v1.16.0 (workspace profile pictures removed) (Release notes · read 14 Oct 2026)
  31. Docker: containerd image store is the default on fresh Engine 29+ installs and keeps images compressed and uncompressed (Official docs · read 14 Oct 2026)

All self-hosted apps