{"id":35690917,"url":"https://github.com/libre-webui/libre-webui","last_synced_at":"2026-02-03T23:19:06.842Z","repository":{"id":301434152,"uuid":"986415538","full_name":"libre-webui/libre-webui","owner":"libre-webui","description":"Privacy-first web interface for local AI models. Clean, minimal UI for Ollama with extensible plugin system. No data leaves your device.","archived":false,"fork":false,"pushed_at":"2026-01-31T23:37:50.000Z","size":12117,"stargazers_count":22,"open_issues_count":0,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-01T08:23:15.688Z","etag":null,"topics":["ai","ai-interface","chat-interface","enterprise-services","foss","libre","llm","local-ai","minimal-ui","nodejs","ollama","open-source","plugin-system","privacy-first","react","self-hosted","typescript","ui","webui"],"latest_commit_sha":null,"homepage":"https://librewebui.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/libre-webui.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"libre-webui"}},"created_at":"2025-05-19T15:16:10.000Z","updated_at":"2026-01-29T01:46:29.000Z","dependencies_parsed_at":"2025-12-16T23:00:43.413Z","dependency_job_id":null,"html_url":"https://github.com/libre-webui/libre-webui","commit_stats":null,"previous_names":["libre-webui/libre-webui"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/libre-webui/libre-webui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-webui%2Flibre-webui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-webui%2Flibre-webui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-webui%2Flibre-webui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-webui%2Flibre-webui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libre-webui","download_url":"https://codeload.github.com/libre-webui/libre-webui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libre-webui%2Flibre-webui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29060925,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T23:14:54.203Z","status":"ssl_error","status_checked_at":"2026-02-03T23:14:50.873Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-interface","chat-interface","enterprise-services","foss","libre","llm","local-ai","minimal-ui","nodejs","ollama","open-source","plugin-system","privacy-first","react","self-hosted","typescript","ui","webui"],"created_at":"2026-01-05T23:12:40.890Z","updated_at":"2026-02-03T23:19:06.836Z","avatar_url":"https://github.com/libre-webui.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n\n# Libre WebUI\n\n### Privacy-First AI Chat Interface\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eSelf-hosted • Open Source • Extensible\u003c/strong\u003e\u003cbr\u003e\n  \u003csub\u003eEnterprise support by \u003ca href=\"https://kroonen.ai\"\u003eKroonen AI\u003c/a\u003e\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003cimg src=\"./screenshot.png\" width=\"100%\" alt=\"Dark Theme\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/package-json/v/libre-webui/libre-webui\" alt=\"Version\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/libre-webui/libre-webui\" alt=\"License\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/languages-25-blue\" alt=\"25 Languages\"\u003e\n  \u003ca href=\"https://github.com/libre-webui/libre-webui\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/libre-webui/libre-webui?style=social\" alt=\"Stars\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/GDPR-Ready-green\" alt=\"GDPR Ready\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/HIPAA-Compatible-blue\" alt=\"HIPAA Compatible\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/SOC_2-Ready-purple\" alt=\"SOC 2 Ready\"\u003e\n\u003c/p\u003e\n\n[Website](https://librewebui.org) • [Documentation](https://docs.librewebui.org) • [GitLab](https://git.kroonen.ai/libre-webui/libre-webui) • [𝕏](https://x.com/librewebui) • [Sponsor](https://github.com/sponsors/libre-webui) • [Get Started](#quick-start)\n\n\u003c/div\u003e\n\n---\n\n## Why Libre WebUI?\n\nA simple, self-hosted interface for AI chat. Run it locally with Ollama, connect to OpenAI, Anthropic, HuggingFace, or 10+ providers—all from one UI.\n\n- **Your data stays yours** — Zero telemetry, fully self-hosted\n- **Extensible plugin system** — Ollama, OpenAI, Anthropic, and any OpenAI-compatible API\n- **Simple \u0026 focused** — Keyboard shortcuts, dark mode, responsive design\n\n---\n\n## Features\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\"\u003e\n\n### Core Experience\n\n- Real-time streaming chat\n- Dark/light themes\n- VS Code-style keyboard shortcuts\n- Mobile-responsive design\n- **Native Desktop App** — macOS (Windows \u0026 Linux coming soon)\n\n### AI Providers\n\n- **Local**: Ollama (full integration)\n- **Cloud**: OpenAI, Anthropic, Google, Groq, Mistral, OpenRouter, HuggingFace, and more\n- **HuggingFace Hub** — 1M+ models for chat, TTS, image gen, embeddings, STT\n- **Image Generation** — ComfyUI with Flux models\n- **Plugin System** — Add any OpenAI-compatible API via JSON config\n- **Plugin Variables** — Per-plugin configurable settings (temperature, endpoint, etc.)\n\n\u003c/td\u003e\n\u003ctd width=\"50%\"\u003e\n\n### Advanced Capabilities\n\n- **Document Chat (RAG)** — Upload PDFs, chat with your docs\n- **Custom Personas** — AI personalities with memory\n- **Interactive Artifacts** — Live HTML, SVG, code preview\n- **Text-to-Speech** — Multiple voices and providers\n- **SSO Authentication** — GitHub, Hugging Face OAuth\n\n### Security\n\n- AES-256-GCM encryption\n- Role-based access control\n- Enterprise compliance ready\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## Quick Start\n\n**Requirements:** [Ollama](https://ollama.ai) (for local AI) or API keys for cloud providers\n\n### One Command Install\n\n```bash\nnpx libre-webui\n```\n\nThat's it. Opens at `http://localhost:8080`\n\n### Homebrew (macOS)\n\n```bash\n# CLI version (includes backend server)\nbrew tap libre-webui/tap\nbrew install libre-webui\nlibre-webui\n\n# Or desktop app\nbrew install --cask libre-webui\n```\n\nRun as a background service:\n\n```bash\nbrew services start libre-webui\n```\n\n### Docker\n\n| Setup                                     | Command                                                      |\n| ----------------------------------------- | ------------------------------------------------------------ |\n| Bundled Ollama (CPU)                      | `docker-compose up -d`                                       |\n| Bundled Ollama (NVIDIA GPU)               | `docker-compose -f docker-compose.gpu.yml up -d`             |\n| External Ollama (already running on host) | `docker-compose -f docker-compose.external-ollama.yml up -d` |\n\nAccess at `http://localhost:8080`\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDevelopment builds (unstable)\u003c/strong\u003e\u003c/summary\u003e\n\n\u003e **Warning:** Development builds are automatically generated from the `dev` branch and may contain experimental features, breaking changes, or bugs. Use at your own risk and do not use in production environments.\n\n| Setup                             | Command                                                          |\n| --------------------------------- | ---------------------------------------------------------------- |\n| Dev + Bundled Ollama (CPU)        | `docker-compose -f docker-compose.dev.yml up -d`                 |\n| Dev + Bundled Ollama (NVIDIA GPU) | `docker-compose -f docker-compose.dev.gpu.yml up -d`             |\n| Dev + External Ollama             | `docker-compose -f docker-compose.dev.external-ollama.yml up -d` |\n\nDevelopment builds use separate data volumes (`libre_webui_dev_data`) to prevent conflicts with stable installations.\n\nTo pull the latest dev image manually:\n\n```bash\ndocker pull librewebui/libre-webui:dev\n```\n\n\u003c/details\u003e\n\n### Kubernetes (Helm)\n\n```bash\nhelm install libre-webui oci://ghcr.io/libre-webui/charts/libre-webui\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHelm configuration options\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\n# With external Ollama\nhelm install libre-webui oci://ghcr.io/libre-webui/charts/libre-webui \\\n  --set ollama.bundled.enabled=false \\\n  --set ollama.external.enabled=true \\\n  --set ollama.external.url=http://my-ollama:11434\n\n# With NVIDIA GPU support\nhelm install libre-webui oci://ghcr.io/libre-webui/charts/libre-webui \\\n  --set ollama.bundled.gpu.enabled=true\n\n# With Ingress\nhelm install libre-webui oci://ghcr.io/libre-webui/charts/libre-webui \\\n  --set ingress.enabled=true \\\n  --set ingress.hosts[0].host=chat.example.com\n```\n\nSee [helm/libre-webui/values.yaml](helm/libre-webui/values.yaml) for all configuration options.\n\n\u003c/details\u003e\n\n### Development Setup\n\n```bash\n# 1. Clone the repo\ngit clone https://github.com/libre-webui/libre-webui\ncd libre-webui\n\n# 2. Configure environment\ncp backend/.env.example backend/.env\n\n# 3. Install and run\nnpm install \u0026\u0026 npm run dev\n```\n\n### Configuration\n\nEdit `backend/.env` to add your API keys:\n\n```env\n# Local AI (Ollama)\nOLLAMA_BASE_URL=http://localhost:11434\n\n# Cloud AI Providers (add the ones you need)\nOPENAI_API_KEY=sk-...\nANTHROPIC_API_KEY=sk-ant-...\nHUGGINGFACE_API_KEY=hf_...\n```\n\n---\n\n## Plugin System\n\nPlugins let you connect any OpenAI-compatible (or custom) API to Libre WebUI using a simple JSON file. Built-in plugins are included for OpenAI, Anthropic, Google Gemini, Groq, Mistral, OpenRouter, HuggingFace, and more.\n\n### How It Works\n\nA plugin is a JSON config file stored in the `plugins/` directory. Each plugin defines:\n\n- **Endpoint** — The API URL to send requests to\n- **Auth** — How to authenticate (header name, prefix, env variable fallback)\n- **Model map** — Which models the plugin supports\n- **Capabilities** — Optional multi-capability support (chat, TTS, image generation, embeddings, STT)\n- **Variables** — Per-plugin configurable settings users can adjust from the UI\n\n### Example Plugin\n\n```json\n{\n  \"id\": \"my-provider\",\n  \"name\": \"My Provider\",\n  \"type\": \"completion\",\n  \"endpoint\": \"https://api.example.com/v1/chat/completions\",\n  \"auth\": {\n    \"header\": \"Authorization\",\n    \"prefix\": \"Bearer \",\n    \"key_env\": \"MY_PROVIDER_API_KEY\"\n  },\n  \"model_map\": [\"model-a\", \"model-b\"],\n  \"variables\": [\n    {\n      \"name\": \"temperature\",\n      \"type\": \"number\",\n      \"label\": \"Temperature\",\n      \"description\": \"Controls randomness.\",\n      \"default\": 0.7,\n      \"min\": 0,\n      \"max\": 2\n    }\n  ]\n}\n```\n\n### Plugin Management\n\nPlugins are managed from **Settings \u003e Plugins** in the UI where you can:\n\n- **Upload** a JSON plugin file or paste JSON directly\n- **Browse HuggingFace** to discover and import models\n- **Activate/deactivate** plugins\n- **Set API keys** per plugin (encrypted at rest with AES-256-GCM, with env variable fallback)\n- **Configure variables** — override endpoint, temperature, max tokens, and other settings per plugin\n- **Export** plugins as JSON\n\n### Plugin Variables\n\nVariables are typed settings defined in the plugin JSON that users can configure from the UI. Supported types: `string`, `number`, `boolean`, `select`. Sensitive variables (like API keys) are encrypted in the database. Variable values are stored per-user.\n\n### Multi-Capability Plugins\n\nA single plugin can support multiple capabilities. For example, OpenAI's plugin handles both chat completions and TTS:\n\n```json\n{\n  \"id\": \"openai\",\n  \"type\": \"completion\",\n  \"endpoint\": \"https://api.openai.com/v1/chat/completions\",\n  \"capabilities\": {\n    \"tts\": {\n      \"endpoint\": \"https://api.openai.com/v1/audio/speech\",\n      \"model_map\": [\"tts-1\", \"tts-1-hd\"],\n      \"config\": {\n        \"voices\": [\"alloy\", \"echo\", \"nova\", \"shimmer\"],\n        \"default_voice\": \"alloy\"\n      }\n    }\n  }\n}\n```\n\n### Creating Custom Plugins\n\nTo add a new provider, create a JSON file in the `plugins/` directory following the schema above, or upload one through the UI. Any OpenAI-compatible API works out of the box — just set the correct endpoint and auth config.\n\nFor the full plugin reference (variables, credentials, security, API endpoints), see the [Plugin Architecture docs](./docs/08-PLUGIN_ARCHITECTURE.md).\n\n---\n\n### Desktop App (In Development)\n\n\u003e **Note:** The desktop app is currently in active development. The macOS build is pending Apple notarization, which may cause security warnings or installation issues on some systems. We're working to resolve this. Feedback and bug reports are welcome!\n\nDownload the native desktop app from [GitHub Releases](https://github.com/libre-webui/libre-webui/releases):\n\n| Platform              | Status                  |\n| --------------------- | ----------------------- |\n| macOS (Apple Silicon) | Beta (`.dmg` or `.zip`) |\n| Windows               | Coming soon             |\n| Linux                 | Coming soon             |\n\n---\n\n\u003e [!NOTE]\n\u003e\n\u003e ## Enterprise Services\n\u003e\n\u003e **Need a custom deployment?** [Kroonen AI](https://kroonen.ai) provides professional services for Libre WebUI deployments.\n\u003e\n\u003e | Service                       | Use Case                              |\n\u003e | ----------------------------- | ------------------------------------- |\n\u003e | On-premise \u0026 cloud deployment | HIPAA, SOC 2, air-gapped environments |\n\u003e | SSO integration               | Okta, Azure AD, SAML, LDAP            |\n\u003e | Custom development            | Integrations, white-labeling, plugins |\n\u003e | SLA-backed support            | Priority response, dedicated channel  |\n\u003e\n\u003e **Contact:** enterprise@kroonen.ai | **[Learn more →](https://kroonen.ai/services)**\n\n\u003e [!TIP]\n\u003e\n\u003e ## Support Development\n\u003e\n\u003e Libre WebUI is built and maintained independently. Your support keeps it free and open source.\n\u003e\n\u003e [![Sponsor](https://img.shields.io/badge/Sponsor-❤️-red?style=for-the-badge\u0026logo=github)](https://github.com/sponsors/libre-webui)\n\u003e\n\u003e **[Become a Sponsor](https://github.com/sponsors/libre-webui)** — Help fund active development\n\n---\n\n## Community\n\n- [Ethical Charter](./CHARTER.md) — Our commitment to privacy, freedom \u0026 transparency\n- [Contributing](https://github.com/libre-webui/libre-webui/contribute) — Help improve Libre WebUI\n- [𝕏 @librewebui](https://x.com/librewebui) — Follow for updates\n- [Mastodon](https://fosstodon.org/@librewebui) — Fediverse updates\n- [GitLab](https://git.kroonen.ai/libre-webui/libre-webui) — Self-hosted mirror\n- [GitHub Issues](https://github.com/libre-webui/libre-webui/issues) — Bug reports \u0026 feature requests\n- [Documentation](https://docs.librewebui.org) — Guides \u0026 API reference\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Apache 2.0 License** • Copyright © 2025–present Libre WebUI™\n\nBuilt \u0026 maintained by [Kroonen AI](https://kroonen.ai) • [Enterprise Support](https://kroonen.ai/services)\n\n\u003c/div\u003e\n","funding_links":["https://github.com/sponsors/libre-webui"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibre-webui%2Flibre-webui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibre-webui%2Flibre-webui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibre-webui%2Flibre-webui/lists"}