← Back to Discover

Text Generation Web UI

Runs language models locally through a chat interface and built-in API, with image attachments, tool use, LoRA training and image generation; open source and offline.

Local modelsFine-tuning

What it does

TextGen is a desktop application for running large language models on your own hardware. Portable builds for Linux, Windows and macOS come with CUDA, Vulkan, ROCm and CPU-only options, and the site describes setup as downloading, unzipping and double-clicking. Models in GGUF format are placed in a folder and detected automatically. The interface offers instruction and character chat modes, image attachments for vision models, uploaded text, PDF and .docx files, message editing and branching, and a notebook tab for free-form generation. Models can call tools during chat, including web search, page fetching and math, and MCP servers are supported. Additional backends include llama.cpp, ik_llama.cpp, Transformers, ExLlamaV3 and TensorRT-LLM, and models and backends can be switched without restarting. A local API with chat, completions and messages endpoints can stand in for the OpenAI and Anthropic APIs. The full installation adds LoRA fine-tuning, an image generation tab for diffusers models, and extensions for text-to-speech, voice input and translation. The project states that it works fully offline with zero telemetry and is released under AGPL-3.0. Besides the desktop app, it can run as a web UI in the browser through a Python install, a one-click installer or Docker.

Capabilities

  • Runs GGUF models locally, with portable builds for Linux, Windows and macOS
  • Chat with image attachments and uploaded text, PDF and .docx files
  • Local API compatible with OpenAI and Anthropic clients
  • Tool-calling with web search, plus MCP server support
  • LoRA fine-tuning and an image generation tab in the full installation
  • Offline operation with no telemetry

When to use it

  • You want to run models privately without a cloud service
  • Existing OpenAI or Anthropic client code should point at a local model
  • You want to try different backends and models from one interface
  • You want to fine-tune LoRAs on your own chat or text data