Fixes and features merged upstream in the Ruby & AI libraries I build on.

Most of my open-source work goes into the projects my own Rails and AI code depends on — RubyLLM and ActiveAgent today, React on Rails and Rails-ecosystem gems before that. The common thread is reliability: cancellation and concurrent tools, provider protocols, attachments, structured output, tracing, evals and cost accounting, and making it all behave inside a Rails app.

75
PRs merged upstream
35
into RubyLLM
19
into ActiveAgent
2015
First upstream merge

Verified on · Selected merged PRs below.

Cancellation & concurrency Provider protocols Tool calls Attachments & multimodal Structured output Caching & cost accounting Performance Tracing Evals Rails integration

RubyLLM

crmne/ruby_llm · 35 merged · 2026

One Ruby API for OpenAI, Anthropic, Gemini and other providers, with Rails persistence built in.

All merged PRs →
  • #1326Propagate chat cancellation to child fibers and Async tasks
  • #1328Stop fiber tool workers and finish cleanup when their parent is cancelled
  • #1329Report tool-worker context failures without hanging the caller
  • #1330Test cancellation cleanup and reuse of chats and MCP clients
  • #1248Continue Gemini long-decode responses within a single assistant turn
  • #1247Preserve native client-toolset identity through dispatch, results and Rails storage
  • #1273Preserve Cohere reasoning token counts in buffered and streamed replies
  • #1275Keep response models on moderation, rerank and judgment spans
  • #1082Static and agentic processing modes for Gemini video attachments
  • #1069Apply persisted prompt-cache boundaries to the next request

ActiveAgent

activeagents/activeagent · 19 merged · 2026

A Rails framework for building AI agents.

All merged PRs →
  • #664Claim a pending run atomically, so a duplicate job can't execute it twice
  • #665Record client-side MCP tool calls in eval replays
  • #637Keep scenario catalog extension fields through export, digests and the dashboard
  • #635Finish the trace view gaps: dark-mode tools and time window, bounded console limit
  • #614Prevent overlapping evaluation jobs from scoring twice
  • #632Restore Rails browser previews for generated agents
  • #631Make the trace console usable without external assets or JavaScript
  • #615Report full-window trace totals and correctly weighted latency
  • #616Route pinned evaluation judge models to the matching provider
  • #511Finish RubyLLM 2.x support: usage, streaming and protocol options

React on Rails

shakacode/react_on_rails · 8 merged · 2015–2016

React components in Rails, with server rendering. Early contributions to the install generator and project docs.

All merged PRs →
  • #144Stop the generator from overwriting application.js
  • #161Clearer --help output for the install generator
  • #152Start the project CHANGELOG from past release notes
  • #171Remove the jquery_ujs dependency

Ruby & Rails ecosystem

13 merged across 10 projects · 2014–2026

A fix in Rails itself, plus Rails upgrade fixes, admin tooling and LLM integrations in smaller gems.

  • #59442Rails — fix savepoint rollback through the Ractor connection proxy after before_commit
  • #347Langchain.rb — add ask() to the ActiveRecord hooks
  • #73kt-paperclip — Rails 7 fix for AttachmentSizeValidator
  • #8carmen-rails — Rails 7 version detection
  • #8Administrate Batch Actions — toggle action buttons from the selection (4 merged)
  • #62Talorys — skip the real Wrangler test when templates aren't built

Full merged PR history on GitHub →

Projects I maintain, mostly RubyLLM and Rails extensions.

Unofficial community projects — small, focused, and documented in their READMEs, including what they don't do yet.

Hiring for Rails and AI? Get in touch →