{"slug": "a-1-5mb-local-llm-manager-that-turns-llama-cpp-into-a-complete-desktop-ai", "title": "A 1.5MB Local LLM Manager That Turns llama.cpp Into a Complete Desktop AI Workstation", "summary": "Developer oshine released Ooor, an MIT-licensed open-source Windows desktop app that wraps the llama.cpp ecosystem into a click-and-run local AI workstation in a 1.5MB WinForms binary. The app bundles llama-server engine management across CPU/CUDA/Vulkan/SYCL builds, a GGUF model library with soft-delete, a resumable chunked Hugging Face downloader, a streaming chat console, and an Agent tool-calling layer with MCP support, exposing an OpenAI-compatible endpoint at 127.0.0.1:6080 with no Electron, cloud services, telemetry, or accounts.", "body_md": "**TL;DR**: Ooor is a MIT-licensed, open-source Windows desktop app weighing just 1.5MB. It integrates llama.cpp engine management, a GGUF model library, a Hugging Face model marketplace, a resumable chunked downloader, a streaming chat console, and an Agent tool-calling layer. No Electron. No cloud services. No telemetry. No accounts. Pure local. Double-click and go.\n\nLet's be honest — running LLMs locally in 2026 isn't novel anymore. But have you ever experienced this:\n\n`llama-server --help` to find the right flags, type out a long command line, and restart everything just to change the GPU layer count\nIf any of that resonates, **Ooor** (pronounced \"O-or\") is worth five minutes of your time.\n\n**GitHub**: [https://github.com/rhettli/Ooor-desktop](https://github.com/rhettli/Ooor-desktop)\n\n**Website**: [https://ooor.cc](https://ooor.cc)\n\n**License**: MIT\n\n**Author**: oshine\n\nOoor is a native Windows desktop application that wraps the llama.cpp command-line ecosystem into a \"click-and-run\" workstation. It's not an Electron app, not WPF, not MAUI — it's plain **WinForms + .NET Framework 4.8**, compiling to a 1.5MB binary that launches instantly and idles in single-digit megabytes of RAM.\n\nSpecifically, Ooor packs **four roles** into a single sub-1.5MB executable:\n\n| Role | Description | \n|---|---|\n| **Llama Engine Manager** | Discover, install, and switch between llama-server builds (CPU / CUDA / Vulkan / SYCL) | \n| **Model Library Manager** | Scans disk for all .gguf files, manages multimodal projection files, supports soft-delete | \n| **Downloader** | Chunked resumable downloads, HuggingFace mirror support, GitHub proxy acceleration | \n| **Chat Console & Agent Host** | Streaming chat, tool calling (read/write files, shell, web fetch), MCP protocol support | \n\n| Tool | Installer Size | Runtime Dependency | Idle Memory | \n|---|---|---|---|\n| Ollama | ~150MB | Bundled runtime | ~50MB | \n| LM Studio | ~500MB+ | Electron + Chromium | ~800MB | \n| **Ooor** | **~1.5MB** | .NET Framework 4.8 (built into Win10) | **single-digit MB** | \n\nNo Electron. No Node runtime. No 200MB framework download. A hand-written WinForms binary that talks directly to `llama-server.exe` via local HTTP API.\n\n`127.0.0.1`\nSelect engine → Select model → Click **Start Service** → Get an OpenAI-compatible HTTP endpoint running at `127.0.0.1:6080`.\n\nConnect directly to:\n\n`apiBase`\n`/v1/chat/completions` format\nllama.cpp iterates rapidly. Ooor's approach: **decouple the engine from the GUI**.\n\n`llama-b*-bin-win-*.zip` to `config\\llama-bin\\`\nThe Model Manager is a spreadsheet-like GGUF file management interface:\n\n| Column | Description | \n|---|---|\n| Model Name | Filename | \n| Projection File | Multimodal (vision) model's `mmproj-*.gguf` projection file | \n| Folder | Disk location | \n| Type | Built-in (internal directory) or External (referenced directory) | \n| Size | Disk usage | \n| Note | Free-form annotation (e.g., \"good at code\", \"fast inference\") | \n| D | Soft-delete marker | \n\nRight-click menu: edit notes, locate file, hard-delete / soft-delete, add external model folders.\n\n**Soft-delete** is particularly useful: removes from the list but keeps the disk file, so you can switch back and forth during experiments without re-downloading 7GB.\n\nNot just a search box — a full HF browser:\n\n`hf-mirror` mirror source (friendly for users in regions with restricted access)\nNot a progress bar — a **real download manager**:\n\nStatus bar summary: task count, active count, current speed, total bytes.\n\nBuilt-in chat interface with streaming output. Each response includes:\n\nThis means you can visually compare inference speed across engine versions or quantization levels without running a separate benchmark.\n\nThis is Ooor's most interesting capability — it's not just a chat box, it's a **local Agent host**.\n\nBuilt-in tool set:\n\n| Tool | Function | Safety Mechanism | \n|---|---|---|\n| **Fetch URL** | HTTP GET to fetch a web page, returns cleaned text/Markdown | Auto-uses GitHub proxy | \n| **Read File** | Reads text files within allowed root directories | Path restriction | \n| **Write File** | Writes text to allowed root directories | **Requires manual confirmation** | \n| **List Directory** | Lists directory contents | Path restriction | \n| **Shell** | Executes shell commands | **Requires manual confirmation** , streaming output | \n| **Memory** | Key-value store across conversation turns | — | \n\nWorkflow:\n\n**MCP Protocol Support**: You can bind Model Context Protocol servers that enjoy the same status as built-in tools. The repository includes a sample MCP server `ooor-sqlite-mcp`.\n\nWhat does this mean? Your local model can: fetch web content → read local files → analyze → write results to a file. **A fully offline local research assistant.**\n\nA Profile = engine + model + runtime parameters + Agent binding, as a complete snapshot.\n\nTypical usage:\n\nOne-click switching. No need to reconfigure each time.\n\nSupports English and Simplified Chinese, switchable at runtime.\n\n| Layer | Technology | \n|---|---|\n| Client | C# + WinForms (.NET Framework 4.8) | \n| Inference backend | llama.cpp (official Release builds) | \n| Chat frontend | Embedded HTML (Vue.js) | \n| Gateway (optional) | Go (chi router / SQLite / singleflight) | \n\n```\ncsharp-desktop-app/\n├── OOOR/                       # Desktop app main project\n│   ├── Core/                   # Domain logic: engine runtime, model storage, Agent, tools\n│   ├── Controls/               # Custom WinForms controls (sparkline, etc.)\n│   ├── Properties/             # AssemblyInfo, Resources\n│   ├── html/                   # Embedded web assets for chat console (index.html, vue.js)\n│   ├── Lang/                   # i18n strings (en.json, zh.json)\n│   ├── Ooor.csproj\n│   └── Program.cs\n├── Ooor-cli/                   # Optional CLI frontend\n├── OoorFunc/                   # Shared Agent/tool function library\n├── ooor-sqlite-mcp/            # Sample SQLite MCP server\n├── doc/img/                    # README screenshots\n└── Ooor.slnx                   # Solution file\n```\n\nAll user data is centralized under one config tree, making backup and migration straightforward:\n\n| Path | Purpose | \n|---|---|\n| `<install_dir>\\bin\\Ooor.exe` | Application executable | \n| `<install_dir>\\config\\llama-bin\\` | Extracted llama-server builds | \n| `<install_dir>\\config\\models\\` | Built-in model folder (auto-scanned) | \n| `<install_dir>\\config\\github-proxy.txt` | GitHub acceleration mirror list | \n| `<install_dir>\\config\\ref_models.conf` | External model folder references (e.g., LM Studio library) | \n| `<install_dir>\\config\\` (chat/temp/remark) | Chat logs, temp files, annotations | \n\nDefault install directory: `D:\\Ooor` if drive D exists, otherwise `%LOCALAPPDATA%\\Ooor`.\n\nDownload `Ooor-Setup-x64-v*.exe` from [ooor.cc](https://ooor.cc) and run the installer. On first launch, Windows may show an \"unknown publisher\" warning — this is because the app currently uses a self-signed certificate (a commercial code signing certificate is on the Roadmap). Click **Run anyway**.\n\nNo admin privileges required for daily use (the installer requests admin only for writing to the install directory). No reboot. No runtime installation.\n\nOpen **Llama → Downloads** and choose based on your hardware:\n\n`llama-bXXXX-bin-win-cpu-x64.zip` → CPU inference`llama-bXXXX-bin-win-cuda-x64.zip` → NVIDIA GPU`llama-bXXXX-bin-win-vulkan-x64.zip` → Generic GPU (best cross-vendor compatibility)\nAfter download, it auto-extracts to `config\\llama-bin\\` and auto-selects.\n\nOpen **Models → Download Models**, search for a small model to start with, e.g., `Qwen2.5-Coder-1.5B-Instruct-Q4_K_M`, and click **Download**.\n\nReturn to the main window — the engine and model are auto-selected. Click **Start Service**. The console log shows llama-server starting up, and the status bar displays `llama-server detected`.\n\nClick **Open Console AI Assistant**, type a message, and the model streams back a response.\n\nOpen **Agent Manager**, bind a few tools (e.g., *Fetch URL*, *Read File*), and save as a Profile. Then give the model a task that requires tools, for example:\n\n\"Fetch the README from [https://github.com/rhettli/Ooor-desktop](https://github.com/rhettli/Ooor-desktop) and summarize it\"\n\nThe model will autonomously call the Fetch URL tool, retrieve the content, and return a summary.\n\nIf you want to compile or contribute:\n\n**Prerequisites**:\n\n`%PATH%` (for packaging the installer)\n**Steps**:\n\n```\ngit clone https://github.com/rhettli/Ooor-desktop.git\ncd Ooor-desktop\n```\n\nThe build is driven by a Node script:\n\n```\nnode ooor-utils/desktop-app/build-all.js\n```\n\nThe script automatically:\n\n`Core/DEF.cs` and auto-increments by `0.0001`\n`AssemblyInfo.cs` and `installer.nsi`\n`bin/Release/` and runs MSBuild (Release configuration)`github-proxy.txt` to the config directory\n**One-click publish** (build + upload + version manifest + update check):\n\n```\nnode ooor-utils/desktop-app/publish.js build_and_upload --notes \"your release notes\"\n```\n\n| Feature | Ollama | LM Studio | **Ooor** | \n|---|---|---|---|\n| Installer size | ~150MB | ~500MB+ | **~1.5MB** | \n| Open source license | MIT | Closed | **MIT** | \n| UI framework | CLI + basic GUI | Electron | **WinForms (native)** | \n| Idle memory | ~50MB | ~800MB | **single-digit MB** | \n| Login required | No | Nudges login | **No** | \n| Telemetry | None | Unclear | **None** | \n| Inference engine | Custom (based on llama.cpp) | Bundled llama.cpp | **Uses llama.cpp official builds directly** | \n| Engine version management | Tied to app version | Tied to app version | **Independent, multi-version coexistence** | \n| Model format | Ollama's own format | GGUF | **GGUF (native)** | \n| Model search | Official library (limited) | Built-in HF search | **Built-in HF search + mirror acceleration + hardware requirement annotations** | \n| Download acceleration | None | None | **hf-mirror + GitHub proxy + NVMe cache** | \n| Resumable downloads | No | Yes | **Yes (chunk-level)** | \n| Built-in chat | Yes | Yes | **Yes (streaming + token sparkline)** | \n| Agent tool calling | No | No | **Yes (6 built-in tools + MCP support)** | \n| Profile system | No | No | **Yes** | \n| OpenAI-compatible API | ✅ | ✅ | **✅** | \n| Multilingual UI | Partial | Partial | **EN/CN, runtime switch** | \n| Cross-platform | Win/Mac/Linux | Win/Mac/Linux | **Windows only** | \n| Security | Reported unauthorized access risk | Closed, opaque | **Pure local 127.0.0.1, no remote access** | \n\nI've browsed through many local LLM tool projects on GitHub. Most are either Electron GUI shells over CLI tools, or feature-stuffed but rough-around-the-edges half-finished products.\n\nOoor feels different. It has a quality of **deliberate subtraction**:\n\nBut it also adds in the right places:\n\nIf you're on Windows and looking for a **lightweight, open-source, purely local, Agent-capable** LLM management tool, Ooor is the best option I've found so far.\n\n**Project**: [https://github.com/rhettli/Ooor-desktop](https://github.com/rhettli/Ooor-desktop)\n\n**Website**: [https://ooor.cc](https://ooor.cc)\n\n**License**: MIT\n\n**Author**: oshine\n\n*This article is based on the Ooor official website and the GitHub repository README. If you spot any inaccuracies, please let me know in the comments.*\n\n**Tags**: `#LocalLLM` `#llama.cpp` `#GGUF` `#Ooor` `#OpenSource` `#MIT` `#OpenAI-compatible` `#Agent` `#MCP` `#Windows` `#AITools` `#TokenFreedom` `#WinForms`", "url": "https://wpnews.pro/news/a-1-5mb-local-llm-manager-that-turns-llama-cpp-into-a-complete-desktop-ai", "canonical_source": "https://dev.to/oshine/a-15mb-local-llm-manager-that-turns-llamacpp-into-a-complete-desktop-ai-workstation-9a", "published_at": "2026-09-24 03:41:55+00:00", "updated_at": "2026-09-24 04:00:35.898078+00:00", "lang": "en", "topics": ["ai-tools", "large-language-models", "ai-agents", "developer-tools", "agent-protocols"], "entities": ["Ooor", "llama.cpp", "oshine", "Hugging Face", "Ollama", "LM Studio", "GitHub", "MCP"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/a-1-5mb-local-llm-manager-that-turns-llama-cpp-into-a-complete-desktop-ai", "markdown": "https://wpnews.pro/news/a-1-5mb-local-llm-manager-that-turns-llama-cpp-into-a-complete-desktop-ai.md", "text": "https://wpnews.pro/news/a-1-5mb-local-llm-manager-that-turns-llama-cpp-into-a-complete-desktop-ai.txt", "jsonld": "https://wpnews.pro/news/a-1-5mb-local-llm-manager-that-turns-llama-cpp-into-a-complete-desktop-ai.jsonld"}}