83 lines
2.8 KiB
Markdown
83 lines
2.8 KiB
Markdown
# Development
|
|
|
|
Project structure, publishing, and dependencies.
|
|
|
|
[← Back to README](../README.md)
|
|
|
|
## 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:
|
|
|
|
```sh
|
|
# 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:
|
|
|
|
```sh
|
|
# 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:
|
|
|
|
```sh
|
|
# 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 |
|
|
|
|
---
|