Contributing - arimxyer/models GitHub Wiki
Contributing
Contributions are welcome! This page covers everything you need to get started.
Prerequisites
- Rust (stable) -- install via rustup
- mise (optional, recommended) -- task runner that wraps cargo commands
- Git
Getting started
git clone https://github.com/arimxyer/models
cd models
cargo build
cargo run
If you have mise installed:
mise run build
mise run run
Running checks
Run these before every PR:
# With mise (recommended)
mise run fmt && mise run clippy && mise run test
# Without mise
cargo fmt && cargo clippy -- -D warnings && cargo test
All three must pass. CI enforces the same checks on pull requests.
Code conventions
- Clippy runs with
-D warnings-- all warnings are errors - No
eprintln!in TUI code -- stderr output corrupts ratatui's alternate screen buffer. UseMessagevariants or status bar updates instead.eprintln!is fine in CLI-only code paths. - Enum-based message passing -- the TUI uses an Elm-architecture pattern with a
Messageenum. No callbacks. - New
BenchmarkEntryfields must use#[serde(default)] - Commit
Cargo.lockalongsideCargo.tomlwhen changing dependencies or the version
Adding a new agent
The easiest way to contribute is by adding a new AI coding agent to the catalog. This requires no Rust knowledge or build tools.
Edit data/agents.json and add an entry following this format:
{
"my-agent": {
"name": "My Agent",
"repo": "owner/repo",
"categories": ["cli"],
"installation_method": "cli",
"pricing": {
"model": "usage",
"free_tier": false,
"usage_notes": "Pay per token"
},
"supported_providers": ["openai"],
"platform_support": ["macos", "linux", "windows"],
"open_source": true,
"cli_binary": "my-agent",
"version_command": ["--version"],
"version_regex": "([0-9]+\\.[0-9]+\\.[0-9]+)",
"config_files": [],
"homepage": "https://example.com",
"docs": "https://docs.example.com"
}
}
Key fields:
| Field | Description |
|---|---|
name |
Display name |
repo |
GitHub repo in owner/repo format |
categories |
["cli"], ["ide"], or both |
cli_binary |
Binary name for version detection |
version_command |
Args to get version (e.g., ["--version"]) |
version_regex |
Regex to extract version from command output |
open_source |
Whether the source code is publicly available |
Data directory
data/agents.json-- curated agent catalog. Contributions welcome!data/benchmarks.json-- auto-generated from the Artificial Analysis API every 30 minutes. Do not edit manually.
Pull requests
- Branch from
mainand keep changes focused - Reference related issues in your PR description
- CI runs format checking, clippy, and tests on every PR (doc-only changes are skipped)
Reporting issues
When opening an issue, please include:
- Steps to reproduce the problem
- Expected vs actual behavior
- Your environment (OS, terminal, Rust version)
Architecture reference
For detailed architecture documentation, key file locations, async patterns, and module structure, see the Architecture page.
Code of Conduct
This project follows the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code.