agent-ops-patterns / gallery / AnythingLLM map / how it decides

How AnythingLLM decides

In AnythingLLM, plain code routes each message, gathers what the model sees and cuts it down to fit, while the AI model picks the agent's tools and decides when the agent is done: its first reply without a tool call is the answer. In web chat a person is asked before some tool actions, but MCP tool calls run without asking anyone.

From Mintplex-Labs/anything-llm at source version d7d68e75, mapped 2026-10-15. Each answer links the code where that decision is made.

What it does without asking you

How it decides it is done

Limits and memory

Other judgments

Three problems in the code

  1. 1. When the model asks for several tools at once, only the first runs

    On the shared OpenAI-compatible tool-calling path, if the model asks for more than one tool in a single reply, only the first is run and the others are dropped without the model being told. A request that needs several lookups or actions can come back with part of the work left undone unless the model notices and asks again.

    Not reported upstream, checked 2026-11-01.

    Where: tooled.js:370-381, tooled.js:454-455. How we checked: the code was re-read at the source version named above; the sentences were checked by an independent AI reviewer from another company (OpenAI Codex, read-only) on 2026-11-01; every sentence it found too wide was rewritten or removed, and every rewrite was checked again.

  2. 2. The agent does not use the workspace's chat history setting

    A workspace's chat history setting decides how much earlier conversation plain chat sends (20 when it is unset or zero). The agent does not read it: it always starts with the newest 20 saved exchanges, so a workspace set to send less, or more, gets 20 in agent mode.

    Not reported upstream, checked 2026-11-01.

    Where: index.js:908, index.js:89-102. How we checked: the code was re-read at the source version named above; the sentences were checked by an independent AI reviewer from another company (OpenAI Codex, read-only) on 2026-11-01; every sentence it found too wide was rewritten or removed, and every rewrite was checked again.

  3. 3. Chats are marked as processed for memory even when the memory pass did not run

    Every 3 hours by default, a background job reads a person's recent chats to pick out facts worth remembering. Once a group of chats passes the first two checks it is marked processed whatever happened, so if the model call fails or no model is set up, the job does not come back to those chats on its next run. Only the latest 20 are read, so in a larger group the older chats are marked processed without being read.

    Not reported upstream, checked 2026-11-01.

    Where: extract-memories.js:178-182, extract-memories.js:34-38, memory-extraction-utils.js:83-88. How we checked: the code was re-read at the source version named above; the sentences were checked by an independent AI reviewer from another company (OpenAI Codex, read-only) on 2026-11-01; every sentence it found too wide was rewritten or removed, and every rewrite was checked again.

See the full map →

This card was taken from the published AnythingLLM map at one commit and covers only decisions shown there; it did not look at the web frontend or the document collector except where they reach the server, or at the 11 decisions left out of that edition, and no AnythingLLM code was run to make it.

Map: edition with 11 of 117 cards left out (published 2026-10-30) · taken from the full map · card data: gallery/cards/anythingllm.json. Found something wrong? Use the correction form.