Files
alexsjones--llmfit/docs/development.md
T
2026-07-13 12:12:21 +08:00

2.8 KiB

Development

Project structure, publishing, and dependencies.

← Back to README

Project structure

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

Publishing to crates.io

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:

  • The version in Cargo.toml is correct (bump with each release).
  • A 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

Dependencies

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