Skip to content
0xPlaygroundsPublic

About

⚙️🦀 Build modular and scalable LLM Applications in Rust

Topics

Resources

Contributing

Stars

8.9k stars

Watchers

59 watching

Forks

Latest commit

 

History

1,619 Commits

Folders and files

Repository files navigation

Rig logo

       
    stars - rig

 

📑 Docs   •   🌐 Website   •   🤝 Contribute   •   ✍🏽 Blogs   •   Ryzome

Rig is a Rust library for building LLM applications, and rig, a terminal coding agent built on it that you extend with Bevy plugins.

The coding agent

cargo install rig
rig

In the agent, /login signs in with a ChatGPT plan or saves a provider's API key, or export the key (such as OPENAI_API_KEY) before starting. /model picks the model and /help lists the commands. rig -p "fix the failing test" answers one prompt without the terminal view.

  • Everything is a plugin. The agent is a Bevy app; its tools, commands, sessions, sign-in and terminal view are each a plugin listed in plugins.toml, so any of them can be removed, replaced or added to.
  • It rebuilds itself. /reload rebuilds the agent with your plugin changes and restarts it in the same session, and keeps the old build running if the new one does not compile.
  • Scriptable. rig -p --json and rig --json drive it over pipes; rig help-agents is the protocol.
  • More when you want it. Subagents and checkpoints of what shell changed are optional plugins, and the tools work on remote hosts over ssh or any command.

The agent guide covers the keys, sessions, compaction, plugins and files, and the plugin guide shows how to write a tool, command or panel. The agent needs Rust 1.97.1 or newer and runs on Linux and macOS.

The library

cargo add rig
use rig::prelude::*;
use rig::providers::openai::{self, OpenAI};

#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
    // The client reads `OPENAI_API_KEY` and builds the models it serves.
    let model = OpenAI::from_env()?.completion(openai::GPT_6_1_SOL);
    let comedian = AgentBuilder::new(model)
        .preamble("You are a comedian here to entertain the user using humour and jokes.")
        .build();

    let response = comedian.prompt("Entertain me!").await?;
    println!("{}", response.output());
    Ok(())
}

#[tokio::main] needs tokio's macros and rt-multi-thread features (cargo add tokio --features macros,rt-multi-thread).

  • 20+ model providers and 10+ vector stores, each under one interface
  • Agents with tools, multi-turn streaming and typed hooks
  • Completion, embedding, transcription, audio and image generation
  • GenAI semantic conventions for OpenTelemetry
  • Recording and replay of an agent's effects (rig-cassette)
  • Browser WASM (wasm32-unknown-unknown) for the core and the agent runtime (target support)

More in examples/, the docs and the API reference.

Crates

The rig crate re-exports the core and the agent runtime, and each companion crate behind a feature.

Crate What it is
rig-core Provider-neutral messages, completion and embedding models, tool contracts, the conversation type, vector-store contracts, and the providers
rig-agent The agent builder, prompting and streaming, hooks, the tool registry and the serializable AgentRun
rig-memory Windows, compaction, and saving, resuming and forking conversations
rig-cassette Effect logs: recording, replay and checkpoints
rig-tools Coding tools any rig agent can use: read, write, edit, search, shell
rig-ecs, rig-harness The agent kernel on Bevy's ECS, and the harness the coding agent's plugins build on
rig-tui, rig-basics The terminal view, and the coding agent's default plugins

Integrations

rig = { version = "0.44.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, YOLOv8 pose) 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
Conversations over time 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
TypeSafe Jev (experimental judgments) rig-typesafeai typesafeai rig::typesafeai

Community

Projects built on Rig are listed in awesome-rig; open a pull request there to add yours. Questions and ideas are welcome on Discord, and CONTRIBUTING.md says how to contribute. Rig is MIT licensed.

Warning

Rig is pre-1.0. Releases contain breaking changes; each release's changelog and migration notes say what changed and how to move.



Build by Playgrounds

About

⚙️🦀 Build modular and scalable LLM Applications in Rust

Topics

Resources

Contributing

Stars

8.9k stars

Watchers

59 watching

Forks

Releases

Used by

Contributors

Languages