llmfit

App Featured

Right-size LLM models to your system hardware. Interactive TUI and CLI to match models against available RAM, CPU, and GPU.

Downloads
3,821
Dependents
Not applicable
Stars
38,787
Forks
2,504
Contributors
173
Commits
1,372
Latest release
1.1.20 ·

About

From the project README ·

llmfit icon

English · 中文 · 日本語

Find out which open-source Large Language Models (LLMs) your hardware can comfortably run. llmfit inspects your CPU, system RAM, GPU(s), VRAM, and accelerator configuration to recommend models across popular quantizations.

📊 New: benchmark & share — real numbers from your machine, better estimates for everyone. Download a model, serve it, and measure real tok/s on your hardware — then contribute the results back to the project as a PR, straight from the TUI. No gh CLI, no third-party account. Every run is saved locally first, your own measurements replace estimates in the fit table, and each merged submission ships in the next release: anyone on identical hardware gets measured ✓ numbers before they ever run a benchmark. Follow the step-by-step benchmarking guide →

llmfit demo: searching for a model, simulating different hardware, and planning a deployment

Read the full README

Features

  • Hardware Auto-Detection: Detects CPU cores, system RAM, available discrete/integrated GPUs, VRAM, and unified memory architecture (NVIDIA CUDA, Apple Silicon, AMD ROCm, Intel OneAPI).
  • Model Compatibility Engine: Analyzes model parameter counts, context lengths, and quantization formats (GGUF, AWQ, GPTQ, EXL2) to project memory footprints and tokens-per-second performance.
  • Interactive TUI & Web Dashboard: Choose between a lightweight, zero-dependency terminal interface or a feature-rich web dashboard.
  • REST API Endpoint: Exposes standard HTTP JSON endpoints (/api/v1/system, /api/v1/models) for integration into orchestrators, dashboards, and automated deployment pipelines.
  • Multi-Platform Support: macOS (Apple Silicon & Intel), Linux (x86_64 & ARM64), and Windows (x86_64).
  • Hundreds of models & providers. One command to find what runs on your hardware.

A terminal tool that right-sizes LLM models to your system's RAM, CPU, and GPU. Detects your hardware, scores each model across quality, speed, fit, and context dimensions, and tells you which ones will actually run well on your machine.

Ships with an interactive TUI (default) and a classic CLI mode. Supports multi-GPU setups, MoE architectures, dynamic quantization selection, speed estimation, and local runtime providers (Ollama, llama.cpp, MLX, Docker Model Runner, LM Studio).


Sister projects

  • sympozium — managing agents in Kubernetes.
  • llmserve — a simple TUI for serving local LLM models. Pick a model, pick a backend, serve it.
  • llama-panel — a native macOS app for managing local llama-server instances.
  • llmfit-gui — a Windows desktop GUI (PowerShell + WinForms) for llmfit: browse recommendations, download into LM Studio/Ollama, and benchmark, all point-and-click.

Documentation

Get startedInstall · Usage · How it works
GuidesTUI guide · Benchmarking step-by-step · CLI & automation · Cluster mode (Ray / multi-node) · Runtime providers · OpenClaw integration
ReferenceHow it works (full) · Platform & GPU support · Custom models · Development
ProjectContributing · Alternatives · Code signing · License

Install

Windows
WinGet
winget install --exact --id AlexsJones.llmfit
Scoop
scoop install llmfit

If Scoop is not installed, follow the Scoop installation guide.

macOS / Linux
Homebrew

Prebuilt binary (recommended, works on all macOS/Linux versions):

brew install AlexsJones/llmfit/llmfit

Or from the homebrew-core formula, which builds from source on macOS versions without a bottle:

brew install llmfit
MacPorts
port install llmfit
Quick install
curl -fsSL https://llmfit.axjns.dev/install.sh | sh

Downloads the latest release binary from GitHub and installs it to /usr/local/bin (or ~/.local/bin if no sudo).

Install to ~/.local/bin without sudo:

curl -fsSL https://llmfit.axjns.dev/install.sh | sh -s -- --local
uv / pip

To install or update llmfit:

uv tool install -U llmfit

To run without installing:

uvx llmfit

You can also install llmfit as a Python package in the normal way with tools such as pip or uv.

Pre-built Binaries

Download release binaries for Linux, macOS, and Windows directly from the GitHub Releases page. Windows binaries are only published once that release's sign-windows job has signed, repackaged, and re-checksummed them; if signing is skipped or fails, the Windows assets are held back and attached by a re-run of the release workflow (with its fresh signing requests approved) rather than shipped unsigned. Releases before v1.1.19 did not have this guard, so verify the executable signature on older versions if you require a signed binary.


Container Deployment

llmfit provides a multi-architecture Docker image (ghcr.io/alexsjones/llmfit) supporting both interactive CLI/TUI and headless Web UI / API server modes.

Interactive TUI

To launch the interactive TUI instead, pass the global --tui flag:

docker run -it --rm ghcr.io/alexsjones/llmfit --tui
Non-Interactive

This prints JSON from llmfit recommend command.

docker run ghcr.io/alexsjones/llmfit

This prints JSON from llmfit recommend command. The JSON could be further queried with jq.

podman run ghcr.io/alexsjones/llmfit recommend --use-case coding | jq '.models[].name'

To launch the interactive TUI instead, pass the global --tui flag:

docker run --rm -it ghcr.io/alexsjones/llmfit --tui
From source
git clone https://github.com/AlexsJones/llmfit.git
cd llmfit
cargo build --release
# binary is at target/release/llmfit

Usage

Terminal Interface (TUI)

Launch llmfit in your terminal without flags to start the interactive browser:

llmfit          # interactive TUI: your hardware, every model, ranked

The TUI shows your detected specs at the top and every model scored for fit, speed, quality, and context. See the TUI guide for navigation, planning, simulation, downloads, the community leaderboard, and benchmarking.

Keybindings inside the TUI:

  • b: Open community benchmarks; I: Open live inference benchmarks
  • h: Show help and keybindings
  • ↑ / ↓ or k / j: Navigate list items
  • /: Filter models by name, family, or quantization
  • Esc: Clear search / Back
Command Line Options
# Print hardware telemetry and recommended models to standard output
llmfit recommend

# Output system profile and recommendations in raw JSON format
llmfit recommend --json

# Estimate SSD capacity for keeping three runnable models
llmfit storage --keep 3 --selection largest --json

# Start the native HTTP API server
llmfit serve --host 0.0.0.0 --port 8787

See model library storage for selection, OS reserve, download scratch, free-space headroom, and hardware simulation.

Web UI & API Server
docker run -d -p 8787:8787 ghcr.io/alexsjones/llmfit serve
Docker Compose
---
services:
  llmfit:
    image: ghcr.io/alexsjones/llmfit:latest
    container_name: llmfit
    restart: unless-stopped
    command: ["serve", "--host", "0.0.0.0", "--port", "8787"]
    ports:
      - "8787:8787"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8787/health"]
      interval: 15s
      timeout: 5s
      retries: 3
      start_period: 10s

For scripts, agents, and classic terminal output:

llmfit fit                    # table of all models ranked by fit
llmfit fit --show-incompatible # also show backend-incompatible models as non-runnable
llmfit recommend --json       # top picks as JSON (agent/script consumption)
llmfit info "<model>"         # one model: fit analysis, estimate basis, verify commands
llmfit bench                  # measure real tok/s/TTFT against your running provider
llmfit doctor                 # hardware detection report for bug reports
llmfit serve                  # start the api and web user interface

Full reference: CLI & automation.

Cluster mode (Ray / multi-node)

Preview: so far tested only against a mock Ray Dashboard. If you run Ray, please share the output of curl <dashboard>/nodes?view=summary in an issue.

Check which models fit across several machines, such as 3 × DGX Spark or a couple of multi-GPU servers running Ray and vLLM:

  • Know before you launch: find out whether a model fits across your machines before you spend an hour starting vLLM.
  • Catch splits vLLM would refuse: most models can't be split 3 ways across 3 GPUs. llmfit picks a split vLLM accepts, or says none fits, instead of letting vLLM crash at startup.
  • One reviewable file: Ray discovery writes a single cluster.toml, so you don't have to tally VRAM by hand.
  • Changes nothing: llmfit reads Ray's dashboard once and never launches or schedules anything.
llmfit cluster init --ray-url http://<head>:8265   # or hand-write cluster.toml
llmfit cluster status
llmfit --cluster fit

See the cluster guide for walkthroughs, Ray token handling and today's limits.


Community & Benchmarks

llmfit includes hardware detection and performance benchmarks contributed by the community. You can share your hardware benchmark results using:

llmfit bench --share

How it works

llmfit detects your hardware (RAM, CPU, GPU/VRAM, backend), then scores every model in its catalog across four dimensions: memory fit, estimated speed, quality, and context. Speed estimates come from a memory-bandwidth model grounded in runtime sampling and real community measurements — and every estimate ships its inputs, so llmfit info shows exactly what a number assumes and how to verify it on your machine.

Full detail, including the estimation formulas and the model database: How llmfit works.


Contributing

Contributions are welcome, especially new models.

Before submitting a PR

Please run cargo fmt before pushing your changes. Most CI check failures are caused by unformatted code:

cargo fmt

Guides for adding models — locally (no rebuild) or to the built-in catalog: Custom models.


Alternatives

If you're looking for a different approach, check out llm-checker -- a Node.js CLI tool with Ollama integration that can pull and benchmark models directly. It takes a more hands-on approach by actually running models on your hardware via Ollama, rather than estimating from specs. Good if you already have Ollama installed and want to test real-world performance. Note that it doesn't support MoE (Mixture-of-Experts) architectures -- all models are treated as dense, so memory estimates for models like Mixtral or DeepSeek-V3 will reflect total parameter count rather than the smaller active subset.


Code signing

llmfit's Windows release binaries are intended to be digitally signed (Authenticode) via SignPath.io, with a free code signing certificate provided by the SignPath Foundation. The release workflow only attaches Windows assets after the sign-windows job has signed, repackaged, and re-checksummed them; when signing is skipped or fails, the Windows zips (and the PyPI Windows wheels built from them) are held back until the workflow is re-run against the tag and the new signing requests that re-run submits are approved. Releases before v1.1.19 could publish an unsigned Windows artifact, so verify the executable signature on those before relying on it.

Signing happens automatically in the release pipeline: only artifacts built by GitHub Actions from this repository are submitted for signing, and signing requests are approved by the project maintainer (@AlexsJones).

Code signing policy: see the SignPath Foundation code signing policy and terms.

Privacy: this program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it. llmfit only contacts external services when you explicitly use the corresponding feature (e.g. model downloads, runtime provider queries, or the community leaderboard).


License

MIT

Runs on
Metal
What shows it
  • Metal: llmfit-core dependency objc2-metal
Native code
None found
  • No native code found
Python bindings
No Python binding crate found
License
MIT

Compare with similar projects

Order: strongest tier first, then most downloads, then name, with unmeasured values last. A library counts downloads over 30 days. An app counts binary downloads per release. An app with none counts its crate downloads over 30 days. ML Rust runs this catalogue, so its closest project always gets a row.

llmfit beside the projects that share a topic with it
ProjectDownloadsDependentsStarsLatest releaseRuns on (GPU)Native codeLicense
llmfit This page App Featured

Right-size LLM models to your system hardware. Interactive TUI and CLI to match models against available RAM, CPU, and GPU.

3,821 binary downloads per release Not applicable 38,787 1.1.20 Metal No native code found MIT
agent App Listed

Ship your code, on autopilot. An open source agent that lives on your machines 24/7 and keeps your apps running. 🦀

Also in Build LLM apps and agents.

19,860 binary downloads per release Not applicable 1,859 0.3.88 GPU support unknown Binds native code: tree-sitter, tree-sitter-language, tikv-jemalloc-sys (feature jemalloc) Apache-2.0
dora Listed

DORA (Dataflow-Oriented Robotic Architecture) is middleware designed to streamline and simplify the creation of AI-based robotic applications. It offers low latency, composable, and distributed dataflow capabilities. Applications are modeled as directed graphs, also referred to as pipelines.

Also in Run and serve models.

4,491 downloads over 30 days 18 4,072 1.1.0 GPU support unknown Binds native code: libgit2-sys, libz-sys, pnet_sys Apache-2.0
code2prompt App Listed

A CLI tool to convert your codebase into a single LLM prompt with source tree, prompt templating, and token counting.

Also in Build LLM apps and agents.

2,317 binary downloads per release Not applicable 7,756 4.3.0 GPU support unknown Binds native code: libgit2-sys, libz-sys MIT

OpenTelemetry components and utilities for Langfuse LLM observability

Also in Build LLM apps and agents.

2,119 downloads over 30 days 2 4 0.7.2 GPU support unknown No native code found Apache-2.0 OR MIT
boostr Listed

ML framework on numr for training and inference on CPU, CUDA and WebGPU: attention, quantization, inference scheduling and distributed execution. Models include LLaMA, Mamba2, Qwen3.5, Whisper, Kokoro, VITS, VoxCPM2, Silero VAD, CLAP and super-resolution. Loads SafeTensors and GGUF.

Also in Build LLM apps and agents.

1,265 downloads over 30 days 7 20 0.11.2 CUDA, WebGPU Binds native code: ring (feature distributed) Apache-2.0
rtk App New

Rust Token Killer - High-performance CLI proxy to minimize LLM token consumption

Also in Build LLM apps and agents.

2,594 binary downloads per release Not applicable 85,939 0.42.4 GPU support unknown Binds native code: libsqlite3-sys Apache-2.0
Why FeaturedIt passes every Featured gate.

What it meets

  • Its use signals read: binary downloads 11463, Homebrew unknown, Repology families unknown, Docker growth unknown. Featured needs 2 of these to reach their limits.
  • It also passes the repository route, which counts as one use signal: 38,787 stars, 2,504 forks and 173 contributors. It needs 4,539 stars, 434 forks and 79 contributors together.
  • The last activity is on 8 Nov 2026, 1 day ago. The rules expect an update within 365 days. Dormancy rule

Exact rules: Featured app. The check on applied thresholds version 9.

Every rule outcome, as the check records it
  • expected-interval: app: E = 365 days
  • dormancy: last activity 2026-11-08, 1 days ago, E = 365: active
  • featured: featured: binary downloads 11463, Homebrew unknown, Repology families unknown, Docker growth unknown, repository route stars 38787 (needs 4539), forks 2504 (needs 434), contributors 173 (needs 79)
Crates2 crates

Measurements and sources

Each signal row shows the raw value, its source and the fetch date. The Sources list gathers every distinct source on this page. Movement needs more history.

Sources6 sources
Adoption3,821 binary downloads per release4 not measured
Adoption measurements
SignalValueSourceFetchedCounts
Active dependentsNot measuredYes
New dependents (365 days)Not measuredYes
Peak active dependentsNot measuredYes
Active dependents as a share of the peakNot measuredYes
Binary downloads per release3821GitHub releasesYes
MaintenanceLatest human commit: 1 day ago4 not measured
Maintenance measurements
SignalValueSourceFetchedCounts
Latest human commit2026-11-08GitHub repositoryYes
Latest release2026-11-03GitHub releasesYes
First release2026-02-15crates.io database dumpYes
Latest version1.1.20crates.io database dumpNo
Days the oldest outside issue waits for a reply9GitHub repositoryYes
Maintainer replies over 365 days73GitHub repositoryYes
Repository archivedfalseGitHub repositoryYes
Repository gonefalseGitHub repositoryYes
Release commit or manifest in the repotruecrates.io packageNo
Published docsNot measuredYes
Latest release fails cargo checkNot measuredYes
Build check dateNot measuredYes
Build check toolchainNot measuredYes
SecurityNot measured
Security measurements
SignalValueSourceFetchedCounts
Unpatched vulnerabilities past the grace windowNot measuredYes
RustSec unmaintained advisoryNot measuredYes
Deprecation noticeNot measuredYes
Deprecated requirementNot measuredYes
Distribution119 releases, 448 downloads over 30 days6 not measured
Distribution measurements
SignalValueSourceFetchedCounts
Releases119crates.io database dumpNo
Downloads over 30 days448crates.io database dumpNo
Binary downloads over the last 3 releases11463GitHub releasesYes
Homebrew installs on request over 365 daysNot measuredYes
Repology repository familiesNot measuredYes
Docker pull growth over 90 daysNot measuredYes
Docker pulls at the growth baselineNot measuredYes
Every version a prereleasefalsecrates.io database dumpYes
Every version 0.0.xfalsecrates.io database dumpYes
Every version yankedNot measuredYes
Crate deleted from crates.ioNot measuredYes
Repository38,787 stars, 2,504 forks, 173 contributors, 1,372 commits. Stars alone never qualify a project.
Repository measurements
SignalValueSourceFetchedCounts
GitHub stars38787GitHub repositoryYes — one part of the repository route
GitHub forks2504GitHub repositoryYes — one part of the repository route
Contributors with a GitHub account173GitHub contributorsYes — one part of the repository route
Commits on the default branch1372GitHub repositoryNo
Repository's main crate left out of the entrynonecrates.io database dumpYes
Facts that never count
Facts that never count measurements
SignalValueSourceFetchedCounts
LicenseMITcrates.io database dumpNo
Runs on, from listed crates and their direct dependenciesMetalcrates.io database dumpNo
What shows each backendMetal: llmfit-core dependency objc2-metalcrates.io database dumpNo
Native code, from listed crates and their dependenciesNo native code foundcrates.io database dumpNo
Python bindings, from direct dependencies of listed cratesNo Python binding crate foundcrates.io database dumpNo
Crates that depend on a listed crate directlyNot measuredNo

Corrections and review history

Report a correction

No correction applies to this entry.

Judgments

A judgment enters only through an approved issue and a merged pull request.

No judgment applies to this entry.