TL;DR
Running an LLM on your own hardware keeps inference private from the model vendor. It does not, by itself, keep the rest of the runtime private. Each app ships with its own defaults.
- Ollama keeps prompts and responses local; the app and the ollama.com website collect device, IP, and diagnostic metadata by default. Set
OLLAMA_NO_CLOUD=truefor the desktop client. - LM Studio has no telemetry. The privacy policy says “the application does not include telemetry or user-specific tracking.”
- llama.cpp has no documented telemetry; the only outbound traffic is a user-initiated model download via the
-hfflag. - vLLM collects anonymous usage stats by default; opt out with
VLLM_NO_USAGE_STATS=1. - AnythingLLM collects anonymous install, chat, and vector-DB events by default; opt out with
DISABLE_TELEMETRY=true(or the in-app Privacy toggle). - Hugging Face TGI has only opt-in OpenTelemetry tracing; nothing is collected unless
--otlp-endpointis set.
Why “local” is not “private”
Desktop apps still phone home for update checks, send crash reports through error-tracking SDKs, or fire anonymous usage events for product analytics. None of that changes whether the model runs on your hardware, but it does change the threat model. Defaults vary between tools and can shift between minor releases, so the discipline is to re-read each vendor’s privacy notice once per major upgrade and to keep a copy of the current version in an audit folder.
What each runtime sends by default
Ollama
The privacy policy is explicit that “Ollama runs on your local device. We do not collect, store, transmit, or have access to your prompts” or to your responses. Outside inference, the app and the website collect “Device and browser information,” “IP address and general location,” “Diagnostic metadata for troubleshooting (does not include prompt or response content),” “Cookies and similar technologies,” and “Model download metadata,” plus “such as app version and request counts” that are not prompt content.
For sensitive work, set OLLAMA_NO_CLOUD=true on the desktop client and add a host-firewall rule denying ollama.com and the update CDN during experiments that should stay offline.
LM Studio
The LM Studio app privacy policy puts it plainly: “the application does not include telemetry or user-specific tracking.” The v0.3.0 release notes go further: “A desktop application that runs entirely offline and has no telemetry.” The app still needs the network for two user-driven tasks: search and download (Hugging Face), and update checks (“Device and app information (app version and build, operating system) and IP address” via CDN). If even an update check is unacceptable, block LM Studio at the firewall when not actively searching or downloading.
llama.cpp
The llama.cpp README describes one outbound behaviour: model downloads initiated by the user with the -hf flag (for example llama-cli -hf ggml-org/Qwen3.5-0.8B-GGUF). Outside that user-driven call, the binary has no documented telemetry and no analytics endpoint. This is the runtime to reach for when “no network at all” is a hard requirement: build it from source, point it at model files already on disk, and never pass -hf.
vLLM
vLLM’s Usage Stats page is unambiguous: “vLLM collects anonymous usage data by default to help the engineering team better understand which hardware and model configurations are widely used.” The page also says “The collected data is transparent, does not contain any sensitive information,” and that “A subset of the data, after cleaning and aggregation, will be publicly released for the community’s benefit.” Set VLLM_NO_USAGE_STATS=1 in the shell that starts the server (or in the systemd unit / compose file). This is the highest-impact single change if you are running vLLM behind a VPN or on a server that should not generate analytics traffic.
AnythingLLM
The AnythingLLM README ships a “Telemetry & Privacy” section. It uses PostHog as the analytics provider and “contains a telemetry feature that collects anonymous usage information.” Events include “Type of your installation (Docker or Desktop),” “When a document is added or removed. No information about the document. Just that the event occurred,” “Type of vector database in use,” “Type of LLM provider & model tag in use,” and “When a chat is sent… only the event is sent - we have no information on the nature or content of the chat itself.” The README is also clear that “No IP or other identifying information is collected.”
The opt-out is a single env var: DISABLE_TELEMETRY=true in the server’s .env file or docker-compose.yml, plus an in-app toggle under sidebar > Privacy. The README also notes that “if telemetry is disabled we don’t collect anything. However, depending on your setup you may still see outbound connections” to your chosen LLM provider and to cdn.anythingllm.com for model pulls.
Hugging Face Text Generation Inference
Hugging Face TGI is the Rust-based inference server many stacks run instead of vLLM. The TGI README documents only one outbound behaviour: “text-generation-inference is instrumented with distributed tracing using OpenTelemetry. You can use this feature by setting the address to an OTLP collector with the —otlp-endpoint argument.” That is opt-in tracing to a collector you control, not background telemetry. Out of the box, no analytics endpoint is called.
What this means for your threat model
The six tools above split into three groups. No telemetry by default, no opt-out needed: LM Studio, llama.cpp, and Hugging Face TGI. These are the closest fit for an air-gapped or very high-sensitivity workload, and they are the same defaults we recommend in our best local AI for sensitive personal data guide. Telemetry by default, one env var to disable: AnythingLLM and vLLM. These are production-grade and ship with documented, testable opt-outs; verify with a packet capture on sensitive runs. Telemetry and cloud features by default, opt-out is partial: Ollama’s desktop app, which collects diagnostic metadata tied to an IP by default.
Honest caveat: defaults change. A minor release of any of these tools can ship with a new SDK, a new endpoint, or a new “anonymous” identifier category. Re-read the privacy notice before each major upgrade.
The bottom line
- Zero network calls today: llama.cpp against model files already on disk.
- A clean mainstream desktop UI: LM Studio.
- Production inference: vLLM with
VLLM_NO_USAGE_STATS=1, and AnythingLLM withDISABLE_TELEMETRY=true. - The Ollama ecosystem:
OLLAMA_NO_CLOUD=trueplus a host firewall that denies the app’s update and telemetry endpoints during sensitive runs.
Sources
- Ollama Privacy Policy - ollama.com/privacy
- LM Studio Desktop App Privacy Policy - lmstudio.ai/app-privacy
- LM Studio v0.3.0 release blog - lmstudio.ai/blog/lmstudio-v0.3.0
- llama.cpp README - github.com/ggerganov/llama.cpp
- vLLM Usage Stats - docs.vllm.ai/en/latest/usage/usage_stats/
- AnythingLLM README (Telemetry & Privacy) - github.com/Mintplex-Labs/anything-llm
- Hugging Face Text Generation Inference README - github.com/huggingface/text-generation-inference
Related on Intelligibberish
- Privacy - more on keeping prompts, weights, and metadata out of vendor hands.