6 min read

KoboldCpp: Run Local AI Models From One File, With a Web UI (GitHub, Scanned)

One file that runs local language, image, speech and music models with a built-in web UI and API.

KoboldCpp logo
✅
Scan: safe. Nothing malicious. It listens on every network interface with no password by default, so add --host 127.0.0.1 or a --password on any shared network, and the repository carries a few prebuilt helper binaries. Scanned Oct 22, 2026; the full report is below.

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-x64

2. 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-arm64

3. Pick a GGUF model in the launcher, click Launch, then open the web UI

open http://localhost:5001

Models 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

CheckResult
SecretsNone found.
Suspicious code5 pattern hits found and read; every one is listed under the raw findings.
Install-time code1 npm lifecycle script. 1 installer script
Committed binaries7 executable or compiled objects committed; listed under the raw findings.
CI workflows8 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 hosts40 distinct hosts referenced from source; most often registry.khronos.org, github.com, huggingface.co, www.apache.org. No URLs to bare IP addresses.
Known vulnerabilities72 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 hygieneHas licence file. Missing security policy, automated dependency updates, CodeQL, contributing guide.
OpenSSF ScorecardNot 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)
WhereRuleMatch
android_install.sh:35download-piped-to-shell# Determine script directory (works for both curl|sh and ./install.sh)
android_install.sh:39download-piped-to-shellSCRIPT_DIR="$(pwd)" # Piped execution (curl | sh)
examples/docker-reference/docker-helper.sh:97download-piped-to-shell (test/example)curl -fsSL https://code-server.dev/install.sh | sh
koboldcpp.py:6996very-long-line7952 chars
koboldcpp.py:7190very-long-line4163 chars
npm lifecycle scripts (1)
  • tools/ui/package.json prepare: svelte-kit sync || echo ''
Installer scripts (1)
Committed binaries (7)
  • kcpp_src/bin/glslc-linux: ELF, 9 MB
  • kcpp_src/bin/aria2c-win.exe: PE (Windows executable), 6 MB
  • kcpp_src/bin/glslc.exe: PE (Windows executable), 5 MB
  • cudart64_12.dll: PE (Windows executable), 554 KB
  • cudart64_110.dll: PE (Windows executable), 502 KB
  • kcpp_src/bin/simplecpuinfo.exe: PE (Windows executable), 32 KB
  • kcpp_src/bin/simplecpuinfo: ELF, 15 KB
Worst known vulnerabilities (24 of 72)
AdvisorySeverityPackageSummary
GHSA-f2ph-cmg5-wxc8critical@storybook/addon-vitest@10.5.6Storybook: Missing origin validation in Storybook preview allows code injection from malicious websites
GHSA-jqcg-44mw-7w3hcriticalproxy-addr@2.0.7proxy-addr vulnerable to IP spoofing via IPv4-mapped IPv6 trust subnet
GHSA-f2ph-cmg5-wxc8criticalstorybook@10.5.6Storybook: Missing origin validation in Storybook preview allows code injection from malicious websites
GHSA-22jm-h49p-29qwhigh@modelcontextprotocol/sdk@1.30.0MCP TypeScript SDK: Experimental tasks were not tied to the session that created them
GHSA-46jr-4wx8-v453high@modelcontextprotocol/sdk@1.30.0MCP TypeScript SDK: One HTTP request within the default size limit could exhaust server memory during validation
GHSA-6qxp-vccf-f47hhigh@modelcontextprotocol/sdk@1.30.0MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server
GHSA-6j4f-fj2g-mc7phighbrace-expansion@5.0.9brace-expansion: DoS via uncontrolled recursion in parseCommaParts causing stack exhaustion
GHSA-qhr7-859c-m2p7highbrace-expansion@5.0.9brace-expansion: DoS via uncontrolled recursion on nested brace groups causing stack exhaustion
GHSA-6j4f-fj2g-mc7phighbrace-expansion@1.1.18brace-expansion: DoS via uncontrolled recursion in parseCommaParts causing stack exhaustion
GHSA-qhr7-859c-m2p7highbrace-expansion@1.1.18brace-expansion: DoS via uncontrolled recursion on nested brace groups causing stack exhaustion
GHSA-73wf-gq98-2v4ghighbrowserslist@4.28.2Browserslist: Uncaught crash / prototype write via untrusted browserslist-stats.json custom stats (normalizeStats)
GHSA-c83g-rgw3-j3cxhighbrowserslist@4.28.2Browserslist: Unbounded memory growth (no cache eviction) via distinct query results, leading to eventual OOM
GHSA-j22f-vq7h-c4qmhighdevalue@5.8.1devalue: `stringify`/`uneval` serialize shared memory
GHSA-mcm9-63f2-9j32highdevalue@5.8.1devalue: Repeated primitive strings cause quadratic expansion in uneval
GHSA-r9w8-h9r3-54w4highdevalue@5.8.1devalue: Custom ArrayBuffer revivers can bypass typed-array allocation validation
GHSA-x5rw-q4pp-hg5ghighdevalue@5.8.1devalue: stringifyAsync can cause an unhandled rejection despite a caught returned promise
GHSA-5jgf-p345-68v8highfast-uri@3.1.5fast-uri vulnerable to host confusion via skipped IDN canonicalization on scheme-relative references
GHSA-f65p-4m7j-42xchighfast-uri@3.1.5fast-uri vulnerable to server-side request forgery via malformed IPv6 normalization
GHSA-fph4-wmhf-6fwfhighfast-uri@3.1.5fast-uri vulnerable to server-side request forgery via repeated hostname percent-decoding
GHSA-jqff-g426-hqxphighfast-uri@3.1.5fast-uri vulnerable to host confusion via percent-encoded scheme normalization
GHSA-qw65-cvwx-89v3highfast-uri@3.1.5fast-uri vulnerable to authority injection via an unvalidated port in serialize
GHSA-6j4f-fj2g-mc7phighbrace-expansion@2.1.4brace-expansion: DoS via uncontrolled recursion in parseCommaParts causing stack exhaustion
GHSA-qhr7-859c-m2p7highbrace-expansion@2.1.4brace-expansion: DoS via uncontrolled recursion on nested brace groups causing stack exhaustion
GHSA-8r9p-f939-6h3chighfollow-redirects@1.16.0follow-redirects sensitiveHeaders regex escaping can expose credential headers
Workflows worth a look

By the numbers

Stars12K
Forks796
Contributors2,180
Commits16.4K
Open issues525
Open pull requests6
Releases136
Latest releasev1.123.1
LicenceAGPL-3.0
Main languageC++
Project age3 years
Last pushOct 22, 2026
Tracked files2,872
Lines of code1.3M
Checkout size313 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.