AnythingLLM Self-hosted
System Requirements
AnythingLLM System Requirements

System Requirements

AnythingLLM is fully customizable in every regard.

Given this customizable nature, your exact requirements to run AnythingLLM depend on many factors. You can use the tables below to get a rough idea of what it will take to run AnythingLLM.

AnythingLLM can be a wrapper around many external services that all accomplish some task - making AnythingLLM so lightweight it can run on the smallest machines - even Raspberry Pis!

Recommended configuration for AnythingLLM

This is the minimum value for running AnythingLLM. This will be enough for you to store some documents, send chats, and use AnythingLLM features.

PropertyRecommended Value
RAM2GB
CPU2-core CPU with AVX2
Storage5GB

CPU instruction set requirements

Your CPU must support the AVX2 instruction set. This is the one hard requirement AnythingLLM has of your hardware.

The default vector database, LanceDB (opens in a new tab), compiles against a baseline of Intel Haswell (2013) and newer. On a CPU without AVX2, the server process is killed the moment LanceDB loads and the container exits with:

/usr/local/bin/docker-entrypoint.sh: line 7: 115 Illegal instruction (core dumped) node /app/server/index.js

Checking for AVX2

AVX2 is an x86 instruction set, so this only applies to Intel and AMD processors. ARM machines - Apple Silicon Macs, Raspberry Pis, AWS Graviton - run a separate ARM64 build and are unaffected.

To check on a Linux host or guest:

lscpu | grep -o avx2

If that prints nothing, the CPU AnythingLLM can see does not expose AVX2.

️⚠️

Running in a VM? Check inside the guest, not on the host. Hypervisors frequently present a generic virtual CPU that masks AVX2 even when the physical processor supports it - see below.

Virtual machines and AVX2

Proxmox, QEMU/KVM, and most other hypervisors default to a generic emulated CPU model such as kvm64 or x86-64-v2. These models deliberately hide newer instruction sets so guests can be live-migrated between mismatched hosts, and AVX2 is one of the things they hide. The guest then reports no AVX2 support even on a modern host processor.

If your physical CPU supports AVX2, set the guest CPU type to host to pass the real instruction set through. In Proxmox this is under Hardware → Processor → Type. Restart the VM and re-run the check above.

Cloud providers vary too. Some instance families expose AVX2 and others do not, so check inside the instance before assuming.

If your CPU cannot support AVX2

AVX2 cannot be emulated, so the only option is to move off the default vector database. Set VECTOR_DB in your .env to a provider that is not LanceDB - see Vector Databases for the supported options. LanceDB is only loaded when it is the selected provider, so choosing another one keeps it out of the process entirely.

Every other supported provider runs as a separate service, so you will need to host one yourself or use a cloud offering.

LLM selection impact

This is how you get chat responses. Popular hosted solutions like OpenAI (opens in a new tab) tend to provide state-of-the-art responses with almost zero overhead. However, you will need an API key for any cloud-based LLM provider.

️💡

Tip: Host a local LLM on another machine that has a GPU if the device running AnythingLLM does not have a GPU. AnythingLLM can connect to any LLM running anywhere via API.

Embedder selection impact

This is the model which you use to "embed" or vectorize text. Likewise, external services connected to AnythingLLM have zero overhead impact.

The default embedder runs on the same machine as AnythingLLM using CPU-only vectorization. If your documents are large or you need to vectorize a lot of data, you may want to use an external embedder provider and model.

Vector database selection impact

All supported vector databases either have no impact as they are externally hosted or can scale to hundreds of millions of vectors at the minimum recommended settings.

the default LanceDB vector database can handle anything you can throw at it