⚙️🦀 Build modular and scalable LLM Applications in Rust
8,599
stars
1,384
commits
Rust
primary language
Sep 11, 2026
updated
📑 Docs
•
🌐 Website
•
🤝 Contribute
•
✍🏽 Blogs
•
![]()
✨ If you would like to help spread the word about Rig, please consider starring the repo!
[!WARNING] Here be dragons! As we plan to ship a torrent of features in the following months, future updates will contain breaking changes. With Rig evolving, we'll annotate changes and highlight migration paths as we encounter them.
Rig is a Rust library for building scalable, modular, and ergonomic LLM-powered applications.
More information about this crate can be found in the official and crate API reference documentation.
wasm32-unknown-unknown) support for the portable core and
classic runtime — see target support
for the full matrix (WASI is not supported; rig-rmcp/MCP is native-only)Rig separates portable provider/backend contracts from agent orchestration:
rig-core contains provider-neutral messages, completion models, portable tools,
memory and vector-store contracts, and built-in provider mappings.rig-agent contains the classic builder, prompt/streaming traits, typed hooks,
contextual tools, extraction, and the serializable AgentRun state machine. It
remains enabled by default.The root rig facade re-exports both at their familiar paths, so most code
depends only on rig.
Below is a non-exhaustive list of companies and people who are using Rig:
proteinpaint, a genomics visualisation tool.rig for simplifying LLM calls and implementing the model picker.For a curated list of Rig projects, libraries, tools, articles, and production users, check out awesome-rig.
Are you also using Rig? Open an issue to have your name added!
Use the root rig facade when you want feature-gated access to companion crates,
or use rig-core directly when you only need the core provider abstractions.
cargo add rig
# or: cargo add rig-core
use rig::prelude::*;
use rig::providers::openai;
#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
// Create OpenAI client
let client = openai::Client::from_env()?;
// Create agent with a single context prompt
let comedian_agent = client
.agent(openai::GPT_5_2)
.preamble("You are a comedian here to entertain the user using humour and jokes.")
.build();
// Prompt the agent and print the response
let response = comedian_agent.prompt("Entertain me!").await?;
println!("{response}");
Ok(())
}
Note using #[tokio::main] requires you enable tokio's macros and rt-multi-thread features
or just full to enable all features (cargo add tokio --features macros,rt-multi-thread).
You can find more examples in each crate's examples directory (for example, examples). Provider-specific integration coverage lives under tests/providers, with cassette-backed tests that replay offline by default and live-only tests kept separate when real provider APIs are still required. See tests/README.md for test target, replay, record, and cassette safety commands. More detailed use case walkthroughs are regularly published on our Dev.to Blog and added to Rig's official documentation at rig.rs/docs.
The root rig facade exposes companion crates behind one feature per integration:
rig = { version = "0.36.0", features = ["lancedb", "fastembed"] }
| Integration | Crate | Feature | Module path |
|---|---|---|---|
| AWS Bedrock | rig-bedrock | bedrock | rig::bedrock |
| AWS S3Vectors | rig-s3vectors | s3vectors | rig::s3vectors |
| Candle (local Llama/SmolLM2/Qwen3 tools) | rig-candle | candle | rig::candle |
| Cloudflare Vectorize | rig-vectorize | vectorize | rig::vectorize |
| FastEmbed | rig-fastembed | fastembed | rig::fastembed |
| Google Gemini gRPC | rig-gemini-grpc | gemini-grpc | rig::gemini_grpc |
| Google Vertex AI | rig-vertexai | vertexai | rig::vertexai |
| HelixDB | rig-helixdb | helixdb | rig::helixdb |
| LanceDB | rig-lancedb | lancedb | rig::lancedb |
| Memory policies | rig-memory | memory | rig::memory |
| Milvus | rig-milvus | milvus | rig::milvus |
| MongoDB | rig-mongodb | mongodb | rig::mongodb |
| Neo4j | rig-neo4j | neo4j | rig::neo4j |
| PostgreSQL | rig-postgres | postgres | rig::postgres |
| Qdrant | rig-qdrant | qdrant | rig::qdrant |
| ScyllaDB | rig-scylladb | scylladb | rig::scylladb |
| SQLite | rig-sqlite | sqlite | rig::sqlite |
| SurrealDB | rig-surrealdb | surrealdb | rig::surrealdb |
rig::memory is available without the memory feature; it contains the core
conversation memory traits and in-memory backend re-exported from rig-core.
Enabling features = ["memory"] adds reusable history-shaping policy types from
the rig-memory companion crate to the same module.
We also have some other associated crates that have additional functionality you may find helpful when using Rig:
rig-onchain-kit - the Rig Onchain Kit. Intended to make interactions between Solana/EVM and Rig much easier to implement.
(top 30 of 224)
Hacker News (1)
Rust
99.9%
⚙️🦀 Build modular and scalable LLM Applications in Rust
8,599
stars
1,384
commits
Rust
primary language
Sep 11, 2026
updated
📑 Docs
•
🌐 Website
•
🤝 Contribute
•
✍🏽 Blogs
•
![]()
✨ If you would like to help spread the word about Rig, please consider starring the repo!
[!WARNING] Here be dragons! As we plan to ship a torrent of features in the following months, future updates will contain breaking changes. With Rig evolving, we'll annotate changes and highlight migration paths as we encounter them.
Rig is a Rust library for building scalable, modular, and ergonomic LLM-powered applications.
More information about this crate can be found in the official and crate API reference documentation.
wasm32-unknown-unknown) support for the portable core and
classic runtime — see target support
for the full matrix (WASI is not supported; rig-rmcp/MCP is native-only)Rig separates portable provider/backend contracts from agent orchestration:
rig-core contains provider-neutral messages, completion models, portable tools,
memory and vector-store contracts, and built-in provider mappings.rig-agent contains the classic builder, prompt/streaming traits, typed hooks,
contextual tools, extraction, and the serializable AgentRun state machine. It
remains enabled by default.The root rig facade re-exports both at their familiar paths, so most code
depends only on rig.
Below is a non-exhaustive list of companies and people who are using Rig:
proteinpaint, a genomics visualisation tool.rig for simplifying LLM calls and implementing the model picker.For a curated list of Rig projects, libraries, tools, articles, and production users, check out awesome-rig.
Are you also using Rig? Open an issue to have your name added!
Use the root rig facade when you want feature-gated access to companion crates,
or use rig-core directly when you only need the core provider abstractions.
cargo add rig
# or: cargo add rig-core
use rig::prelude::*;
use rig::providers::openai;
#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
// Create OpenAI client
let client = openai::Client::from_env()?;
// Create agent with a single context prompt
let comedian_agent = client
.agent(openai::GPT_5_2)
.preamble("You are a comedian here to entertain the user using humour and jokes.")
.build();
// Prompt the agent and print the response
let response = comedian_agent.prompt("Entertain me!").await?;
println!("{response}");
Ok(())
}
Note using #[tokio::main] requires you enable tokio's macros and rt-multi-thread features
or just full to enable all features (cargo add tokio --features macros,rt-multi-thread).
You can find more examples in each crate's examples directory (for example, examples). Provider-specific integration coverage lives under tests/providers, with cassette-backed tests that replay offline by default and live-only tests kept separate when real provider APIs are still required. See tests/README.md for test target, replay, record, and cassette safety commands. More detailed use case walkthroughs are regularly published on our Dev.to Blog and added to Rig's official documentation at rig.rs/docs.
The root rig facade exposes companion crates behind one feature per integration:
rig = { version = "0.36.0", features = ["lancedb", "fastembed"] }
| Integration | Crate | Feature | Module path |
|---|---|---|---|
| AWS Bedrock | rig-bedrock | bedrock | rig::bedrock |
| AWS S3Vectors | rig-s3vectors | s3vectors | rig::s3vectors |
| Candle (local Llama/SmolLM2/Qwen3 tools) | rig-candle | candle | rig::candle |
| Cloudflare Vectorize | rig-vectorize | vectorize | rig::vectorize |
| FastEmbed | rig-fastembed | fastembed | rig::fastembed |
| Google Gemini gRPC | rig-gemini-grpc | gemini-grpc | rig::gemini_grpc |
| Google Vertex AI | rig-vertexai | vertexai | rig::vertexai |
| HelixDB | rig-helixdb | helixdb | rig::helixdb |
| LanceDB | rig-lancedb | lancedb | rig::lancedb |
| Memory policies | rig-memory | memory | rig::memory |
| Milvus | rig-milvus | milvus | rig::milvus |
| MongoDB | rig-mongodb | mongodb | rig::mongodb |
| Neo4j | rig-neo4j | neo4j | rig::neo4j |
| PostgreSQL | rig-postgres | postgres | rig::postgres |
| Qdrant | rig-qdrant | qdrant | rig::qdrant |
| ScyllaDB | rig-scylladb | scylladb | rig::scylladb |
| SQLite | rig-sqlite | sqlite | rig::sqlite |
| SurrealDB | rig-surrealdb | surrealdb | rig::surrealdb |
rig::memory is available without the memory feature; it contains the core
conversation memory traits and in-memory backend re-exported from rig-core.
Enabling features = ["memory"] adds reusable history-shaping policy types from
the rig-memory companion crate to the same module.
We also have some other associated crates that have additional functionality you may find helpful when using Rig:
rig-onchain-kit - the Rig Onchain Kit. Intended to make interactions between Solana/EVM and Rig much easier to implement.
Hacker News (1)
(top 30 of 224)
Rust
99.9%