docs/development.md
Project structure, publishing, and dependencies.
src/
main.rs -- CLI argument parsing, entrypoint, TUI launch
hardware.rs -- System RAM/CPU/GPU detection (multi-GPU, backend identification)
models.rs -- Model database, quantization hierarchy, dynamic quant selection
fit.rs -- Multi-dimensional scoring (Q/S/F/C), speed estimation, MoE offloading
providers.rs -- Runtime provider integration (Ollama, llama.cpp, MLX, Docker Model Runner, LM Studio), install detection, pull/download
display.rs -- Classic CLI table rendering + JSON output
tui_app.rs -- TUI application state, filters, navigation
tui_ui.rs -- TUI rendering (ratatui)
tui_events.rs -- TUI keyboard event handling (crossterm)
llmfit-core/data/
hf_models.json -- Model database (embedded at compile time)
skills/
llmfit-advisor/ -- OpenClaw skill for hardware-aware model recommendations
scripts/
scrape_hf_models.py -- HuggingFace API scraper
update_models.sh -- Automated database update script
install-openclaw-skill.sh -- Install the OpenClaw skill
Makefile -- Build and maintenance commands
The Cargo.toml already includes the required metadata (description, license, repository). To publish:
# Dry run first to catch issues
cargo publish --dry-run
# Publish for real (requires a crates.io API token)
cargo login
cargo publish
Before publishing, make sure:
Cargo.toml is correct (bump with each release).LICENSE file exists in the repo root. Create one if missing:# For MIT license:
curl -sL https://opensource.org/license/MIT -o LICENSE
# Or write your own. The Cargo.toml declares license = "MIT".
llmfit-core/data/hf_models.json is committed. It is embedded at compile time and must be present in the published crate.To publish updates:
# Bump version
# Edit Cargo.toml: version = "0.2.0"
cargo publish
| Crate | Purpose |
|---|---|
clap | CLI argument parsing with derive macros |
sysinfo | Cross-platform RAM and CPU detection |
serde / serde_json | JSON deserialization for model database |
tabled | CLI table formatting |
colored | CLI colored output |
ureq | HTTP client for runtime/provider API integration |
ratatui | Terminal UI framework |
crossterm | Terminal input/output backend for ratatui |