{"id":47735845,"url":"https://github.com/purpledoubled/locally-uncensored","last_synced_at":"2026-04-24T22:03:39.028Z","repository":{"id":346902512,"uuid":"1191052193","full_name":"PurpleDoubleD/locally-uncensored","owner":"PurpleDoubleD","description":"Local AI desktop app — chat, agent mode, image gen, video gen. Supports Ollama, Gemma 4, Llama, Qwen, OpenAI, Anthropic. Single .exe, no Docker.","archived":false,"fork":false,"pushed_at":"2026-04-20T12:41:10.000Z","size":17158,"stargazers_count":138,"open_issues_count":1,"forks_count":16,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-04-20T14:44:40.807Z","etag":null,"topics":["agent-mode","ai","ai-chat","comfyui","desktop-app","gemma4","image-generation","llm","local-ai","local-llm","ollama","privacy","react","self-hosted","tauri","typescript","uncensored","video-generation"],"latest_commit_sha":null,"homepage":"https://locallyuncensored.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PurpleDoubleD.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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":"PurpleDoubleD"}},"created_at":"2026-03-24T21:52:47.000Z","updated_at":"2026-04-20T14:36:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/PurpleDoubleD/locally-uncensored","commit_stats":null,"previous_names":["purpledoubled/locally-uncensored"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/PurpleDoubleD/locally-uncensored","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PurpleDoubleD%2Flocally-uncensored","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PurpleDoubleD%2Flocally-uncensored/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PurpleDoubleD%2Flocally-uncensored/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PurpleDoubleD%2Flocally-uncensored/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PurpleDoubleD","download_url":"https://codeload.github.com/PurpleDoubleD/locally-uncensored/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PurpleDoubleD%2Flocally-uncensored/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32242315,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"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":["agent-mode","ai","ai-chat","comfyui","desktop-app","gemma4","image-generation","llm","local-ai","local-llm","ollama","privacy","react","self-hosted","tauri","typescript","uncensored","video-generation"],"created_at":"2026-04-02T22:35:57.151Z","updated_at":"2026-04-24T22:03:39.021Z","avatar_url":"https://github.com/PurpleDoubleD.png","language":"TypeScript","funding_links":["https://github.com/sponsors/PurpleDoubleD"],"categories":["Langchain"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"logos/LU-monogram-bw.png\" alt=\"Locally Uncensored\" width=\"80\"\u003e\n\n# Locally Uncensored\n\n**Generate anything — text, images, video. Locally. Uncensored.**\n\nNo cloud. No data collection. No API keys. Auto-detects 12 local backends. Your AI, your rules.\n\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)\n[![GitHub stars](https://img.shields.io/github/stars/PurpleDoubleD/locally-uncensored?style=social)](https://github.com/PurpleDoubleD/locally-uncensored/stargazers)\n[![GitHub last commit](https://img.shields.io/github/last-commit/PurpleDoubleD/locally-uncensored)](https://github.com/PurpleDoubleD/locally-uncensored/commits)\n[![GitHub Discussions](https://img.shields.io/github/discussions/PurpleDoubleD/locally-uncensored)](https://github.com/PurpleDoubleD/locally-uncensored/discussions)\n[![Discord](https://img.shields.io/discord/1496087522042843146?style=flat-square\u0026logo=discord\u0026label=Discord\u0026color=5865F2)](https://discord.gg/nHnGnDw2c8)\n[![Website](https://img.shields.io/badge/Website-locallyuncensored.com-8b5cf6)](https://locallyuncensored.com)\n\n\u003cimg src=\"docs/demo.gif\" alt=\"Locally Uncensored Demo\" width=\"700\"\u003e\n\n*The only desktop app that runs AI chat, image, and video generation — locally, one click, no cloud.*\n\n[Download](#-download) · [Features](#-features) · [Quick Start](#-quick-start) · [Why This App?](#-why-locally-uncensored) · [Roadmap](#-roadmap)\n\n\u003c/div\u003e\n\n---\n\n### Screenshots\n\n| Chat with Personas | Image / Video Generation |\n|:---:|:---:|\n| ![Chat](docs/screenshots/chat_personas_dark.png) | ![Create](docs/screenshots/create_dark.png) |\n| **Model Manager** | **Create View with Parameters** |\n| ![Models](docs/screenshots/model_manager_dark.png) | ![Create Params](docs/screenshots/create_params_dark.png) |\n\n---\n\n## v2.4.1 — Current Release\n\n**Reliability hotfix: bulletproof the Create model picker against any pathological store state.**\n\nDrop-in patch on top of v2.4.0. One focused fix — no new features, no dependency bumps.\n\n### What's fixed\n- **CreateTopControls picker dropdown hardened against any non-array list value** — reported on Discord in `#bug-reports` by @phantomderp: the web UI crashes when clicking the model picker at the top of the Create tab. We'd already added the expected store fields + setters in v2.3.9/v2.4.0 (`imageModelList`, `videoModelList`, `comfyRunning`, `setComfyRunning`), but if the field ever arrives as anything other than an array — stale persisted state from a very old install, Zustand rehydration racing the first render, a corrupted localStorage entry, or an old .exe that predates aa31bab — the `.length` / `.map()` calls would still kill the app on picker-open. Read site now passes the list through `Array.isArray(rawList) ? rawList : []`, so undefined / null / object / string / number all render as the empty-state card instead of crashing.\n\n### Stability\n- 2226 / 2226 Vitest tests green (+7 new pathological-state regression tests in `createStore.test.ts`)\n- `tsc --noEmit` clean\n- Bundled JS contains the fix (grep-confirmed in the minified bundle)\n- Dev-preview E2E: injected six pathological types into the store (`undefined`, `null`, `{}`, `\"corrupted\"`, `42`, populated array), clicked the picker each time — zero errors\n- Installed-binary E2E, happy path: Ollama + ComfyUI + 3 image + 3 video models — picker opens with all six, no crash either mode\n- Installed-binary E2E, true fresh-user: Ollama folder renamed, ComfyUI folder renamed, LU AppData wiped — picker shows \"Start ComfyUI to load models\" empty-state, no crash either mode; all six tabs (Chat / Create / Compare / Benchmark / Models / Settings) load cleanly\n- No breaking changes, no localStorage migration — upgrade in place\n\nFor older releases, see [CHANGELOG.md](CHANGELOG.md).\n\n---\n\n## Why Locally Uncensored?\n\n| Feature | Locally Uncensored | Open WebUI | LM Studio | SillyTavern |\n|---------|:-:|:-:|:-:|:-:|\n| AI Chat | **Yes** | Yes | Yes | Yes |\n| **Coding Agent (Codex)** | **Yes** | No | No | No |\n| **14 Agent Tools + MCP** | **Yes** | No | No | No |\n| **Plug \u0026 Play Setup** | **12 Backends** | No | Built-in | No |\n| **Multi-Provider** (20+ Presets) | **Yes** | Yes | Yes | No |\n| **A/B Model Compare** | **Yes** | No | No | No |\n| **Local Benchmark** | **Yes** | No | No | No |\n| Image Generation | **Yes** | No | No | No |\n| **Image-to-Image** | **Yes** | No | No | No |\n| **Image-to-Video** | **Yes** | No | No | No |\n| Video Generation | **Yes** | No | No | No |\n| **File Upload + Vision** | **Yes** | Yes | Yes | No |\n| **Thinking Mode** | **Yes** | No | No | No |\n| **Granular Permissions** | **7 Categories** | No | No | No |\n| Uncensored by Default | **Yes** | No | No | Partial |\n| Memory System | **Yes** | Plugin | No | No |\n| Agent Workflows | **Yes** | No | No | No |\n| Document Chat (RAG) | **Yes** | Yes | No | No |\n| Voice (STT + TTS) | **Yes** | Partial | No | No |\n| **Remote Access (Phone)** | **Yes** | No | No | No |\n| **Plugins (Caveman + Personas)** | **Yes** | No | No | Yes |\n| **Auto-Update** | **Yes** | No | Yes | No |\n| Open Source | **AGPL-3.0** | MIT | No | AGPL |\n| No Docker | **Yes** | No | Yes | Yes |\n\n---\n\n## Features\n\n### Core\n- **Plug \u0026 Play Setup** — First-launch wizard auto-detects 12 local backends. Nothing installed? One-click in-app Ollama download and install with progress bar. ComfyUI one-click install with step-by-step progress. Configurable ComfyUI port and path in Settings. Zero config needed.\n- **Uncensored AI Chat** — Abliterated models with zero restrictions. Streaming + thinking display.\n- **Multi-Provider** — 20+ presets. Local: Ollama, LM Studio, vLLM, KoboldCpp, llama.cpp, LocalAI, Jan, TabbyAPI, GPT4All, Aphrodite, SGLang, TGI. Cloud: OpenAI, Anthropic, OpenRouter, Groq, Together, DeepSeek, Mistral. Switch per conversation.\n- **Codex Coding Agent** — Live streaming between tool calls, continue capability, AUTONOMY CONTRACT. File tree, folder picker, up to 50 iterations.\n- **Agent Mode** — 14 tools + MCP: web search/fetch, file I/O, shell, code execution, screenshots, system info, time. Parallel execution, sub-agents, budget system.\n- **Remote Access** — Access your AI from your phone via LAN or Cloudflare Tunnel. Full mobile web app with Agent Mode, Codex, plugins, file attach.\n- **Image Generation** — FLUX 2 Klein, FLUX.1 (schnell/dev), Z-Image Turbo/Base, Juggernaut XL, RealVisXL, DreamShaper XL via ComfyUI. Full parameter control, no content filter.\n- **Image-to-Image** — Upload a source image, adjust denoise strength, transform with any image model.\n- **Video Generation** — Wan 2.1, HunyuanVideo 1.5, LTX 2.3, AnimateDiff Lightning, CogVideoX, FramePack F1 on your GPU.\n- **Image-to-Video** — FramePack F1 (6 GB VRAM), CogVideoX 5B, SVD-XT. Upload an image, get video.\n\n### Intelligence\n- **Thinking Mode** — Provider-agnostic. See the AI's reasoning before the answer. Toggle from chat input.\n- **File Upload + Vision** — Drag \u0026 drop, paste, clip button. Vision models analyze images.\n- **Granular Permissions** — 7 tool categories, 3 permission levels, per-conversation overrides.\n- **Smart Tool Selection** — Reduces tool definitions per request by ~80%. JSON repair for local LLMs.\n- **Memory System** — Persistent across conversations. Auto-extraction. Export/import.\n- **Agent Workflows** — Multi-step chains. 3 built-in (Research, Summarize URL, Code Review). Visual builder.\n\n### Productivity\n- **Model A/B Compare** — Same prompt, two models, side by side. Parallel streaming.\n- **Local Benchmark** — One-click benchmark any model. Tokens/sec leaderboard.\n- **Document Chat (RAG)** — Upload PDFs, DOCX, TXT. Hybrid search with source citations.\n- **Voice Chat** — Push-to-talk STT + sentence-level TTS streaming.\n- **20+ Personas** — Pre-built characters. Switch without prompt engineering.\n- **Chat Export** — Markdown or JSON. Token counter. Keyboard shortcuts.\n\n### Customization\n- **Plugins Dropdown** — Caveman Mode (Off/Lite/Full/Ultra for terse responses) + 20+ Personas in one menu. Per-chat. Works in Chat, Agent, Codex.\n- **Auto-Update** — Signed NSIS installer. In-app download with progress bar. User-controlled restart (no forced updates). Settings survive updates.\n\n### Polish\n- **Standalone Desktop App** — Tauri v2 Rust backend. Download .exe, run it.\n- **Model Load/Unload** — iOS-style toggle in header. Load into VRAM, unload when done.\n- **AE-Style Header** — Clean typography navigation. Models, Settings, Downloads at a glance.\n- **Privacy First** — Zero tracking, all API calls proxied locally. ComfyUI process auto-killed on app close.\n\n## Tech Stack\n\n- **Desktop**: Tauri v2 (Rust backend, standalone .exe)\n- **Frontend**: React 19, TypeScript, Tailwind CSS 4, Framer Motion\n- **State**: Zustand with localStorage persistence\n- **AI Backend**: 20+ providers (Ollama, LM Studio, vLLM, KoboldCpp, llama.cpp, LocalAI, Jan, OpenAI, Anthropic, OpenRouter, Groq, and more), ComfyUI, faster-whisper\n- **Build**: Vite 8 (dev), Tauri CLI (production)\n\n---\n\n## Download\n\n### Windows\nDownload the installer from [Releases](https://github.com/PurpleDoubleD/locally-uncensored/releases/latest):\n- **`.exe`** — NSIS installer (recommended)\n- **`.msi`** — Windows Installer\n\n\u003e **Other platforms:** The source code builds on Linux and macOS via `npm run tauri build`, but only Windows is officially tested and supported.\n\n\u003e **Plug \u0026 Play:** Just install and launch. The setup wizard auto-detects all 12 supported local backends ([Ollama](https://ollama.com/), [LM Studio](https://lmstudio.ai/), [vLLM](https://github.com/vllm-project/vllm), [KoboldCpp](https://github.com/LostRuins/koboldcpp), llama.cpp, LocalAI, Jan, GPT4All, text-generation-webui, TabbyAPI, Aphrodite, SGLang). Nothing installed yet? The wizard shows one-click install links for every backend.\n\n---\n\n## Quick Start\n\n\u003e **New to Locally Uncensored?** Read the [Getting Started Guide](https://locallyuncensored.com/guide/) with screenshots for every step.\n\n### From Source\n\n```bash\ngit clone https://github.com/PurpleDoubleD/locally-uncensored.git\ncd locally-uncensored\nnpm install\nnpm run dev\n```\n\n### For Contributors — Dev-Mode Setup\n\n\u003e ⚠️ **Just want to use the app?** Grab the installer from [Releases](https://github.com/PurpleDoubleD/locally-uncensored/releases/latest) (the `.exe` or `.msi` in the **Download** section above). That gives you the full Tauri desktop app with auto-update. The commands below start LU in **browser dev-mode** — fewer features, Vite proxy noise, meant for contributing to the codebase.\n\n```bash\ngit clone https://github.com/PurpleDoubleD/locally-uncensored.git\ncd locally-uncensored\nsetup.bat   # Windows — installs Node, Git, Ollama, then npm run dev\n# setup.sh  # macOS / Linux equivalent\n```\n\nLaunches at `http://localhost:5173` in your default browser.\n\n### Image \u0026 Video Generation\n\nOpen the **Create** tab. ComfyUI is auto-detected or one-click installed. Models download with one click. Workflow is set to **Auto** — just write a prompt and hit Generate.\n\n---\n\n## Recommended Models\n\n### Text (any local backend)\n\n| Model | VRAM | Best For |\n|-------|------|----------|\n| **Qwen 3.6 35B MoE** | 24 GB | Vision + agentic coding + thinking. Brand new. |\n| **GLM-4.7-Flash IQ2** | 12 GB | Strongest 30B class. Tool calling. 198K context. |\n| **Gemma 4 E4B** | 4 GB | Lightweight, fast, great for small GPUs. |\n| **Qwen 3.5 35B MoE** | 16 GB | Best agentic, 256K context. SWE-bench leader. |\n| **Gemma 4 31B** | 16 GB | Frontier dense model, native tools + vision. |\n| Hermes 3 8B | 6 GB | Agent Mode. Uncensored + tool calling. |\n| DeepSeek R1 (8B-70B) | 6-48 GB | Chain-of-thought reasoning. |\n\n### Image (ComfyUI)\n\n| Model | VRAM | Notes |\n|-------|------|-------|\n| FLUX.1 Schnell / Dev | 8-10 GB | Best text-to-image. Fast (schnell) or quality (dev). |\n| FLUX 2 Klein 4B | 8-10 GB | Next-gen, fastest FLUX model. |\n| ERNIE-Image Turbo | 24 GB | Baidu DiT, 8 steps, 1024x1024. New. |\n| Z-Image Turbo | 10-16 GB | Uncensored, 8-15 sec per image. |\n| Juggernaut XL V9 | 6 GB | Best photorealistic SDXL. |\n\n### Video (ComfyUI)\n\n| Model | VRAM | Notes |\n|-------|------|-------|\n| Wan 2.1 T2V 1.3B | 8-10 GB | Fast entry point, 480p. |\n| Wan 2.1 T2V 14B | 12+ GB | High quality, 720p. |\n| FramePack F1 (I2V) | 6 GB | Image-to-video, revolutionary low VRAM. |\n| AnimateDiff Lightning | 6-8 GB | Ultra-fast 4-step animation. |\n| HunyuanVideo 1.5 | 12+ GB | Excellent temporal consistency. |\n\n---\n\n## Roadmap\n\n- [x] **Plug \u0026 Play Setup** (auto-detect 12 local backends, one-click install links)\n- [x] Codex Coding Agent\n- [x] MCP Tool Registry (13 tools)\n- [x] Granular Permissions (7 categories)\n- [x] File Upload + Vision\n- [x] Thinking Mode (provider-agnostic)\n- [x] Model Load/Unload from header\n- [x] Multi-Provider (20+ presets)\n- [x] Agent Mode + Workflows\n- [x] Memory System\n- [x] A/B Compare + Local Benchmark\n- [x] RAG / Document Chat\n- [x] Voice Chat (STT + TTS)\n- [x] ComfyUI Plug \u0026 Play (auto-detect, one-click install)\n- [x] 20 Image + Video Model Bundles\n- [x] Image-to-Image (I2I)\n- [x] Image-to-Video (I2V) — FramePack, CogVideoX, SVD\n- [x] Z-Image + FLUX 2 + ERNIE-Image support\n- [x] Dynamic Workflow Builder (15 strategies)\n- [x] VRAM-Aware Model Filtering\n- [x] Think Mode in Chat Input\n- [x] Remote Access (LAN + Cloudflare Tunnel)\n- [x] Mobile Web App (Agent, Codex, Plugins, Thinking)\n- [x] Codex Streaming + Continue + Autonomy Contract\n- [x] Agent 13-Phase Rewrite (parallel, budget, sub-agents, MCP)\n- [x] Auto-Update (signed NSIS installer)\n- [x] Qwen 3.6 Day-0 Support\n- [x] Plugins Dropdown (Caveman + Personas)\n- [ ] Voice Mode (Qwen Omni live voice)\n- [ ] Upscale + Inpainting\n\n---\n\n## Build from Source\n\n```bash\ngit clone https://github.com/PurpleDoubleD/locally-uncensored.git\ncd locally-uncensored\nnpm install\nnpm run dev          # Development\nnpm run tauri build  # Production binary\n```\n\n## Platform Support\n\n| Platform | Status | Download |\n|----------|--------|----------|\n| **Windows** (10/11) | Fully tested | `.exe` / `.msi` |\n| Linux / macOS | Build from source | `npm run tauri build` |\n\n## Community\n\nJoin the Discord: **https://discord.gg/nHnGnDw2c8**. Ask questions, share what you built, or help others in our forum channels — chat / image gen / video gen / coding agent.\n\n## Contributing\n\nCheck out the [Contributing Guide](CONTRIBUTING.md). See [open issues](https://github.com/PurpleDoubleD/locally-uncensored/issues) or the [Roadmap](#-roadmap).\n\n## License\n\nAGPL-3.0 License — see [LICENSE](LICENSE).\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Your data stays on your machine.**\n\n[Website](https://locallyuncensored.com) · [Report Bug](https://github.com/PurpleDoubleD/locally-uncensored/issues/new?template=bug_report.yml) · [Request Feature](https://github.com/PurpleDoubleD/locally-uncensored/issues/new?template=feature_request.yml) · [Discussions](https://github.com/PurpleDoubleD/locally-uncensored/discussions)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurpledoubled%2Flocally-uncensored","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpurpledoubled%2Flocally-uncensored","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurpledoubled%2Flocally-uncensored/lists"}