Skip to content

Contributing

Rig is an open-source project and we welcome contributions from the community, whether that’s code, documentation, or feedback. This page outlines where help is most useful. The repository’s CONTRIBUTING.md has the full guidelines for pull requests, commit messages, and local checks.

Rig is a monorepo. The root package is the rig facade; crates/rig-core holds the portable contracts and built-in providers; crates/rig-agent holds the agent runtime; and each other crates/rig-* crate is an integration with heavier dependencies (a vector store, an SDK-based provider, MCP, recording). The facade exposes each companion crate as a feature-gated module.

If your favorite model provider isn’t supported, consider adding it.

  • Built-in providers live in their own modules under crates/rig-core/src/providers.
  • If the provider serves an OpenAI-compatible API, it usually needs no new wire: add a dialect (its base URL, credential variable, and quirks) and a small vendor module with from_env() and new() constructors, following an existing one such as deepseek.
  • Providers that need a vendor SDK or other heavy dependencies go in their own companion crate, like rig-bedrock or rig-vertexai.
  • Provider behavior changes should come with cassette-backed regression tests, which replay recorded provider traffic offline.

If your favorite vector store isn’t supported, consider adding it.

  • Each vector store lives in its own crate, crates/rig-<store> (for example rig-qdrant), because stores usually bring large client dependencies.
  • Implement VectorStoreIndex for search and InsertDocuments for writes, and register the crate as a facade feature so users reach it as rig::<store>.
  • Add integration tests modeled on the existing stores.

If you find a bug, open an issue with a reproducible example, and consider opening a pull request that fixes it with a test.

If you have experience with Rig and would like to share it, consider writing a guide or tutorial. To have it featured on this website, open a pull request on the site repository.

If you find a typo, a mistake, or a section that could be clearer, open an issue or a pull request on the site repository. Its README explains how to run the site locally. Every Rust snippet in these docs is compiled against the current Rig release in CI, so code you add must build.

If you have an idea for a feature or feedback on an existing one, open an issue on the GitHub repository. Check the existing issues first in case it’s already planned or in progress.