llmfit/Makefile
Alex 2a84138b00 feat: add Docker Model Runner as a runtime provider
Add support for Docker Desktop's built-in Model Runner as a fourth
runtime provider alongside Ollama, llama.cpp, and MLX. Detection probes
the OpenAI-compatible /v1/models endpoint on localhost:12434 (configurable
via DOCKER_MODEL_RUNNER_HOST). Downloads use `docker model pull`.

A new scraper (scripts/scrape_docker_models.py) queries Docker Hub's ai/
namespace and cross-references against the HF model database to produce
an embedded catalog (docker_models.json) of confirmed available models.
Only models verified in the catalog appear as downloadable via Docker.

- Provider: detect, list installed, pull via docker CLI
- TUI: status bar shows Docker availability, 'D' in Inst column,
  provider picker includes Docker Model Runner
- Inst column refactored from enum to bitfield for extensibility
- Makefile: `make update-catalogs` refreshes all scrapers and rebuilds

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:42:58 +00:00

76 lines
2 KiB
Makefile

# Makefile for llmfit
# Convenience commands for building, testing, and updating the model database
.PHONY: help build release clean run test update-models update-docker-models update-catalogs check fmt clippy install
# Default target
help:
@echo "llmfit - LLM Model Fit Analyzer"
@echo ""
@echo "Available targets:"
@echo " make build - Build debug binary"
@echo " make release - Build release binary"
@echo " make run - Run in TUI mode (debug)"
@echo " make test - Run all unit tests"
@echo " make update-models - Fetch latest model data from HuggingFace"
@echo " make update-docker-models - Refresh Docker Model Runner catalog"
@echo " make update-catalogs - Refresh all catalogs (HF models + Docker) and rebuild"
@echo " make check - Run cargo check"
@echo " make fmt - Format code with rustfmt"
@echo " make clippy - Run clippy linter"
@echo " make clean - Remove build artifacts"
@echo " make install - Install release binary to ~/.cargo/bin"
@echo ""
# Build debug version
build:
cargo build
# Build release version
release:
cargo build --release
# Clean build artifacts
clean:
cargo clean
# Run in TUI mode
run:
cargo run
# Run tests
test:
cargo test
# Update model database from HuggingFace
update-models:
@./scripts/update_models.sh
# Refresh Docker Model Runner catalog from Docker Hub
update-docker-models:
python3 scripts/scrape_docker_models.py
# Refresh all catalogs (HF models + Docker) and rebuild
# Runs HF scraper first (via update_models.sh which also rebuilds),
# then Docker scraper (which depends on hf_models.json), then rebuilds again
# to embed the updated Docker catalog.
update-catalogs:
@./scripts/update_models.sh
python3 scripts/scrape_docker_models.py
cargo build --release
# Check compilation without building
check:
cargo check
# Format code
fmt:
cargo fmt
# Run clippy
clippy:
cargo clippy -- -D warnings
# Install to ~/.cargo/bin
install:
cargo install --path .