{"full_name":"crmne/ruby_llm","owner":"crmne","name":"ruby_llm","url":"https://github.com/crmne/ruby_llm","description":"The Ruby AI framework.","homepage":"https://rubyllm.com/","topics":[],"language":"Ruby","license":"MIT","avatar":"https://avatars.githubusercontent.com/u/106617?v=4","created_at":"2025-01-30T08:58:19Z","pushed_at":"2026-11-10T06:27:05Z","metrics":{"stars":4499,"forks":533,"watchers":29,"issues":516,"prs":947,"releases":46,"issues_open":null,"issues_closed":null,"prs_open":null,"prs_closed":null,"prs_merged":null,"discussions":115},"growth":{"day":{"stars":1,"forks":-1,"base_day":"2026-11-09"}},"history":{"dates":["2026-11-09","2026-11-10"],"stars":[4498,4499],"forks":[534,533],"watchers":[29,29],"issues_open":[null,null],"prs_open":[null,null]},"boards":{},"same_owner":[{"full_name":"crmne/spotifast","name":"spotifast","boards":{"new":48}},{"full_name":"crmne/zapfast","name":"zapfast","boards":{"daily_rate":84,"weekly_rate":189,"new":190}}],"issues":[{"number":1556,"title":"[FEATURE] Headers per context for every request, including embed","comments":1,"created_at":"2026-11-08T00:05:03Z"},{"number":1576,"title":"[BUG] An MCP instance raises NoMethodError when its token expires after deauthorize","comments":0,"created_at":"2026-11-08T10:18:02Z"},{"number":1575,"title":"[BUG] One context that can't reach an MCP server hides its tools from every other context","comments":0,"created_at":"2026-11-08T10:18:00Z"}],"discussions":[{"number":1260,"title":"[OpenAI Bug] File upload - OpenAI multipart uploads","comments":1,"category":"General","created_at":"2026-10-20T21:50:34Z"},{"number":1064,"title":"testing acts_as_chat","comments":2,"category":"Q&A","created_at":"2026-10-12T15:48:49Z"},{"number":1054,"title":"Comparing evaluation runs (baselines, regressions) - plans for RubyLLM::Evaluation?","comments":0,"category":"Ideas","created_at":"2026-10-10T16:49:09Z"},{"number":1034,"title":"A hard dollar limit per background job with RubyLLM (openai_api_base + with_headers)","comments":0,"category":"Show and tell","created_at":"2026-10-03T17:34:30Z"},{"number":1013,"title":"New Judgments feature naming","comments":1,"category":"Ideas","created_at":"2026-10-01T20:06:23Z"},{"number":958,"title":"Evals?","comments":2,"category":"Q&A","created_at":"2026-09-23T09:39:59Z"},{"number":957,"title":"multiple chat and message models?","comments":2,"category":"Q&A","created_at":"2026-09-22T20:26:56Z"},{"number":946,"title":"Agent with custom context","comments":2,"category":"Q&A","created_at":"2026-09-18T15:22:29Z"}],"latest_release":{"name":"RubyLLM 2.1.1","tag":"v2.1.1","published_at":"2026-10-11T21:52:30Z","body":"RubyLLM 2.1.1 fixes fresh installs that today's faraday-net_http 3.5.0 release broke, connects to MCP servers that predate the 2026-07-28 revision, and keeps batch embeddings paired with the right inputs.\n\n```sh\nbundle add ruby_llm --version 2.1.1\n```\n\nAlready on 2.1? Run `bundle update ruby_llm`. No schema or code changes are needed.\n\n## Fixed\n\n- **Install RubyLLM with the latest faraday-net_http.** faraday-net_http 3.5.0 falls outside the range every Faraday from 2.0.1 to 2.14.4 accepts, so a fresh `bundle install` resolved Faraday 2.0.0, which loads no default adapter, and every request failed with `:net_http is not registered on Faraday::Adapter`. RubyLLM now excludes Faraday 2.0.0. By @crmne; thanks @juneira. ([ef2bebdb](https://github.com/crmne/ruby_llm/commit/ef2bebdb))\n- **Connect to MCP servers that predate the 2026-07-28 revision.** A server that rejects the revision with `-32022` now gets the `initialize` handshake whether it lists the legacy revisions it speaks, as Atlassian's does, or lists none, as Datadog's does. By @ebeigarts, @juneira, and @crmne. (#1056, #1057, #1053, #1055)\n- **Pair batch embeddings with the right inputs.** OpenAI-compatible and Mistral batch results now place each vector by the position the provider reports, and mark a result with duplicate, missing, or out-of-range positions as failed instead of pairing its vectors with the wrong texts. By @D41910. (#1051, #1052)\n- **Keep the Bedrock inference profile you choose.** An id that already names a geography, such as `eu.anthropic.claude-sonnet-5-5`, is no longer rewritten to another region's profile, so requests stay where your IAM policy allows them. By @s-andringa. (#1050)\n- **Keep chat replies when a usage row cannot be linked.** A persisted chat saves the reply and logs the failed link, instead of rolling back an answer the provider already billed. By @yorzi. (#1048, #1049)\n- **Upload converted attachments again after a provider deletes them.** The chat forgets the stale upload and retries, as it already did for plain attachments. By @yorzi. (#1046, #1047)\n\n## Thanks\n\nThanks to @yorzi, @s-andringa, @D41910, @ebeigarts, and @juneira for the fixes and reports in this release.\n\n**Full changelog**: https://github.com/crmne/ruby_llm/compare/v2.1.0...v2.1.1\n"},"readme":true,"readme_zh":false,"news":[],"stale":false,"snapshot_at":"2026-11-10T09:35:25Z","history_start":"2026-09-06"}