RubyLLM: One Ruby Framework for All Major AI Providers

RubyLLM 1.16.0 is a Ruby framework that provides a unified interface for all major AI providers, including OpenAI, xAI, Anthropic, Gemini, VertexAI, Bedrock, DeepSeek, Mistral, Ollama, OpenRouter, Perplexity, GPUStack, and any OpenAI-compatible API. It supports chat, vision, audio, documents, image generation, embeddings, moderation, tools, agents, structured output, streaming, and Rails integration.
Quick Start
Add to Gemfile: gem 'ruby_llm', then bundle install.
Configure API keys:
RubyLLM.configure do |config|
config.openai_api_key = ENV['OPENAI_API_KEY']
end
Key Features
- Chat:
RubyLLM.chat.ask('question') - Vision: Analyze images and videos —
chat.ask('Describe', with: 'photo.jpg') - Audio: Transcribe and understand speech —
RubyLLM.transcribe('meeting.wav') - Documents: Extract from PDFs, CSVs, JSON, any file type
- Image generation:
RubyLLM.paint('prompt') - Embeddings:
RubyLLM.embed('text') - Moderation:
RubyLLM.moderate('text') - Tools: Let AI call your Ruby methods by subclassing
RubyLLM::Tool - Agents: Reusable assistants with
RubyLLM::Agent - Structured output: JSON schemas with
RubyLLM::Schema - Streaming: Real-time responses with blocks
- Rails: ActiveRecord integration with
acts_as_chatand optional Chat UI - Async: Fiber-based concurrency
- Model registry: 800+ models with capability detection and pricing
Code Examples
Chat with vision:
chat = RubyLLM.chat
chat.ask('What is in this image?', with: 'ruby_conf.jpg')
chat.ask('Summarize this document', with: 'contract.pdf')
Using tools:
class Weather < RubyLLM::Tool
desc 'Get current weather'
def execute(latitude:, longitude:)
JSON.parse(Faraday.get('https://api.open-meteo.com/...').body)
end
end
chat.with_tool(Weather).ask('What is the weather in Berlin?')
Structured output:
class ProductSchema < RubyLLM::Schema
string :name
number :price
array :features do
string
end
end
response = chat.with_schema(ProductSchema).ask('Analyze', with: 'product.txt')
Rails Integration
bin/rails generate ruby_llm:install
bin/rails db:migrate
bin/rails generate ruby_llm:chat_ui
Then create a Chat model with acts_as_chat and visit /chats for a ready-to-use UI.
RubyLLM has only three dependencies: Faraday, Zeitwerk, and Marcel.
📖 Read the full source: HN AI Agents
👀 See Also

Claude Skills to Emulate a Design Studio Environment
A designer shares two Claude skills: one simulates a studio with teammates and design methods, the other adds 'rigorous play' for creativity.

Memento v1.0: Persistent Memory MCP Server for Claude Code with 17 Tools
Memento v1.0 is a persistent memory MCP server for Claude Code that ships with 17 tools, hybrid search, contradiction detection, and a visual memory graph. It runs locally with no cloud dependencies and supports multiple IDEs including Claude Code, Cursor, Windsurf, and OpenCode.

SourceBridge: Open-source tool for codebase analysis using local LLMs
SourceBridge is an open-source tool that indexes Git repositories into symbol graphs and uses local LLMs to generate codebase summaries, architecture walkthroughs, and learning materials. It supports multiple local backends including Ollama, llama.cpp, vLLM, LM Studio, and SGLang via OpenAI-compatible APIs.
Tokenless API Gateway Routes AI Traffic Between Models to Cut Spend in Half
Tokenless is an API gateway that dynamically routes AI agent requests turn-by-turn between models. It matches Claude Fable 5 performance at half the cost by fanning out to multiple models and selecting the best one mid-generation.