LocalAI is a drop-in replacement for the OpenAI API that you run yourself, and it goes well past text. Behind one endpoint on port 8080 it serves chat models, embeddings, rerankers, image and video generation, speech-to-text, text-to-speech and object detection, and it also speaks the Anthropic and ElevenLabs APIs. Each engine (llama.cpp, vLLM, whisper.cpp, diffusers, MLX and some 60 others) is a separate backend image pulled only when a model needs it, so the core stays small.
Ettore Di Giacinto started it in 2023 and it has grown into a platform: a web UI, multi-user accounts with API keys and quotas, built-in agents with MCP, and a distributed mode that spreads models across machines. It is MIT-licensed, written mostly in Go, and releases often; 4.10.0 came out ten days before this scan. No GPU is required to start.
- Repository: github.com/mudler/LocalAI
- Licence: MIT (MIT License)
- Language: Go. Stars: 49.3K. Forks: 4,473. Last push: Sep 27, 2026.
- Scan: safe, Sep 26, 2026, commit 92b8f1d
Who it is for
Self-hosters and teams who want one API for every kind of model, developers swapping OpenAI calls in an existing app for local ones, and anyone running on CPUs or a mix of hardware.
Getting started
1. Run the CPU image with Docker, then open http://localhost:8080 (AMD, Intel and Vulkan images are in the README)
docker run -ti --name local-ai -p 8080:8080 localai/localai:latest2. Or on an NVIDIA GPU with CUDA 12
docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-gpu-nvidia-cuda-123. With the local-ai binary, pull and run a model from the gallery
local-ai run llama-3.2-1b-instruct:q4_k_mThe macOS app is an unsigned DMG, so the README has you clear the quarantine flag with sudo xattr -d com.apple.quarantine /Applications/LocalAI.app after installing. The localai.io site also offers a curl | sh installer; it downloads the release binary from GitHub, checks it against the published checksums, and uses sudo only to write to /usr/local/bin (LOCALAI_NO_SUDO=1 installs to ~/.local/bin instead).
Safety scan
We cloned mudler/LocalAI at commit 92b8f1d on Sep 26, 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, no self-decoding code and no committed binaries across 670,000 lines, mostly Go. The single bare-IP URL is a TEST-NET address (203.0.113.1) in a unit test.
- Three pattern hits, all about install commands rather than code that runs them: the Makefile fetches GoReleaser's runner with curl | bash for release builds, and the website's installer and its copy button both show curl -sSL https://localai.io/install.sh | sh. That script is 274 lines, verifies checksums and asks for sudo only to write the binary to /usr/local/bin.
- The 126 installer scripts are mostly per-backend install.sh and run.sh files that set up each Python or C++ engine; none pipes to a shell or edits your shell profile. The other sudo is .docker/install-base-deps.sh, which installs CUDA, Intel and Vulkan packages during the image build.
- 12 critical advisories after de-duplication. Eight are in go.mod: seven in golang.org/x/crypto 0.51.0, all about its SSH code, and one in gofiber/utils, an indirect dependency. The other four are torch 2.2.2 and 2.4.1, pinned by optional backends (Coqui TTS, faster-whisper, whisper-medusa); their torch.load advisory matters when loading untrusted model files. The React UI's lockfile has a single high entry.
- 36 workflows, none using pull_request_target, but all 70 third-party actions are pinned to tags rather than commits, in the pipeline that publishes the Docker images. Dependabot, Renovate, CodeQL and a security policy are all present.
What the scanner counted
| Check | Result |
|---|---|
| Secrets | None found. |
| Suspicious code | 3 pattern hits found and read; every one is listed under the raw findings. |
| Install-time code | 1 Cargo build script. 126 installer scripts (one can call sudo) |
| Committed binaries | None. |
| CI workflows | 36 workflows. None use pull_request_target. 70 of 70 third-party actions pinned to a tag rather than a commit. |
| Network hosts | 40 distinct hosts referenced from source; most often huggingface.co, github.com, platform.openai.com, localai.io. 1 URL to a bare IP address, listed under the raw findings. |
| Known vulnerabilities | 312 advisories across 1,479 pinned packages: 12 critical, 122 high, 100 moderate, 41 low, 37 unrated. backend/python/ace-step/requirements-hipblas.txt: 1 packages, 1 advisories; backend/python/ace-step/requirements.txt: 1 packages, 0 advisories; backend/python/chatterbox/requirements-cpu.txt: 4 packages, 0 advisories; backend/python/chatterbox/requirements-cublas12.txt: 6 packages, 19 advisories; backend/python/chatterbox/requirements-cublas13.txt: 4 packages, 0 advisories; backend/python/chatterbox/requirements-hipblas.txt: 6 packages, 1 advisories; backend/python/chatterbox/requirements-intel.txt: 5 packages, 0 advisories; backend/python/chatterbox/requirements-l4t12.txt: 4 packages, 0 advisories; backend/python/chatterbox/requirements-l4t13.txt: 4 packages, 0 advisories; backend/python/chatterbox/requirements-mps.txt: 4 packages, 0 advisories; backend/python/chatterbox/requirements.txt: 1 packages, 0 advisories; backend/python/common/template/requirements-intel.txt: 2 packages, 0 advisories; backend/python/common/template/requirements.txt: 1 packages, 0 advisories; backend/python/coqui/requirements-cpu.txt: 3 packages, 42 advisories; backend/python/coqui/requirements-cublas12.txt: 3 packages, 42 advisories; backend/python/coqui/requirements-hipblas.txt: 3 packages, 23 advisories; backend/python/coqui/requirements-intel.txt: 3 packages, 30 advisories; backend/python/coqui/requirements-mps.txt: 2 packages, 31 advisories; backend/python/coqui/requirements.txt: 2 packages, 0 advisories; backend/python/diffusers/requirements-cpu.txt: 4 packages, 14 advisories; backend/python/diffusers/requirements-cublas12.txt: 2 packages, 5 advisories; backend/python/diffusers/requirements-cublas13.txt: 2 packages, 5 advisories; backend/python/diffusers/requirements-hipblas.txt: 4 packages, 6 advisories; backend/python/diffusers/requirements-intel.txt: 2 packages, 5 advisories; backend/python/diffusers/requirements-l4t12.txt: 2 packages, 5 advisories; backend/python/diffusers/requirements-l4t13.txt: 2 packages, 5 advisories; backend/python/diffusers/requirements-mps.txt: 4 packages, 14 advisories; backend/python/diffusers/requirements.txt: 1 packages, 0 advisories; backend/python/faster-qwen3-tts/requirements.txt: 2 packages, 0 advisories; backend/python/faster-whisper/requirements-cpu.txt: 1 packages, 20 advisories; backend/python/faster-whisper/requirements-cublas12.txt: 1 packages, 20 advisories; backend/python/faster-whisper/requirements-cublas13.txt: 1 packages, 4 advisories; backend/python/faster-whisper/requirements-mps.txt: 1 packages, 9 advisories; backend/python/faster-whisper/requirements.txt: 1 packages, 0 advisories; backend/python/fish-speech/requirements-cublas13.txt: 2 packages, 4 advisories; backend/python/fish-speech/requirements-hipblas.txt: 2 packages, 1 advisories; backend/python/fish-speech/requirements-l4t13.txt: 2 packages, 4 advisories; backend/python/fish-speech/requirements.txt: 2 packages, 0 advisories; backend/python/funasr/requirements-mps.txt: 2 packages, 9 advisories; backend/python/funasr/requirements.txt: 2 packages, 0 advisories; backend/python/insightface/requirements.txt: 1 packages, 0 advisories; backend/python/kitten-tts/requirements-mps.txt: 2 packages, 0 advisories; backend/python/kitten-tts/requirements.txt: 2 packages, 0 advisories; backend/python/kokoro/requirements-cublas12.txt: 2 packages, 9 advisories; backend/python/kokoro/requirements-cublas13.txt: 2 packages, 4 advisories; backend/python/kokoro/requirements-hipblas.txt: 2 packages, 1 advisories; backend/python/kokoro/requirements-intel.txt: 3 packages, 23 advisories; backend/python/kokoro/requirements-mps.txt: 1 packages, 9 advisories; backend/python/kokoro/requirements.txt: 2 packages, 0 advisories; backend/python/liquid-audio/requirements.txt: 1 packages, 0 advisories; backend/python/llama-cpp-quantization/requirements-cpu.txt: 1 packages, 1 advisories; backend/python/llama-cpp-quantization/requirements-mps.txt: 1 packages, 2 advisories; backend/python/llama-cpp-quantization/requirements.txt: 1 packages, 0 advisories; backend/python/longcat-video/requirements-cpu.txt: 2 packages, 1 advisories; backend/python/longcat-video/requirements-cublas12.txt: 2 packages, 1 advisories; backend/python/longcat-video/requirements-cublas13.txt: 2 packages, 1 advisories; backend/python/longcat-video/requirements-l4t13.txt: 2 packages, 1 advisories; backend/python/longcat-video/requirements.txt: 14 packages, 29 advisories; backend/python/mlx-audio/requirements.txt: 1 packages, 0 advisories; backend/python/mlx-distributed/requirements.txt: 1 packages, 0 advisories; backend/python/mlx-video/requirements.txt: 1 packages, 0 advisories; backend/python/mlx-vlm/requirements.txt: 1 packages, 0 advisories; backend/python/mlx/requirements.txt: 1 packages, 0 advisories; backend/python/moonshine/requirements-mps.txt: 1 packages, 0 advisories; backend/python/moonshine/requirements.txt: 1 packages, 0 advisories; backend/python/nemo/requirements-cublas13.txt: 1 packages, 0 advisories; backend/python/nemo/requirements.txt: 3 packages, 1 advisories; backend/python/neutts/requirements-after.txt: 2 packages, 1 advisories; backend/python/neutts/requirements-cpu.txt: 7 packages, 17 advisories; backend/python/neutts/requirements-cublas12.txt: 7 packages, 17 advisories; backend/python/neutts/requirements-hipblas.txt: 6 packages, 10 advisories; backend/python/neutts/requirements-l4t12.txt: 4 packages, 0 advisories; backend/python/neutts/requirements.txt: 2 packages, 0 advisories; backend/python/outetts/requirements-cpu.txt: 4 packages, 9 advisories; backend/python/outetts/requirements-cublas12.txt: 4 packages, 9 advisories; backend/python/outetts/requirements-cublas13.txt: 4 packages, 5 advisories; backend/python/outetts/requirements-hipblas.txt: 4 packages, 1 advisories; backend/python/outetts/requirements-intel.txt: 3 packages, 0 advisories; backend/python/outetts/requirements.txt: 3 packages, 0 advisories; backend/python/pocket-tts/requirements-hipblas.txt: 1 packages, 1 advisories; backend/python/pocket-tts/requirements-mps.txt: 2 packages, 9 advisories; backend/python/pocket-tts/requirements.txt: 2 packages, 0 advisories; backend/python/qwen-asr/requirements-hipblas.txt: 1 packages, 1 advisories; backend/python/qwen-asr/requirements-mps.txt: 1 packages, 9 advisories; backend/python/qwen-asr/requirements.txt: 2 packages, 0 advisories; backend/python/qwen-tts/requirements-hipblas.txt: 2 packages, 1 advisories; backend/python/qwen-tts/requirements.txt: 2 packages, 0 advisories; backend/python/rerankers/requirements-cpu.txt: 1 packages, 9 advisories; backend/python/rerankers/requirements-cublas12.txt: 1 packages, 9 advisories; backend/python/rerankers/requirements-cublas13.txt: 1 packages, 4 advisories; backend/python/rerankers/requirements-hipblas.txt: 1 packages, 1 advisories; backend/python/rerankers/requirements-mps.txt: 1 packages, 9 advisories; backend/python/rerankers/requirements.txt: 1 packages, 0 advisories; backend/python/rfdetr/requirements-cpu.txt: 1 packages, 9 advisories; backend/python/rfdetr/requirements-cublas12.txt: 1 packages, 9 advisories; backend/python/rfdetr/requirements-cublas13.txt: 1 packages, 4 advisories; backend/python/rfdetr/requirements-hipblas.txt: 2 packages, 1 advisories; backend/python/rfdetr/requirements-mps.txt: 1 packages, 9 advisories; backend/python/rfdetr/requirements.txt: 1 packages, 0 advisories; backend/python/sglang/requirements-cpu.txt: 1 packages, 1 advisories; backend/python/sglang/requirements-cublas12.txt: 1 packages, 4 advisories; backend/python/sglang/requirements.txt: 1 packages, 0 advisories; backend/python/speaker-recognition/requirements.txt: 1 packages, 0 advisories; backend/python/tinygrad/requirements.txt: 2 packages, 0 advisories; backend/python/transformers/requirements-cpu.txt: 5 packages, 9 advisories; backend/python/transformers/requirements-cublas12.txt: 5 packages, 9 advisories; backend/python/transformers/requirements-cublas13.txt: 5 packages, 5 advisories; backend/python/transformers/requirements-hipblas.txt: 5 packages, 1 advisories; backend/python/transformers/requirements-intel.txt: 4 packages, 0 advisories; backend/python/transformers/requirements-mps.txt: 5 packages, 9 advisories; backend/python/transformers/requirements.txt: 3 packages, 0 advisories; backend/python/trl/requirements-cpu.txt: 1 packages, 2 advisories; backend/python/trl/requirements-cublas12.txt: 1 packages, 2 advisories; backend/python/trl/requirements-cublas13.txt: 1 packages, 2 advisories; backend/python/trl/requirements-mps.txt: 1 packages, 2 advisories; backend/python/trl/requirements.txt: 1 packages, 0 advisories; backend/python/vibevoice/requirements-cpu.txt: 2 packages, 9 advisories; backend/python/vibevoice/requirements-hipblas.txt: 2 packages, 1 advisories; backend/python/vibevoice/requirements-mps.txt: 2 packages, 9 advisories; backend/python/vibevoice/requirements.txt: 2 packages, 0 advisories; backend/python/vllm-omni/requirements-cublas12.txt: 1 packages, 14 advisories; backend/python/vllm-omni/requirements.txt: 1 packages, 0 advisories; backend/python/vllm/requirements-cpu.txt: 1 packages, 4 advisories; backend/python/vllm/requirements-cublas13-after.txt: 1 packages, 0 advisories; backend/python/vllm/requirements-l4t13-after.txt: 1 packages, 0 advisories; backend/python/vllm/requirements.txt: 1 packages, 0 advisories; backend/python/voxcpm/requirements-hipblas.txt: 1 packages, 1 advisories; backend/python/voxcpm/requirements.txt: 2 packages, 0 advisories; backend/python/whisper-medusa/requirements-cpu.txt: 2 packages, 20 advisories; backend/python/whisper-medusa/requirements-cublas12.txt: 2 packages, 20 advisories; backend/python/whisper-medusa/requirements.txt: 2 packages, 23 advisories; backend/python/whisperx/requirements-cpu.txt: 1 packages, 8 advisories; backend/python/whisperx/requirements.txt: 1 packages, 0 advisories; backend/rust/kokoros/Cargo.lock: 313 packages, 6 advisories; core/http/react-ui/package-lock.json: 614 packages, 1 advisories; go.mod: 533 packages, 95 advisories. |
| Project hygiene | Has security policy, automated dependency updates, CodeQL, licence file, 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 (3)
| Where | Rule | Match |
|---|---|---|
| Makefile:74 | download-piped-to-shell | GORELEASER=curl -sfL https://goreleaser.com/static/run | bash -s -- |
| website/static/install.sh:4 | download-piped-to-shell | # curl -sSL https://localai.io/install.sh | sh |
| website/static/js/site.js:377 | download-piped-to-shell | var CMD = {'p-script':'curl -sSL https://localai.io/install.sh | sh', |
URLs to bare IP addresses (1)
| Where | Rule | Match |
|---|---|---|
| pkg/utils/base64_internal_test.go:45 | ip-literal-url | b64, err := GetContentURIAsBase64("http://203.0.113.1/whatever.png") |
Installer scripts (126)
- .docker/install-base-deps.sh, 299 lines, uses sudo; talks to developer.download.nvidia.com, github.com, repositories.intel.com, sdk.lunarg.com
- backend/cpp/audio-cpp/run.sh, 64 lines
- backend/cpp/bonsai/run.sh, 78 lines
- backend/cpp/ds4/run.sh, 10 lines
- backend/cpp/ik-llama-cpp/run.sh, 41 lines
- backend/cpp/llama-cpp/run.sh, 81 lines
- backend/cpp/privacy-filter/run.sh, 16 lines
- backend/cpp/run-unit-tests.sh, 82 lines; talks to raw.githubusercontent.com
- backend/cpp/turboquant/run.sh, 81 lines
- backend/go/acestep-cpp/run.sh, 64 lines
- backend/go/ced/run.sh, 21 lines
- backend/go/cloud-proxy/run.sh, 7 lines
- backend/go/crispasr/run.sh, 63 lines
- backend/go/depth-anything-cpp/run.sh, 58 lines
- backend/go/face-detect/run.sh, 17 lines
- backend/go/kimodocpp/run.sh, 23 lines
- backend/go/local-store/run.sh, 6 lines
- backend/go/localvqe/run.sh, 35 lines
- backend/go/locate-anything-cpp/run.sh, 58 lines
- backend/go/magpie-tts-cpp/run.sh, 58 lines
- backend/go/moss-transcribe-cpp/run.sh, 23 lines
- backend/go/moss-tts-cpp/run.sh, 58 lines
- backend/go/nemo-speech-cpp/run.sh, 29 lines
- backend/go/omnivoice-cpp/run.sh, 58 lines
- backend/go/opus/run.sh, 21 lines
- backend/go/parakeet-cpp/run.sh, 23 lines
- backend/go/piper/run.sh, 20 lines
- backend/go/qwen3-tts-cpp/run.sh, 58 lines
- backend/go/rfdetr-cpp/run.sh, 58 lines
- backend/go/sam3-cpp/run.sh, 58 lines
- backend/go/sherpa-onnx/run.sh, 20 lines
- backend/go/silero-vad/run.sh, 18 lines
- backend/go/stablediffusion-ggml/run.sh, 63 lines
- backend/go/supertonic/run.sh, 22 lines
- backend/go/trellis2cpp/run.sh, 62 lines
- backend/go/valkey-store/run.sh, 7 lines
- backend/go/vibevoice-cpp/run.sh, 55 lines
- backend/go/vllm-cpp/run.sh, 30 lines
- backend/go/voice-detect/run.sh, 17 lines
- backend/go/voxtral/run.sh, 50 lines
- backend/go/whisper/run.sh, 63 lines
- backend/python/ace-step/install.sh, 27 lines; talks to github.com
- backend/python/ace-step/run.sh, 10 lines
- backend/python/chatterbox/install.sh, 38 lines
- backend/python/chatterbox/run.sh, 9 lines
- backend/python/common/template/install.sh, 20 lines
- backend/python/common/template/run.sh, 9 lines
- backend/python/coqui/install.sh, 20 lines
- backend/python/coqui/run.sh, 9 lines
- backend/python/diffusers/install.sh, 31 lines
- backend/python/diffusers/run.sh, 18 lines; talks to github.com
- backend/python/faster-qwen3-tts/install.sh, 14 lines
- backend/python/faster-qwen3-tts/run.sh, 10 lines
- backend/python/faster-whisper/install.sh, 43 lines; talks to github.com
- backend/python/faster-whisper/run.sh, 9 lines
- backend/python/fish-speech/install.sh, 76 lines; talks to github.com
- backend/python/fish-speech/run.sh, 19 lines
- backend/python/fish-speech/run_test.sh, 24 lines
- backend/python/funasr/install.sh, 22 lines
- backend/python/funasr/run.sh, 10 lines
- backend/python/insightface/install.sh, 29 lines
- backend/python/insightface/run.sh, 10 lines
- backend/python/kitten-tts/install.sh, 20 lines
- backend/python/kitten-tts/run.sh, 9 lines
- backend/python/kokoro/install.sh, 29 lines
- backend/python/kokoro/run.sh, 9 lines
- backend/python/liquid-audio/install.sh, 25 lines
- backend/python/liquid-audio/run.sh, 11 lines
- backend/python/llama-cpp-quantization/install.sh, 79 lines; talks to github.com
- backend/python/llama-cpp-quantization/run.sh, 11 lines
- backend/python/longcat-video/install.sh, 17 lines
- backend/python/longcat-video/run.sh, 13 lines
- backend/python/mlx-audio/install.sh, 15 lines
- backend/python/mlx-audio/run.sh, 11 lines
- backend/python/mlx-distributed/install.sh, 16 lines
- backend/python/mlx-distributed/run.sh, 12 lines
- backend/python/mlx-video/install.sh, 15 lines
- backend/python/mlx-video/run.sh, 12 lines
- backend/python/mlx-vlm/install.sh, 15 lines
- backend/python/mlx-vlm/run.sh, 11 lines
- backend/python/mlx/install.sh, 16 lines
- backend/python/mlx/run.sh, 11 lines
- backend/python/moonshine/install.sh, 13 lines
- backend/python/moonshine/run.sh, 11 lines
- backend/python/nemo/install.sh, 42 lines
- backend/python/nemo/run.sh, 10 lines
- backend/python/neutts/install.sh, 47 lines; talks to github.com
- backend/python/neutts/run.sh, 10 lines
- backend/python/outetts/install.sh, 12 lines
- backend/python/outetts/run.sh, 10 lines
- backend/python/pocket-tts/install.sh, 31 lines
- backend/python/pocket-tts/run.sh, 10 lines
- backend/python/qwen-asr/install.sh, 22 lines
- backend/python/qwen-asr/run.sh, 10 lines
- backend/python/qwen-tts/install.sh, 14 lines
- backend/python/qwen-tts/run.sh, 10 lines
- backend/python/rerankers/install.sh, 21 lines
- backend/python/rerankers/run.sh, 10 lines
- backend/python/rfdetr/install.sh, 20 lines
- backend/python/rfdetr/run.sh, 9 lines
- backend/python/sglang/install.sh, 118 lines; talks to github.com, pytorch.org
- backend/python/sglang/run.sh, 30 lines
- backend/python/speaker-recognition/install.sh, 20 lines
- backend/python/speaker-recognition/run.sh, 10 lines
- backend/python/tinygrad/install.sh, 18 lines
- backend/python/tinygrad/run.sh, 56 lines
- backend/python/transformers/install.sh, 23 lines
- backend/python/transformers/run.sh, 15 lines; talks to github.com
- backend/python/trl/install.sh, 52 lines; talks to github.com, raw.githubusercontent.com
- backend/python/trl/run.sh, 11 lines
- backend/python/vibevoice/install.sh, 50 lines; talks to github.com
- backend/python/vibevoice/run.sh, 9 lines
- backend/python/vllm-omni/install.sh, 98 lines; talks to github.com, pytorch.org, wheels.vllm.ai
- backend/python/vllm-omni/run.sh, 12 lines
- backend/python/vllm/install.sh, 287 lines; talks to docs.redhat.com, docs.vllm.ai, download.pytorch.org, github.com, pytorch.org, raw.githubusercontent.com, wheels.vllm.ai
- backend/python/vllm/run.sh, 74 lines; talks to github.com
- backend/python/voxcpm/install.sh, 45 lines; talks to github.com
- backend/python/voxcpm/run.sh, 10 lines
- backend/python/whisper-medusa/install.sh, 14 lines
- backend/python/whisper-medusa/run.sh, 10 lines
- backend/python/whisperx/install.sh, 29 lines
- backend/python/whisperx/run.sh, 10 lines
- backend/rust/kokoros/run.sh, 24 lines
- scripts/install-fizzbee.sh, 97 lines; talks to github.com
- scripts/run-coverage.sh, 102 lines
- website/static/install.sh, 274 lines, uses sudo; talks to api.github.com, github.com, localai.io
Worst known vulnerabilities (24 of 312)
| Advisory | Severity | Package | Summary |
|---|---|---|---|
| GHSA-53q9-r3pm-6pq6 | critical | torch@2.4.1 | PyTorch: `torch.load` with `weights_only=True` leads to remote code execution |
| CVE-2024-48063 | critical | torch@2.4.1 | |
| GHSA-53q9-r3pm-6pq6 | critical | torch@2.2.2 | PyTorch: `torch.load` with `weights_only=True` leads to remote code execution |
| CVE-2024-48063 | critical | torch@2.2.2 | |
| GHSA-m98w-cqp3-qcqr | critical | github.com/gofiber/utils@1.1.0 | Fiber Utils UUIDv4 and UUID Silent Fallback to Predictable Values |
| GHSA-5cgq-3rg8-m6cv | critical | golang.org/x/crypto@0.51.0 | golang.org/x/crypto vulnerable to auth bypass via unenforced @revoked status |
| GHSA-89gr-r52h-f8rx | critical | golang.org/x/crypto@0.51.0 | golang.org/x/crypto: FIDO/U2F security key physical presence check can be bypassed |
| GHSA-f5wc-c3c7-36mc | critical | golang.org/x/crypto@0.51.0 | golang.org/x/crypto doesn't drop invoking agent constraints when forwarding keys |
| GHSA-jppx-rxg9-jmrx | critical | golang.org/x/crypto@0.51.0 | golang.org/x/crypto doesn't enforce invoking key constraints |
| GHSA-rm3j-f69w-wqmq | critical | golang.org/x/crypto@0.51.0 | golang.org/x/crypto vulnerable to infinite loop on large channel writes |
| GHSA-vgwf-h737-ff37 | critical | golang.org/x/crypto@0.51.0 | golang.org/x/crypto: Invoking client can cause server deadlock on unexpected responses |
| GHSA-x527-x647-q7gg | critical | golang.org/x/crypto@0.51.0 | golang.org/x/crypto: Invoking VerifiedPublicKeyCallback permissions skip enforcement |
| CVE-2025-55551 | high | torch@2.6.0+cu124 | |
| CVE-2025-55552 | high | torch@2.6.0+cu124 | |
| CVE-2025-55553 | high | torch@2.6.0+cu124 | |
| CVE-2025-55557 | high | torch@2.6.0+cu124 | |
| CVE-2025-55558 | high | torch@2.6.0+cu124 | |
| CVE-2025-55560 | high | torch@2.6.0+cu124 | |
| CVE-2026-4538 | high | torch@2.6.0+cu124 | |
| GHSA-63cw-57p8-fm3p | high | torch@2.6.0+cu124 | |
| GHSA-29pf-2h5f-8g72 | high | transformers@4.48.3 | HuggingFace transformers vulnerable to remote code execution |
| GHSA-fgcw-684q-jj6r | high | transformers@4.48.3 | huggingface/transformers: Arbitrary Code Execution During Model Initialization in the LightGlue Model Loading Path |
| GHSA-xrqw-3rrv-vx5w | high | transformers@4.48.3 | Transformers save_pretrained path traversal allows arbitrary file writes through chat template names |
| CVE-2025-14920 | high | transformers@4.48.3 |
By the numbers
| Stars | 49.3K |
|---|---|
| Forks | 4,473 |
| Contributors | 254 |
| Commits | 8,134 |
| Open issues | 102 |
| Open pull requests | 73 |
| Releases | 136 |
| Latest release | v4.10.0 |
| Licence | MIT |
| Main language | Go |
| Project age | 3 years |
| Last push | Sep 27, 2026 |
| Tracked files | 3,895 |
| Lines of code | 671.3K |
| Checkout size | 57 MB |
Lines by language: Go 385.8K, JavaScript 69.3K, CSS 36.5K, Markdown 32.4K, YAML 31.6K, Python 31.2K.
Questions
Is LocalAI free?
Yes. LocalAI is MIT-licensed and free for any use, with no paid edition. Models from its gallery, Hugging Face or the Ollama registry are free to download under their own licences. Running it costs only your hardware, and since it runs on a CPU, a spare machine or a small server is enough to try it.
Does LocalAI need a GPU?
No. The default image runs on CPU, and small quantized models of 1B to 4B parameters are usable that way. A GPU makes it much faster, and LocalAI detects NVIDIA, AMD, Intel, Apple Silicon and Vulkan hardware and downloads the matching backend automatically. Image and video generation are where a GPU stops being optional in practice.
LocalAI or Ollama?
Ollama does one thing, text and vision models on llama.cpp, with the least setup. LocalAI is broader: speech, image, video and detection models behind the same API, OpenAI, Anthropic and ElevenLabs compatibility, multi-user accounts and a distributed mode, and it can run vLLM or llama.cpp as backends. Pick Ollama for a personal chat model and LocalAI for a shared, multi-modal server.
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.
