AI Coding Tools

AnythingLLM Ollama Model Not Found: Empty Shelf, Wrong Door

Sage Holloway

Sage Holloway

18 min read

Go back to blog

SHARE

AnythingLLM Ollama Model Not Found: Empty Shelf, Wrong Door
AnythingLLM ollama model not found hero with a frozen blank picker and a sealed local API port

The picker stays blank until the daemon is serving and at least one model is pulled.

You click the dropdown and it does not move. The log mentions a fetch that never came back. You restart the app. You paste another address. You start treating a grey rectangle like a personality test. An afternoon can disappear into Save buttons and forum threads that all sound almost like your setup. None of them start at the moment the list refused to open.

AnythingLLM shows model not found when it cannot reach a serving Ollama API or the library is empty. On desktop, run the Ollama daemon with ollama serve or the tray app, pull at least one model, then set the base URL to http://127.0.0.1:11434. Docker cannot use localhost: use http://host.docker.internal:11434 on Windows/macOS or http://172.17.0.1:11434 on Linux. Confirm with a browser or /api/tags before saving the GUI.

That is the AnythingLLM ollama model not found loop: two apps, wrong order.

You already installed both apps. The tray icon is sitting there. You open AnythingLLM, which is the local chat and document app, go into settings, and the model list is a grey rectangle that will not open.

You paste localhost. You hit save. The log says TypeError: fetch failed. Twenty minutes later you are googling the error as if it were a unique curse.

Then you pull one model, you load http://127.0.0.1:11434 in a browser, you paste that same URL with no /v1, and the picker fills. Same two apps. Different order.

Ollama is the local model runner. It keeps weights on disk and serves an HTTP API, which is a small web service other apps can call, on port 11434. AnythingLLM is only a client. It does not invent a library. If you have ever hit this wall, the fix is almost never a secret AnythingLLM toggle. It is prove the daemon, prove a pulled model, then paste the URL that matches Desktop versus Docker.

Last verified: 5 September 2026 (NotebookLM sources and official docs; no live CLI verify)

Table of contents

  1. Pull a model before AnythingLLM or the picker freezes

  2. Desktop loopback: serve vs run, then paste 127.0.0.1:11434

  3. Docker cannot use localhost: host.docker.internal vs 172.17.0.1

  4. Invalid model name is a tag mismatch, not a missing AnythingLLM feature

  5. LLM vs embedder: the same Ollama dropdown is two jobs

  6. After the URL is right: RAM, firewall, and macOS path hijack

  7. FAQ

This will not work if Ollama is not installed at all. If the daemon is missing on Windows, stop and use the Windows setup path first. If you are trying to hang a laptop daemon off AnythingLLM Cloud, skip to the last FAQ; that pairing is a different, unsupported job.

Pull a model before AnythingLLM or the picker freezes

You walk up to a hotel front desk with an empty reservation book. The clerk does not shrug and offer you a blank page to invent a guest. They close the ledger and lock the drawer. You can argue with the clerk. You can tap the glass.

You can demand a nicer lobby. The drawer stays shut until someone writes a name in the book. That clerk is not broken. The book is empty.

AnythingLLM ollama support threads treat that freeze as a network bug. Sometimes it is. Often it is the empty book. Why does the log sound like a dead port, then? Because the client failed to build a menu, and empty was never given a sentence.

Teaching reconstruction of AnythingLLM Connecting to Ollama with a disabled blank model picker

If Ollama has no pulled models, AnythingLLM disables the picker instead of listing an empty library.

I tried this the wrong way on a clean machine. I opened AnythingLLM first, pointed it at Ollama, and waited for the dropdown to populate like a cloud console. It did not. The UI went inert. I chased URLs for half an hour. The host terminal had never downloaded a single model.

What a disabled picker and undici TypeError: fetch failed mean

Undici is the HTTP client Node uses under the hood. When AnythingLLM asks Ollama for /models and the library is empty, GitHub issue #2523 shows the picker disabling completely instead of rendering an empty list. The log talks like a network failure: TypeError: fetch failed. It does not say "you have zero models."

That is why the error feels like a base URL problem. The client failed to build a menu. The menu code did not have a graceful empty state. Match the symptom before you edit more GUI fields.

Error-to-fix table for AnythingLLM blank Ollama picker, desktop fetch failed, and Docker connection refused

Match the symptom to serve, pull, or the Docker host URL before editing more GUI fields.

If the picker is blank or disabled, pull a model, then list it. If Desktop fetch failed and you have been living in ollama run, start the tray app or ollama serve. If Docker reports ECONNREFUSED, localhost is the container; switch to host.docker.internal or 172.17.0.1.

ollama pull then ollama list before opening the GUI

ollama pull llama3.2
ollama list

Run those in a host terminal, not inside AnythingLLM. ollama pull downloads a tagged model into the local library. ollama list prints what Ollama currently knows about. If llama3.2 is not your pick, any pulled tag works. The point is one real name on disk before the GUI asks for a list.

Open AnythingLLM after ollama list shows a row. Configuring the client against an empty registry is how you get a frozen dropdown and an undici stack that looks like a dead port.

If you want catalog depth, tags, and cleanup, that lives on Ollama model list. This page only uses list as a pre-GUI check.

Desktop loopback: serve vs run, then paste 127.0.0.1:11434

The AnythingLLM ollama integration on a native desktop is a loopback handshake. Loopback means the machine talking to itself, usually as 127.0.0.1 or localhost. Official Ollama API docs serve that API by default at http://localhost:11434 / http://127.0.0.1:11434. AnythingLLM's connection debugging page wants you to prove that listener before you blame the GUI.

The picker looks like a product bug. Empty is a legal state. The picker just has no polite way to say so.

The tray / ollama serve daemon is the API AnythingLLM talks to

So what is AnythingLLM actually calling? A daemon: a background process that keeps listening after you close the window you typed in. Ollama's daemon is the tray app, or this command:

ollama serve

ollama run llama3.2 does not start that API. AnythingLLM's troubleshooting docs are blunt: ollama run is for the terminal chat loop. Close that terminal and you have not left a server behind. The GUI has nothing to call.

If you have a tray icon, leave it running. If you only have a shell, keep ollama serve in a window you will not close. Bind-address and environment catalog depth belongs on http://127.0.0.1:11434. Here you only need the daemon up.

Mentioning OLLAMA_HOST once, because people paste LAN recipes into a same-machine desktop: Ollama binds 127.0.0.1:11434 by default. Changing OLLAMA_HOST exposes the API beyond loopback. You do not need that for Desktop AnythingLLM on the same OS. Save LAN exposure for a deliberate network design, not a first save click.

Smoke test http://127.0.0.1:11434 and /api/tags

Prove the API on the host before you touch the GUI.

  1. Open a browser to http://127.0.0.1:11434.

  2. If the page fails, the daemon is not serving. Start the tray or ollama serve and retry.

  3. Then hit the tags endpoint, which lists models the API can see:

curl http://127.0.0.1:11434/api/tags

You want JSON that includes the tag you pulled. If /api/tags is empty, AnythingLLM will behave as if the library does not exist, because from the API's point of view it does not.

The spaced search http 127.0 0.1 11434 is the same address. Type it with dots: http://127.0.0.1:11434.

Paste the native base URL (no /v1) in Connecting to Ollama

In AnythingLLM, open Settings, then Ollama LLM, then Connecting to Ollama. The field labeled Ollama URL on Desktop is:

http://127.0.0.1:11434

Do not append /v1. That suffix forces OpenAI-compatible mode on the native Ollama URL. OpenClaw's provider docs warn that http://host:11434/v1 breaks native streaming and tool calling. The hygiene rule transfers: paste the native base, not the OpenAI path. Do not copy OpenClaw apiKey fields into AnythingLLM. Those keys are another product's config block.

Teaching reconstruction of AnythingLLM Connecting to Ollama with the native 127.0.0.1:11434 URL

On Desktop, the Ollama URL is http://127.0.0.1:11434 with no /v1 path.

Auto-detect in the docs sounds seamless. Treat it as a hint, not a contract. If the field is empty or wrong, paste the loopback URL yourself and save.

Tim Carambat, who builds AnythingLLM, walks pull, open the app, set the Ollama URL, and chat locally. Watch it as motion, then come back to the sourced URL. Creator shortcuts are not a second README.

https://www.youtube.com/watch?v=IJYC6zf86lU

CoderBryan's short connect path is the same Desktop handshake without the longer onboarding tour.

https://www.youtube.com/watch?v=5eYrJBZwOZE

Docker cannot use localhost: host.docker.internal vs 172.17.0.1

Here is the thing people fight for an hour. Confused? Fair enough. The word localhost changes meaning the moment you cross a container wall.

Inside a container, localhost and 127.0.0.1 are the container. They are not your laptop. AnythingLLM running in Docker is standing in a hotel room dialing 0 for the front desk. The 0 on that phone only rings the nightstand in the same room. The actual desk has a different number, printed on a card most install guides never put next to the Ollama field.

Official AnythingLLM ollama integration docs spell the rewrite. On Windows or macOS Docker, replace http://localhost:11434 with http://host.docker.internal:11434. On Linux, replace it with http://172.17.0.1:11434. Auto-discovery is not reliable here. Write the matrix URL. Do not wait for seamless detection.

Diagnostic flowchart of Desktop 127.0.0.1 versus Docker host.docker.internal and Linux 172.17.0.1

Docker cannot use localhost. Pick the host URL for your OS, then prove /api/tags.

Prove Ollama on the host first (ollama serve, pull, /api/tags on the host). Then paste the container's view of that host. Two different addresses for two different rooms.

Windows and macOS: http://host.docker.internal:11434

host.docker.internal is Docker Desktop's hostname for the machine running Docker. From inside the AnythingLLM container, that name should reach Ollama on the host's 11434.

Paste this as the Ollama URL in Connecting to Ollama when AnythingLLM is the container and Ollama is native on Windows or macOS:

http://host.docker.internal:11434

If the container still cannot connect, the host daemon may be bound only to 127.0.0.1 in a way the VM cannot reach. That is the moment to read the Ollama FAQ bind notes and the serve-side guide, not to invent a third GUI field.

Linux: http://172.17.0.1:11434

On typical Linux Docker, 172.17.0.1 is the docker0 bridge gateway, the host as seen from a default bridge container.

http://172.17.0.1:11434

Debian and Ubuntu threads (AnythingLLM #1745) add a second requirement: Ollama on the host must accept traffic from that bridge. Binding only to 127.0.0.1 means the container's packets never land. Set OLLAMA_HOST=0.0.0.0 on the host so the API listens on all interfaces. That is how a container reaches the host. It is not an invitation to publish Ollama on the public internet.

Comparison table of AnythingLLM Ollama base URLs for Desktop and Docker on Windows, macOS, Linux, and Ubuntu 24.04

Paste the matrix URL that matches OS and install method. Auto-discovery is not reliable in Docker.

That graphic is the ollama base url matrix: OS, AnythingLLM format, Ollama format, then the paste target.

Ubuntu 24.04 --add-host plus OLLAMA_HOST=0.0.0.0

Ubuntu 24.04 is the exception lane. Issue #585 reports that 172.17.0.1 does not always route until the container is started with:

--add-host=host.docker.internal:host-gateway

Then you can use http://host.docker.internal:11434 from inside that container, the same hostname Windows and macOS already had. Keep OLLAMA_HOST=0.0.0.0 on the host so the gateway has something listening.

If you still see TypeError: fetch failed or ECONNREFUSED from Ubuntu or Debian Docker, you are usually still on the host-binding problem, not a missing AnythingLLM feature.

Sources disagree about whether AnythingLLM's bundled Ollama is enough. Prefer a separate host install when GPU libraries fail to extract from the CDN. Do not assume the desktop app always ships a working engine.

A Docker instance that cannot see host models is a network isolation demo, not a mysterious Ollama bug. This Keep walkthrough is the failure in motion.

https://www.youtube.com/watch?v=5pnqeneaQsc

AnythingLLM can run in Docker and still talk to Ollama. It still needs the host URL, not localhost.

https://www.youtube.com/watch?v=xskWInyN514

If you wanted a different frontend entirely, Open WebUI with Ollama is a sibling product. You do not need it for this handshake.

Invalid model name is a tag mismatch, not a missing AnythingLLM feature

You can get past the picker and still blow up on the first chat. The error gathering model components error: 400 bad request: invalid model name is Ollama rejecting a name or tag it does not have. AnythingLLM sent a string. Ollama looked in the library. The string did not match.

AnythingLLM sent a name Ollama does not have

Common ways this happens:

  • The GUI still holds a leftover tag from a previous machine (llama3:70b when you only pulled llama3.2).

  • A typo in a custom name (llama-3-8b-instruct when the local tag is llama3.1).

  • A model you thought you pulled, but ollama list never showed it.

Fix it on the Ollama side first. ollama list is the source of truth for names. Paste a tag that appears there. If the failure is an Ollama process crash or unable-to-load after a valid name, that recovery lives on Ollama 500 internal server error, not on this picker page.

Modelfile create -f cwd failures belong on the Modelfile guide

If you are compiling a custom model, a Modelfile is Ollama's recipe file. ollama create -f wants that file in the current working directory. GitHub ollama#9580 shows a misleading invalid model name when the Modelfile is somewhere else. Move the file into the directory you are running from, then create again.

That compile path is Ollama Modelfile. This URL only names the mismatch so you do not rebuild AnythingLLM looking for a missing import button.

LLM vs embedder: the same Ollama dropdown is two jobs

What about documents? Chat is one job. Turning those files into vectors is another. A vector is a list of numbers that represents meaning, used later to find similar passages. AnythingLLM calls the second job the embedder. The Ollama embedder settings reuse Connecting to Ollama, including the same style of model dropdown.

Official Ollama Embedder docs warn that Ollama's /models list mixes chat LLMs and embedding models in one selector. If you pick a chat model as the embedder, indexing can fail silently. The chat box still looks healthy. Search over your PDFs does not.

Chat LLM vs embedding model in one selector

In Ollama LLM, pick a chat model you actually pulled, such as llama3.2. In Ollama Embedder, pick an embedding model. The docs call out llama2 as an LLM, not an embedder. nomic-embed-text is the embedding example Feinberg-style onboarding and the embedder page both use.

Teaching reconstruction of AnythingLLM Ollama Embedder with llama2 marked as an LLM and nomic-embed-text as the embedder

The same selector lists chat models and embedders. Use an embedding model for documents.

Pull the embedder the same way you pulled the chat model:

ollama pull nomic-embed-text
ollama list

Then select nomic-embed-text under Ollama Embedder, Connecting to Ollama. Use the same base URL rules as chat: Desktop loopback, or the Docker host URL, no /v1.

Do not index documents with a chat model

A chat LLM generates tokens. An embedding model maps text into a space you can search. Using llama2 (or llama3.2) as the embedder is the silent-fail case the docs exist to prevent. Chunk size, overlap, and from-scratch RAG architecture belong on a dedicated RAG spoke. Here the job is: two selectors, two model types, same Ollama API.

Chat configuration for the LLM side is also in Connecting to Ollama for the LLM. Read both pages once. They look similar on purpose.

After the URL is right: RAM, firewall, and macOS path hijack

But here is the thing.

You can paste the correct URL, pull a model, and still watch the library vanish, the process die, or the first prompt refuse to load. Those failures are host resources and path collisions. They are not a second base URL.

If the model needs the GPU and is sitting on CPU, that performance path is Ollama not using GPU. This section only covers load-fail after a good URL.

Memory ceiling, context 4096, and keep-alive

Ollama's FAQ sets a default context window of 4096 tokens. You override it with OLLAMA_CONTEXT_LENGTH (or num_ctx on a request). Some Mac error blogs quote a 2048 to 8192 range depending on the model. When those disagree, use the FAQ: 4096 unless you set the variable.

On Apple Silicon, llmcheck (a Mac-focused error guide, not the Ollama FAQ) describes a 75% RAM ceiling: model weights plus the KV cache, which is the memory that holds conversation context, should stay under about three quarters of system RAM. If you load a model that wants more, you get insufficient memory, not a blank picker. Close other apps, pick a smaller parameter size, or use a smaller quantization. That 75% figure is blog-sourced. Treat it as a Mac planning heuristic, not an Ollama FAQ constant.

Keep-alive is how long a loaded model stays in RAM after the last request. Default is 5 minutes. Unload immediately with:

ollama stop llama3.2

Concurrency defaults from the same FAQ, if AnythingLLM starts queueing: OLLAMA_MAX_LOADED_MODELS defaults to 3 times GPU count, or 3 on CPU; OLLAMA_NUM_PARALLEL defaults to 1; OLLAMA_MAX_QUEUE defaults to 512. You rarely need those on day one. You need them when two workspaces fight over the same 8GB.

Windows Defender, AVX fallback, and CDN GPU libs

On Windows, GitHub ollama#2569 records loopback sockets reset with wsarecv when Defender or the firewall treats Ollama as a stranger. Confidence on that report is medium. If Desktop loopback dies only on Windows, whitelist Ollama in Defender and retry http://127.0.0.1:11434.

The same issue tracked an AVX-only crash 0xc000001d on early Windows builds: GPU libraries were compiled with AVX2 while the CPU only had AVX. Later Ollama builds added the fallback. If you are on an old installer and the process dies at query time, upgrade Ollama before you rebuild AnythingLLM.

AnythingLLM Desktop on Windows, since v1.11.0, minimizes to the tray instead of quitting. If an updater says the app cannot close, use Quit AnythingLLM from the tray icon. That is documented on the Windows desktop install page.

If bundled GPU libraries never arrived from the CDN, the same page tells you to place the .7z binaries into %APPDATA%\Roaming\anythingllm-desktop\storage\engines\ollama\lib\ollama and create a .ollama-version file in %APPDATA%\Roaming\anythingllm-desktop\storage\engines\ollama, then restart. Prefer a separate Ollama install when that extract path keeps failing.

Start Ollama first on Mac, or pin OLLAMA_MODELS

Default libraries, from the Ollama FAQ, are:

  • macOS: ~/.ollama/models

  • Linux: /usr/share/ollama/.ollama/models

  • Windows: C:\Users\%username%\.ollama\models

Override any of those with OLLAMA_MODELS pointed at a directory you choose.

Table of default Ollama model paths on macOS, Linux, and Windows with the macOS AnythingLLM hijack note

Default libraries live under .ollama/models. On Mac, start Ollama first or pin OLLAMA_MODELS.

On macOS, AnythingLLM Desktop can redirect Ollama lookups to ~/Library/Application Support/anythingllm-desktop/storage/models/ollama while the app is open. That report is medium confidence (anything-llm#3903). Models "disappear" from ollama list in Terminal because the two apps are not looking at the same folder.

Start the Ollama tray first. Then open AnythingLLM. To pin the library for good, set OLLAMA_MODELS to the directory you actually use:

export OLLAMA_MODELS="$HOME/.ollama/models"

Make that export permanent in your shell profile if the hijack keeps returning. Do not keep two mystery copies of the same weights and guess which one the picker sees.

FAQ

Why is my AnythingLLM with Ollama giving me censored results?

Safety behavior comes from the base model you pulled, not from an AnythingLLM "censor" switch. This research pack does not document a supported way to lift those alignments inside AnythingLLM. If the job is choosing a different model family, use best Ollama models. Do not expect the connection URL to change refusals.

Why does AnythingLLM say Ollama model not found?

AnythingLLM cannot see a serving API, or the API's library does not contain the tag it asked for. Prove ollama serve or the tray, prove ollama list, prove /api/tags, then paste http://127.0.0.1:11434 on Desktop or the Docker host URL on a container. A 400 invalid model name after that is a tag mismatch, not a missing AnythingLLM feature.

Why is the AnythingLLM model picker disabled or blank?

GitHub #2523: an empty Ollama library disables the picker and can throw undici TypeError: fetch failed instead of an empty-state message. Run ollama pull llama3.2 (or another real tag), confirm with ollama list, then reopen Connecting to Ollama.

Why does AnythingLLM Docker fail with http://127.0.0.1:11434?

Inside the container, 127.0.0.1 is the container. Use http://host.docker.internal:11434 on Windows and macOS Docker, or http://172.17.0.1:11434 on Linux. Ubuntu 24.04 may need --add-host=host.docker.internal:host-gateway plus OLLAMA_HOST=0.0.0.0 on the host.

What is the difference between ollama run and ollama serve for AnythingLLM?

ollama run chats in that terminal. It does not start the HTTP API AnythingLLM needs. ollama serve or the tray daemon does. AnythingLLM's troubleshooting page says you will not be able to use the Ollama API with ollama run alone.

Which base URL should AnythingLLM use for Ollama?

Desktop native: http://127.0.0.1:11434. Docker on Windows/macOS: http://host.docker.internal:11434. Docker on Linux: http://172.17.0.1:11434. Ubuntu 24.04 Docker: add host.docker.internal via --add-host, then use that hostname. Never append /v1 to the native URL.

How do I verify Ollama is reachable before configuring AnythingLLM?

Open http://127.0.0.1:11434 in a browser on the host, then curl http://127.0.0.1:11434/api/tags. You want a page load plus JSON that lists pulled tags. Only after that should you save Connecting to Ollama. From Docker, smoke-test from inside the container against the host URL, not against container localhost.

Why did my Ollama models disappear after launching AnythingLLM on Mac?

While AnythingLLM Desktop is open, Ollama may look under ~/Library/Application Support/anythingllm-desktop/storage/models/ollama instead of ~/.ollama/models (#3903). Start Ollama first, or set OLLAMA_MODELS to your real directory so both apps share one shelf.

Can I connect a local Ollama instance to AnythingLLM Cloud?

Official troubleshooting says that pairing is not supported or recommended, because it means exposing local ports to the public internet. Tunnel tools can be made to work. Official support will not help you operate that tunnel. Keep Cloud and laptop daemons on separate jobs.

Pick one machine you can sit in front of. Start the Ollama tray or ollama serve. Pull llama3.2 if the library is empty. Load http://127.0.0.1:11434 and /api/tags until you see the tag. Then paste the matrix URL that matches Desktop versus Docker, with no /v1. Open the picker only after that loop.

If the dropdown still stares back, you are no longer in URL-guessing. You are in RAM, Defender, or the Mac path collision. Those are slower, but they are finite.

Clients will keep multiplying. AnythingLLM, other desktop shells, agents that want tools. The handshake will not get more exotic. Serve, pull, prove, paste. Whether Docker auto-detect ever becomes trustworthy: genuinely not sure yet. I would not wait on it.

If you want the next local troubleshooting loop without hunting GitHub issues, the newsletter is the quiet way in.

Until then...

  • Sage

PS. I started the chat app before the model runner on a Mac once, pulled what I thought was a fresh download, closed everything, and Terminal showed an empty library. The weights were in Application Support, sitting in a folder I had never chosen. I had been arguing with a second bookshelf the whole time.

Related reading

  • Ollama on 127.0.0.1:11434: serve, bind, and env catalog. This page only pastes the AnythingLLM field.

  • Ollama 500 internal server error: crash and unable-to-load recovery after a valid tag.

  • Ollama Modelfile: create -f and GGUF compile when the 400 is a recipe path, not a picker.

  • Open WebUI and Ollama: a different UI. Skip it if AnythingLLM is already the client.

  • Best Ollama models: model choice. Censorship here is provider alignment, not a URL fix.

  • Ollama model list: library catalog depth. This page only uses ollama list as a gate.

  • Ollama not using GPU: performance after the handshake works.

  • Set up Ollama on Windows: install when the daemon does not exist yet.

Official docs worth keeping open: Ollama connection troubleshooting, Ollama FAQ, and Ollama API introduction.

Author

Practical guides, tool teardowns & AI engineering workflows.