Thank you for your interest in contributing to Infernum! This document provides guidelines and instructions for contributing.
Please be respectful and constructive in all interactions. We're building something together.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/infernum-framework - Add upstream remote:
git remote add upstream https://github.com/Daemoniorum-LLC/infernum-framework - Create a feature branch:
git checkout -b feature/your-feature
- Rust 1.91 or later
- Cargo
cargo build --workspacecargo test --workspacecargo clippy --workspace --all-features
cargo fmt --all -- --checkfeature/- New featuresfix/- Bug fixesdocs/- Documentation improvementsrefactor/- Code refactoring
We use Conventional Commits:
feat: add streaming response support
fix: resolve memory leak in tokenizer cache
docs: update API examples
refactor: simplify model loading logic
test: add integration tests for chat endpoint
chore: update dependencies
perf: optimize token sampling
- Follow Rust idioms and best practices
- Run
cargo fmtbefore committing - Ensure
cargo clippypasses without warnings - Add documentation for public items
- Write tests for new functionality
- Update your fork with the latest upstream changes
- Ensure all tests pass:
cargo test --workspace - Ensure linting passes:
cargo clippy --workspace --all-features - Ensure formatting is correct:
cargo fmt --all -- --check - Push your branch and create a pull request
- Keep PRs focused on a single change
- Write a clear description of what and why
- Link related issues if applicable
- Ensure CI passes before requesting review
Infernum is organized as a Rust workspace with specialized crates:
| Crate | Purpose |
|---|---|
infernum |
CLI application |
infernum-core |
Shared types and traits |
abaddon |
Inference engine |
malphas |
Orchestration layer |
stolas |
RAG/Knowledge engine |
beleth |
Agent framework |
asmodeus |
Fine-tuning |
dantalion |
Observability |
infernum-server |
HTTP API server |
grimoire-loader |
Prompt loading |
When reporting bugs, please include:
- Rust version (
rustc --version) - OS and version
- Steps to reproduce
- Expected vs actual behavior
- Relevant logs or error messages
Feature requests are welcome! Please:
- Check existing issues first
- Describe the use case
- Explain why existing features don't solve it
By contributing, you agree that your contributions will be licensed under the same MIT OR Apache-2.0 dual license as the project.
Open an issue or start a discussion. We're happy to help!