Thanks for your interest in contributing! Here's how to get started.
git clone https://github.com/feliperbroering/eai
cd eai
cargo build --release
cargo testRequires Rust 1.85+ (edition 2024).
- Fork the repo and create a branch from
main - Make your changes
- Run
cargo check && cargo testbefore submitting - Open a pull request
See AGENTS.md for a full overview. Key files:
src/app.rs— main orchestration loopsrc/llm/— LLM backends (Groq, OpenAI, Ollama, Claude CLI)src/tool_context.rs— tool detection, discovery, and installationsrc/search.rs— web search (Tavily / DuckDuckGo)src/ui.rs— all terminal renderingsrc/setup.rs— onboarding wizard
- All UI output goes to stderr. Only command execution output goes to stdout.
- No comments that narrate what code does. Only explain non-obvious intent.
- Use
ui::spinner(),ui::status_ok(),ui::status_warn()for status output. - Edition 2024:
genis reserved,env::set_varrequiresunsafe.
- Add to
setup.rsPROVIDERS array - Use
build_openai_compat()inllm/mod.rsif OpenAI-compatible
- Add variant to
SearchEngineinconfig.rs - Implement in
search.rs
- Add
check_<registry>()intool_context.rs - Wire into
verify_suggestions()andcheck_registry()