KoboldCpp runs AI models on your own computer from a single executable. There is nothing to install: download one file for Windows, Linux or Apple Silicon, pick a GGUF model in the launcher, click Launch, and a web interface opens at localhost:5001. It is built on llama.cpp, runs on CPU or GPU with full or partial offloading, and keeps working with old GGML models too.
What sets it apart is how much fits in that one file. Besides chat, instruct and story writing, it generates and edits images (Stable Diffusion, SDXL, Flux and newer models), makes video with Wan and LTX, transcribes speech with Whisper, speaks with several text-to-speech models, and composes music with ACE-Step. The bundled KoboldAI Lite interface has memory, world info, character cards and saved stories, and the server answers on KoboldAI, OpenAI, Ollama, Automatic1111 and ComfyUI compatible endpoints, so front ends like SillyTavern plug straight in. Recent versions add MCP tools, web search and an optional coding agent.
It is AGPL-3.0, with about 12,000 stars, at v1.123.1 when scanned. The contributor count of over 2,000 includes the llama.cpp history it builds on.
- Repository: github.com/LostRuins/koboldcpp
- Licence: AGPL-3.0 (GNU Affero General Public License v3.0)
- Language: C++. Stars: 12K. Forks: 796. Last push: Oct 22, 2026.
- Scan: safe, Oct 22, 2026, commit 76e77f3
Who it is for
People who want local AI for writing, roleplay or chat without installing Python or Docker, owners of older or modest hardware who need a CPU-friendly build, and anyone who wants text, image and voice models behind one local API.
Getting started
1. Linux: download and start (Windows: download koboldcpp.exe from the releases page and double-click it)
curl -fLo koboldcpp-linux-x64 https://github.com/LostRuins/koboldcpp/releases/latest/download/koboldcpp-linux-x64 && chmod +x koboldcpp-linux-x64 && ./koboldcpp-linux-x642. Apple Silicon Mac
curl -fLo koboldcpp-mac-arm64 https://github.com/LostRuins/koboldcpp/releases/latest/download/koboldcpp-mac-arm64 && chmod +x koboldcpp-mac-arm64 && ./koboldcpp-mac-arm643. Pick a GGUF model in the launcher, click Launch, then open the web UI
open http://localhost:5001Models are separate downloads from Hugging Face; the launcher's Newbie Templates are an easy start. Only download KoboldCpp from the project's GitHub releases: the README warns that koboldcpp.com is a fake phishing site.
Safety scan
We cloned LostRuins/koboldcpp at commit 76e77f3 on Oct 22, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.
- No secrets across 2,872 files and about 1.25 million lines, most of it llama.cpp's C and C++. The pattern hits are comments in the Android install script, a code-server install line in a Docker example, and two very long lines in koboldcpp.py that hold embedded data.
- The server binds to all routable interfaces unless --host is set, and requires no password unless --password is given; even then its own help text notes that image endpoints are not covered. On a laptop at home that is fine; on a shared network, bind to 127.0.0.1.
- Seven committed binaries: the glslc shader compiler for Linux and Windows and two CUDA runtime DLLs used to build the GPU versions, the aria2c downloader for Windows that fetches models, and a small CPU-detection tool. They are upstream tools, but you are trusting the copies in the repository rather than building them.
- The 72 known advisories (3 critical) sit almost entirely in tools/ui/package-lock.json, the build tooling for the llama.cpp-derived web UI (Storybook, Vite and similar), which is not in the release executable. One low advisory is in a helper requirements file.
- 8 workflows, none using pull_request_target. The release build workflows request write-all permissions, broader than they need. Licence present; no security policy, Dependabot or CodeQL.
What the scanner counted
| Check | Result |
|---|---|
| Secrets | None found. |
| Suspicious code | 5 pattern hits found and read; every one is listed under the raw findings. |
| Install-time code | 1 npm lifecycle script. 1 installer script |
| Committed binaries | 7 executable or compiled objects committed; listed under the raw findings. |
| CI workflows | 8 workflows. None use pull_request_target. 7 grant write-all permissions. 2 of 2 third-party actions pinned to a tag rather than a commit. |
| Network hosts | 40 distinct hosts referenced from source; most often registry.khronos.org, github.com, huggingface.co, www.apache.org. No URLs to bare IP addresses. |
| Known vulnerabilities | 72 advisories across 1,183 pinned packages: 3 critical, 28 high, 33 moderate, 8 low. tools/mtmd/requirements.txt: 2 packages, 1 advisories; tools/ui/package-lock.json: 1,216 packages, 71 advisories. |
| Project hygiene | Has licence file. Missing security policy, automated dependency updates, CodeQL, contributing guide. |
| OpenSSF Scorecard | Not scored: the project is not in Scorecard's weekly index. |
The raw findings
Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.
Pattern hits (5)
| Where | Rule | Match |
|---|---|---|
| android_install.sh:35 | download-piped-to-shell | # Determine script directory (works for both curl|sh and ./install.sh) |
| android_install.sh:39 | download-piped-to-shell | SCRIPT_DIR="$(pwd)" # Piped execution (curl | sh) |
| examples/docker-reference/docker-helper.sh:97 | download-piped-to-shell (test/example) | curl -fsSL https://code-server.dev/install.sh | sh |
| koboldcpp.py:6996 | very-long-line | 7952 chars |
| koboldcpp.py:7190 | very-long-line | 4163 chars |
npm lifecycle scripts (1)
tools/ui/package.jsonprepare:svelte-kit sync || echo ''
Installer scripts (1)
- tools/ui/scripts/git-hooks/install.sh, 36 lines
Committed binaries (7)
kcpp_src/bin/glslc-linux: ELF, 9 MBkcpp_src/bin/aria2c-win.exe: PE (Windows executable), 6 MBkcpp_src/bin/glslc.exe: PE (Windows executable), 5 MBcudart64_12.dll: PE (Windows executable), 554 KBcudart64_110.dll: PE (Windows executable), 502 KBkcpp_src/bin/simplecpuinfo.exe: PE (Windows executable), 32 KBkcpp_src/bin/simplecpuinfo: ELF, 15 KB
Worst known vulnerabilities (24 of 72)
| Advisory | Severity | Package | Summary |
|---|---|---|---|
| GHSA-f2ph-cmg5-wxc8 | critical | @storybook/addon-vitest@10.5.6 | Storybook: Missing origin validation in Storybook preview allows code injection from malicious websites |
| GHSA-jqcg-44mw-7w3h | critical | proxy-addr@2.0.7 | proxy-addr vulnerable to IP spoofing via IPv4-mapped IPv6 trust subnet |
| GHSA-f2ph-cmg5-wxc8 | critical | storybook@10.5.6 | Storybook: Missing origin validation in Storybook preview allows code injection from malicious websites |
| GHSA-22jm-h49p-29qw | high | @modelcontextprotocol/sdk@1.30.0 | MCP TypeScript SDK: Experimental tasks were not tied to the session that created them |
| GHSA-46jr-4wx8-v453 | high | @modelcontextprotocol/sdk@1.30.0 | MCP TypeScript SDK: One HTTP request within the default size limit could exhaust server memory during validation |
| GHSA-6qxp-vccf-f47h | high | @modelcontextprotocol/sdk@1.30.0 | MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server |
| GHSA-6j4f-fj2g-mc7p | high | brace-expansion@5.0.9 | brace-expansion: DoS via uncontrolled recursion in parseCommaParts causing stack exhaustion |
| GHSA-qhr7-859c-m2p7 | high | brace-expansion@5.0.9 | brace-expansion: DoS via uncontrolled recursion on nested brace groups causing stack exhaustion |
| GHSA-6j4f-fj2g-mc7p | high | brace-expansion@1.1.18 | brace-expansion: DoS via uncontrolled recursion in parseCommaParts causing stack exhaustion |
| GHSA-qhr7-859c-m2p7 | high | brace-expansion@1.1.18 | brace-expansion: DoS via uncontrolled recursion on nested brace groups causing stack exhaustion |
| GHSA-73wf-gq98-2v4g | high | browserslist@4.28.2 | Browserslist: Uncaught crash / prototype write via untrusted browserslist-stats.json custom stats (normalizeStats) |
| GHSA-c83g-rgw3-j3cx | high | browserslist@4.28.2 | Browserslist: Unbounded memory growth (no cache eviction) via distinct query results, leading to eventual OOM |
| GHSA-j22f-vq7h-c4qm | high | devalue@5.8.1 | devalue: `stringify`/`uneval` serialize shared memory |
| GHSA-mcm9-63f2-9j32 | high | devalue@5.8.1 | devalue: Repeated primitive strings cause quadratic expansion in uneval |
| GHSA-r9w8-h9r3-54w4 | high | devalue@5.8.1 | devalue: Custom ArrayBuffer revivers can bypass typed-array allocation validation |
| GHSA-x5rw-q4pp-hg5g | high | devalue@5.8.1 | devalue: stringifyAsync can cause an unhandled rejection despite a caught returned promise |
| GHSA-5jgf-p345-68v8 | high | fast-uri@3.1.5 | fast-uri vulnerable to host confusion via skipped IDN canonicalization on scheme-relative references |
| GHSA-f65p-4m7j-42xc | high | fast-uri@3.1.5 | fast-uri vulnerable to server-side request forgery via malformed IPv6 normalization |
| GHSA-fph4-wmhf-6fwf | high | fast-uri@3.1.5 | fast-uri vulnerable to server-side request forgery via repeated hostname percent-decoding |
| GHSA-jqff-g426-hqxp | high | fast-uri@3.1.5 | fast-uri vulnerable to host confusion via percent-encoded scheme normalization |
| GHSA-qw65-cvwx-89v3 | high | fast-uri@3.1.5 | fast-uri vulnerable to authority injection via an unvalidated port in serialize |
| GHSA-6j4f-fj2g-mc7p | high | brace-expansion@2.1.4 | brace-expansion: DoS via uncontrolled recursion in parseCommaParts causing stack exhaustion |
| GHSA-qhr7-859c-m2p7 | high | brace-expansion@2.1.4 | brace-expansion: DoS via uncontrolled recursion on nested brace groups causing stack exhaustion |
| GHSA-8r9p-f939-6h3c | high | follow-redirects@1.16.0 | follow-redirects sensitiveHeaders regex escaping can expose credential headers |
Workflows worth a look
- .github/workflows/kcpp-build-release-linux-cu13.yaml: permissions: write-all
- .github/workflows/kcpp-build-release-linux-oldpc.yaml: permissions: write-all
- .github/workflows/kcpp-build-release-linux-rocm.yaml: permissions: write-all
- .github/workflows/kcpp-build-release-linux.yaml: permissions: write-all
- .github/workflows/kcpp-build-release-macos.yaml: permissions: write-all
- .github/workflows/kcpp-build-release-win-oldpc.yaml: permissions: write-all
- .github/workflows/kcpp-build-release-win.yaml: permissions: write-all
By the numbers
| Stars | 12K |
|---|---|
| Forks | 796 |
| Contributors | 2,180 |
| Commits | 16.4K |
| Open issues | 525 |
| Open pull requests | 6 |
| Releases | 136 |
| Latest release | v1.123.1 |
| Licence | AGPL-3.0 |
| Main language | C++ |
| Project age | 3 years |
| Last push | Oct 22, 2026 |
| Tracked files | 2,872 |
| Lines of code | 1.3M |
| Checkout size | 313 MB |
Lines by language: C/C++ header 401.3K, C++ 376.3K, C 101.6K, JSON 83.1K, Python 80.6K, TypeScript 59.6K.
Questions
Is KoboldCpp free?
Yes. KoboldCpp is free and open source under the AGPL-3.0 licence, with no paid tier. Models are free downloads under their own licences, and you only pay if you choose to rent a cloud GPU to run it.
What is the difference between KoboldCpp and Ollama?
Both run GGUF models locally on llama.cpp. Ollama is a background service with a model registry, aimed at developers and other apps. KoboldCpp is a single portable executable with its own writing and roleplay interface and many more built-in model types: image, video, speech, voice and music generation.
Can I use KoboldCpp with SillyTavern?
Yes. That is one of the most common setups. Start KoboldCpp with a model, then choose KoboldCpp as the API in SillyTavern and point it at http://localhost:5001. KoboldCpp's OpenAI-compatible endpoint works with most other front ends too.
This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.
