mrkeyoor.com_
Wed 16 Sept 05:30 UTC
LLM Toolsevaluationupdated 27 Aug 2026

anything-llm review

AnythingLLM is a desktop and self-hosted chat application that connects language models to your documents, tools, and shared workspaces. It gives people a ChatGPT-style interface while letting the operator choose local models, cloud providers, embedding engines, and vector storage.

+228stars / 7d
Verdict

Our AnythingLLM run installed 288 packages in 52 seconds and passed 180 of 182 tests, but Jest still exited 1 with 34 failed suites. It is a sensible first trial for document chat when provider choice and a ready interface matter more than fine-grained retrieval control. Production teams should test their exact model, chunking, storage, and identity setup before committing documents to it.

We ran it

Lab card: what happened when we ran anything-llmScreenshot of anything-llm (anythingllm.com)
Install✓ · 52s288 packages · 49 MB
Buildn/ano build script
Tests✗ · 14s180 passed · 2 failed of 182 (jest)
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo5733 files~267,027 lines of source · 58.4 MB · 9 CI workflows

Answers from our run

Does anything-llm build from source?

Dependencies installed in 52 seconds (288 packages), and the project has no separate build step. We cloned commit 72aabbd into a clean Debian container with 3 CPUs and no project-specific setup.

Do anything-llm's tests pass?

Not all of them: 180 of 182 passed and 2 failed when we ran the project's own test command (jest). Some failures need services or credentials a bare container does not have.

Does anything-llm have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use anything-llm?

Teams expecting every provider to share one interchangeable configuration: open issue 6162 says two local AI endpoints cannot be registered together and the context window is fixed in settings.

What are the alternatives to anything-llm?

Open WebUI, Dify, Khoj. Our AnythingLLM run installed 288 packages in 52 seconds and passed 180 of 182 tests, but Jest still exited 1 with 34 failed suites.

Setup4/552-second install; desktop is easy, server setup has more pieces
Docs4/5Many provider and deployment guides, though options sprawl
Community5/565,259 stars and current August 2026 development
Maturity4/5MIT product with active releases; repository tests were not clean

Discussed on

  1. hnShow HN: AnythingLLM – Open-Source, All-in-One Desktop AI Assistant368 points

Who it’s for

Teams that want document chat and citations without building a retrieval interface from scratch.
Individuals who want a desktop app that can use local models and local files.
Self-hosters who need multi-user workspaces, agents, scheduled jobs, and an API.
Developers who want one interface for several model, embedding, speech, and vector providers.

Who it’s NOT for

Teams expecting every provider to share one interchangeable configuration: open issue 6162 says two local AI endpoints cannot be registered together and the context window is fixed in settings.
Organizations that require managed identity for Azure OpenAI today: issue 6172 says the provider requires a static API key.
Retrieval teams that need semantic or document-specific chunking controls: issue 5753 requests those options beyond the current splitting setup.
Operators who assume the repository suite is clean on plain Node 22: our run reported 2 failed tests and 34 failed suites.

Setup reality

Our Node 22 sandbox installed 288 packages in 52 seconds and used 49 MB. The repository had no build script, so that step was skipped. Tests exited 1 after 14 seconds: Jest reported 180 passed and 2 failed of 182, while its suite summary showed 34 failed and 10 passed. Npm audit found 0 known vulnerabilities.

Desktop use can stay local, but useful answers still need a language model, an embedding model, and document storage. Docker multi-user deployments add environment files, persistent storage, provider keys or local model endpoints, vector database choices, and public routing if others need access.

The repository's development path runs separate server, frontend, and collector processes after generating several .env files. Telemetry is enabled by default and can be disabled with DISABLE_TELEMETRY=true; model providers, external tools, and the model CDN can still create outbound traffic.

Document chat works without choosing one model vendor

AnythingLLM packages a familiar chat interface around document ingestion, retrieval, agents, and shared workspaces. The operator can connect hosted APIs or local runtimes, then choose separate providers for chat, embeddings, speech, and vector storage. That separation is useful for a company that wants Anthropic for one workspace, a local llama.cpp model for another, and documents kept on its own machine. The product also exposes a developer API and an embeddable chat widget for Docker deployments.

The provider list is long enough to create its own work. The README names OpenAI, Anthropic, Gemini, Bedrock, Ollama, LM Studio, LocalAI, and many OpenAI-compatible services. A model choice also brings a context window, tool-call format, key, rate limit, and attachment support. AnythingLLM gives these systems one control surface, but it cannot make their behavior identical. Issue 6162 is a concrete example: its reporter can switch models yet cannot register 2 local AI endpoints with separate context settings.

Desktop is the easy path; multi-user hosting adds state

The desktop build is aimed at a single person on macOS, Windows, or Linux. That is the cleanest route for private document questions because the app, local files, and optional local model can stay on one workstation. Docker is the relevant edition for multiple users, permissions, the website widget, and a shared service. It needs persistent storage and a backup plan for documents, embeddings, workspace settings, conversations, and stored provider configuration.

Development is more involved than the product pitch. The README tells contributors to run yarn setup, fill several generated environment files, and start the server, frontend, and collector separately. Our measured checkout at commit 72aabbd had 5,733 files, around 267,027 source lines, and 58.4 MB before dependencies. There was no build target in the tested package, so a successful install should not be mistaken for a production bundle check.

What happened when we ran it

Our sandbox installed 288 npm packages in 52 seconds and occupied 49 MB on disk. No build script or target existed, so we skipped that step rather than inventing a build result. Npm audit reported 0 known vulnerabilities across the installed dependency tree. The run used Node 22 on a fresh unprivileged Debian container with 3 CPUs, 8 GB of RAM, and no secrets.

Tests exited 1 after 14 seconds. Jest counted 180 passed and 2 failed out of 182 tests, while the suite line reported 34 failed and 10 passed out of 44. The visible failure at server/__tests__/utils/helpers/modelPricing/index.test.js:255 expected pricing.isCacheStale to be false. The log tail does not explain why many suites were marked failed despite only 2 failed tests, so that mismatch should remain a reported observation rather than a guessed diagnosis.

Retrieval defaults may be too fixed for mixed documents

Uploading files and receiving cited answers is AnythingLLM's central appeal. It supports common document formats, workspaces, drag-and-drop imports, watched documents, and several vector databases. Release 1.16.0, published August 13, 2026, improved large folder handling with lazy loading and preserved folder hierarchy in the upload panel. It only imports top-level files for now; the release notes describe recursive importing as later work, so buyers should not treat it as present.

Retrieval quality depends on choices made before the model writes an answer. Issue 5753 asks for sentence-based, semantic, recursive, and document-aware chunking because the current controls do not cover those needs. That request matters for code, tables, long manuals, and mixed reports where a generic text split can separate a claim from its context. Test a representative document set and inspect citations. A polished chat response is weak evidence that the right passages were retrieved.

Privacy depends on configuration and provider choice

AnythingLLM is MIT licensed and can run with local models, but local installation alone does not guarantee that data stays local. A cloud chat model receives prompts and retrieved passages. External embedding, speech, search, or agent tools receive the inputs required for their calls. Azure users should note issue 6172, which says the current Azure OpenAI provider requires a static API key and requests Entra ID managed identity support. That may conflict with an organization's credential policy.

Anonymous telemetry is enabled by default. The README says it records installation type, document add or remove events, provider and model tags, vector database type, and chat events without message or document contents. Operators can set DISABLE_TELEMETRY=true or turn it off in the interface. The same section lists other possible outbound connections, including configured providers, a model mirror CDN, and GitHub-hosted files. Verify network behavior against your own policy instead of treating the switch as a general offline mode.

Agents and MCP widen both usefulness and permissions

Beyond document questions, AnythingLLM has agent flows, scheduled jobs, model routing, memory, web browsing tools, image generation, and Model Context Protocol compatibility. Version 1.16.0 added /img, tool toggles during an agent session, scheduled-job tooling, and fixes around MCP definitions. These features turn a knowledge interface into software that can take actions, which calls for a stricter review of tool credentials, workspace access, and what an agent may send outside the instance.

GitHub recorded 65,259 stars, 327 combined issues and pull requests, and a push on August 27, 2026. Those numbers show current work, not a count of confirmed defects or a guarantee of stable provider behavior. AnythingLLM is worth trying because 52 seconds and 49 MB made our basic install inexpensive. The failed test run and open configuration requests are reasons to stage the exact retrieval and identity setup before using it as a shared source of answers.

Alternatives

ProjectWhat it isPick it when
Open WebUI gh↗A self-hosted chat interface for local and hosted model backends.pick this instead when the chat experience and broad model access matter more than AnythingLLM's document workspace model.
Dify gh↗A platform for building and operating model-backed applications and workflows.pick this instead when application workflows, prompt operations, and published apps matter more than a desktop client.
KhojA personal AI system for searching notes, chatting with documents, and running agents.pick this instead when a personal knowledge assistant is the main job and team administration is secondary.

Sources

  1. AnythingLLM repository and README
  2. AnythingLLM v1.16.0 release notes
  3. Allow multiple local AIs issue
  4. Additional text splitting options issue
  5. Azure managed identity request

More llm tools reviews

headcount · useagent · claude-skills · RAG_Techniques · ux-ui-agent-skills · dictionary-of-ai-coding · the whole board →