Skip to content
CAI
Software that uses CAICheck a score

AlexsJones/llmfit

55.2

Adequate · 27 September 2026

58.2k

lines of production code

Rust

with Python, JavaScript

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

llmfit is a local LLM compatibility analysis tool that detects system hardware specifications and estimates model fit metrics such as memory requirements and performance. It provides a multi-interface experience through a terminal UI, a Tauri-based desktop application, and an embedded web dashboard, all of which allow users to browse a curated model catalog and download models via Ollama. The system relies on embedded community benchmarks and hardware profiles to perform offline analysis, ensuring accurate planning without requiring network fetches.

Features

Add embedded React web dashboard with Vite configuration

The llmfit-web directory now contains the source code for a React-based web dashboard, including the entry point (index.html), Vite configuration (vite.config.js), and documentation (README.md). The configuration sets up a development server on port 5173 and a preview server on port 8787, both proxying API requests to the backend at 127.0.0.1:8787. It also includes security measures like DNS rebinding protection via allowed hosts and test environment setup using jsdom.

llmfit-web · high confidence

Embedded community benchmarks and hardware profiles

The application now bundles community-submitted benchmark results and hardware profiles directly into the binary at build time. This allows users to access aggregated community data and hardware-specific configurations without requiring network fetches or separate CI steps, ensuring that merged contributions are immediately available to all users in the next release.

llmfit-core · high confidence

Initial Tauri desktop application shell with system and model fit detection

The desktop application entry point is established using Tauri, introducing a new main module that exposes core analysis capabilities to the UI layer. This includes commands to detect local hardware specifications (CPU, RAM, GPU details) and to retrieve a ranked list of compatible models based on system constraints, providing detailed fit metrics such as memory requirements, estimated performance, and supported inference runtimes. Additionally, the app integrates with Ollama to allow users to pull models directly from the desktop interface, with commands to start downloads and poll their real-time progress status.

llmfit-desktop/src · high confidence

Initial project scaffolding and documentation

This change establishes the foundational structure of the llmfit project. It introduces the MIT License, a Code of Conduct, and a Contributing guide to standardize community interaction. The repository is configured with a Makefile for build/test workflows, a Dockerfile for containerized deployment, and a .dockerignore to optimize build contexts. Documentation is expanded with a comprehensive API guide (API.md), a model catalog (MODELS.md), and localized READMEs for Chinese and Japanese speakers. Additionally, release automation is initialized via .release-please-manifest.json, and repository hygiene is improved with .gitattributes and a CNAME for web hosting.

(repo-wide) · high confidence

Introduce Tauri-based desktop application with WebView2 bootstrapper

The llmfit-desktop location now implements a native desktop application using the Tauri framework, replacing previous packaging methods. This change introduces a build configuration (build.rs) and a Tauri configuration file (tauri.conf.json) that defines the app as 'llmfit' (version 0.4.8) with a 1200x800 resizable window. A key user-facing improvement is the configuration for Windows to download the WebView2 bootstrapper, ensuring the app can run on systems without WebView2 pre-installed. The app also enforces a strict Content Security Policy (CSP) for security.

llmfit-desktop · high confidence

Introduce desktop UI with system specs, model compatibility analysis, and Chinese localization

The desktop application now includes a dedicated user interface that displays real-time system specifications (CPU, RAM, GPU, and unified memory) and provides a detailed compatibility analysis for local LLMs. Users can view fit levels, estimated performance, and runtime modes in a sortable table, and access a detailed modal for each model that includes memory usage visualization and installation status. A new language selector allows switching between English and Simplified Chinese, and the interface supports downloading models directly via Ollama when available.

llmfit-desktop/ui · high confidence

New TUI application with embedded web dashboard and theme support

The llmfit-tui package introduces a new terminal user interface and an embedded web dashboard. The TUI now supports 10 color themes (including Catppuccin variants) which are persisted to the user's config directory. The embedded web dashboard is built from the llmfit-web frontend assets during compilation, with a fallback placeholder page if assets are missing. The application also includes a new download history feature that tracks recent model downloads, and a filter configuration system that persists user filter preferences across sessions.

llmfit-tui/src · high confidence

New application icon and demo recording added to assets

The assets directory now includes a new SVG icon (\assets/icon.svg\) featuring a chip and neural network design, as well as a new demo recording script (\assets/demo.tape\) that defines a reproducible sequence for generating a README GIF. These additions provide visual branding and a standardized demonstration of the tool's interface for documentation purposes.

assets · high confidence

New maintenance and validation scripts for model data and CI

This change introduces a suite of new scripts in the \scripts/\ directory to support model database maintenance, data validation, and CI integration. \scrape\_hf\_models.py\ is updated to support parallel fetching (\--threads\), pagination, and rate-limit handling for Hugging Face. New scripts include \scrape\_benchmarks.py\ to cache hardware benchmark data, \scrape\_docker\_models.py\ to map Hugging Face models to Docker Model Runner tags, and \update\_models.sh\ to orchestrate scraping, JSON validation, and binary rebuilding. Validation scripts \validate\_community\_benchmarks.py\ and \validate\_generation\_scoring.py\ enforce schema and scoring logic for community submissions and model quality. \verify\_models.py\ checks the availability of Hugging Face models and Ollama tags. Finally, \test\_api.py\ provides local API validation for the \llmfit serve\ endpoint, and \install-openclaw-skill.sh\ automates the installation of the \llmfit-advisor\ skill for OpenClaw.

scripts · high confidence

Removals

Removal of legacy CLI and TUI display logic

The \src\ directory has removed the previous implementation of the command-line interface and terminal user interface, including the hardware detection, model fit analysis, and display modules. This change eliminates the old table-based output and interactive TUI components, indicating a shift in how the application presents system specifications and model compatibility information to the user.

src · high confidence

Behavioural changes

Enforce Rust code formatting on push

A new pre-push git hook has been added to automatically check Rust code formatting before changes are pushed to the remote repository. The hook runs \cargo fmt --check\ to verify that the codebase adheres to the standard Rust formatting style; if formatting issues are detected, the push is blocked with an error message instructing the user to run \cargo fmt\ to fix them.

.githooks · high confidence

Python package structure and build system reorganized

The llmfit-python package has been restructured to use a custom Hatchling build hook that injects the pre-compiled Rust binary into the wheel, ensuring the CLI is correctly installed and version-matched. This change introduces a new Makefile for development tasks (formatting, linting, testing) and adds a uv.lock file to manage Python dependencies, while also adding a symlink for the LICENSE file and a test suite to verify binary availability and versioning.

llmfit-python · high confidence

Web UI restructured with new components, state management, and comparison view

The web interface has been refactored from a single-page component into a modular architecture using React Contexts (Filter, Model, I18n) and custom hooks. This change introduces a side-by-side model comparison view (up to 5 models), a hardware simulation panel for estimating fit on different system specs, and a detailed model diagnostics panel with plan estimation. The UI now supports 10 color themes and Chinese (zh-CN) localization, while the API layer has been updated to accept runtime and model parameters for plan estimates and simulation data.

llmfit-web/src · high confidence

Fixes

283 commits (143 fixes) fixing llmfit-core/src

A fix in llmfit-core/src — 283 commits (143 fixs), 18 files.

llmfit-core/src · medium confidence · unverified

Test coverage

Added CLI integration smoke tests for hardware profiles, storage planning, and macOS GPU detection; Added Docker Compose integration tests for the application stack; Added nvidia-smi parser test fixtures; Added sysfs test fixtures for GPU VRAM and vendor scenarios; Added validation tests for estimator accuracy, hardware profiles, ONNX catalog, and model schema.

Dependencies

Project restructured into a multi-crate workspace with new desktop and web interfaces

The repository has been reorganized from a single binary into a Rust workspace containing \llmfit-core\ (shared library), \llmfit-tui\ (terminal interface), and \llmfit-desktop\ (Tauri-based macOS app), alongside a new \llmfit-web\ frontend. This structural change introduces several dependency updates: the Rust codebase now uses \ureq\ 3 (upgraded from \ureq\ 2), \clap\ 4.6, \ratatui\ 0.30, and \sysinfo\ 0.39, while the web interface adds React 18 and Vite 5. The core library also adds \objc2-metal\ for macOS GPU memory detection and \schemars\ for JSON schema generation.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 43 → 55 (+12.1)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 58 → 55 (-2.5)
  • Architecture 97 → 100 (+3.2)
  • Maturity 59 → 64 (+5.0)
  • Readiness 30 → 85 (+54.4)
  • Security 44 → 60 (+16.0)
  • Accessibility 47 (new)

Resolved (85)

  • Coverage not measured — test suite did not build
  • Critical CVE: [GHSA redacted] (llmfit-web/package-lock.json)
  • Dimension evaluation failed
  • High CVE: [GHSA redacted] (llmfit-web/package-lock.json)
  • High CVE: [GHSA redacted] (Cargo.lock)
  • High CVE: [GHSA redacted] (llmfit-web/package-lock.json)
  • High CVE: [GHSA redacted] (llmfit-web/package-lock.json)
  • High CVE: [GHSA redacted] (llmfit-web/package-lock.json)
  • High IaC: DS-0029 (Dockerfile)
  • High IaC: DS-0029 (Dockerfile)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • …and 65 more

New (407)

  • App::apply_filters (cognitive 47) (llmfit-tui/src/tui_app.rs)
  • App::apply_filters (cyclomatic 46) (llmfit-tui/src/tui_app.rs)
  • App::available_download_providers (cognitive 16) (llmfit-tui/src/tui_app.rs)
  • App::available_download_providers (cyclomatic 17) (llmfit-tui/src/tui_app.rs)
  • App::load_bench_cache (cognitive 16) (llmfit-tui/src/tui_app.rs)
  • App::merge_local_bench_rows (cognitive 17) (llmfit-tui/src/tui_app.rs)
  • App::plan_input (cognitive 16) (llmfit-tui/src/tui_app.rs)
  • App::tick_bench (cognitive 19) (llmfit-tui/src/tui_app.rs)
  • App::with_specs_context_and_config (cognitive 21) (llmfit-tui/src/tui_app.rs)
  • App::with_specs_context_and_config (cyclomatic 21) (llmfit-tui/src/tui_app.rs)
  • Capability::infer (cyclomatic 16) (llmfit-core/src/models.rs)
  • ClassTooLong: App (llmfit-tui/src/tui_app.rs)
  • ClassTooLong: Commands (llmfit-tui/src/main.rs)
  • ClassTooLong: DetailPanel (llmfit-web/src/components/DetailPanel.jsx)
  • ClassTooLong: SystemSpecs (llmfit-core/src/hardware.rs)
  • Coverage not measured — JavaScript/TypeScript suite
  • Critical CVE: [GHSA redacted] (llmfit-web/package-lock.json)
  • Dependency hygiene PARTLY measured — Cargo dependencies read, dependency currency not (crates.io unreachable)
  • DetailPanel.DetailPanel (cognitive 50) (llmfit-web/src/components/DetailPanel.jsx)
  • DetailPanel.DetailPanel (cyclomatic 45) (llmfit-web/src/components/DetailPanel.jsx)
  • …and 387 more

Changes since last survey

  • 168 commits — 118 feature/other, 50 fixes

By area

  • llmfit-core/data — 59 commits
  • llmfit-core/src — 43 commits
  • (root) — 36 commits
  • .github/workflows — 12 commits
  • llmfit-core/tests — 9 commits
  • llmfit-tui/src — 5 commits
  • scripts/scrape_hf_models.py — 3 commits
  • .github/dependabot.yml — 1 commit

Notable commits

  • fix: Fix Score sort direction floating unrunnable models to the top (#991)
  • fix: fix(bench): error when the requested model is not available (#1041)
  • fix: fix(bench): identify Ferrum and vLLM by endpoint owner (#994)
  • fix: fix(bench): ignore implausible tok/s from degenerate Ollama timings (#1042)
  • fix: fix(bench): normalize latency formatting (#1001)
  • fix: fix(bench): stop wall timer after body read in OpenAI and Ollama paths (#1037)
  • fix: fix(cli): don't auto-spawn dashboard for read-only subcommands (#838)
  • fix: fix(cli): return JSON errors for missing models (#966)
  • fix: fix(docker): build each platform natively instead of cross-compiling under QEMU (#996)
  • fix: fix(fit): make ranking deterministic across runs (#1066)
  • fix: fix(fit): size and price MXFP4-native models at MXFP4 (#1059)
  • fix: fix(fit): stop flagging pre-quantized models that fit as insufficient (#898)
  • fix: fix(hardware): recognize A-series Apple Silicon unified memory (#1044)
  • fix: fix(hardware): recover BIOS UMA carveout on Linux APUs and drop legacy Intel iGPUs (#964) (#995)
  • fix: fix(hardware): skip legacy Intel HD GPUs (#841)
  • fix: fix(hardware): stop mobile GPUs inheriting desktop specs (#919) (#922)
  • fix: fix(models): keep architecture metadata when config.json fetch misses (#963)
  • fix: fix(ollama): map the gemma3 family sizes to their catalog ids (#950)
  • fix: fix(ollama): stop a size-less family tag claiming a much larger model (#899)
  • fix: fix(ollama): stop one sized install marking a whole model family installed (#863)
  • …and 148 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

AlexsJones/llmfit was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 27 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 7f47fca32c27230ccfbb012994a0d0bff03bc283 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-7c1cb6328e11.