Skip to content
CAI
Software that uses CAICheck a score

agentjido/req_llm

73.2

Strong · 3 October 2026

77.4k

lines of production code

Elixir

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

ReqLLM is an Elixir library that provides a unified interface for interacting with a wide catalog of LLM providers, including OpenAI, Anthropic, Google, and Amazon Bedrock. It handles core AI operations such as text generation, streaming, tool calling, structured output, and multimodal content processing through a centralized HTTP connection pool. The system includes extensive CLI tools for diagnostics, compatibility checking, and provider drift detection, alongside a robust testing framework that validates API contracts and streaming behavior across diverse models.

How it got here

2025 — ReqLLM rebranding and comprehensive testing

38 changes.

The project was rebranded from ReqAi to ReqLLM, establishing a unified OTP application with centralized HTTP connection pooling and a suite of CLI diagnostic tools. This period focused heavily on expanding the test infrastructure to include fixture-based replay and parity checks, while adding extensive coverage for a wide array of AI providers and multimodal capabilities.

2026 — Provider expansion and test coverage

19 changes.

This period focused on expanding support for numerous new LLM providers, including MiniMax, Moonshot AI, LM Studio, and various cloud services, while adding comprehensive test suites to verify their functionality. Significant effort was also directed toward hardening the codebase through extensive unit and contract testing for core features like streaming, tool calling, and usage normalization. Additionally, new developer tools and examples were introduced to facilitate interactive testing and automated code review workflows.

Features

Added PR review and hardening agent skills with BEAM toolchain setup

The .agents directory now includes configuration for automated pull request management. A new 'pr-review' skill enables agents to analyze PRs for code quality, test coverage, and merge conflicts, updating labels to 'ready\_to\_merge' or 'needs\_work' based on findings. A complementary 'pr-harden' skill allows agents to actively fix blocking issues on PR branches and strengthen test coverage. Additionally, setup and resume scripts have been added to install and verify the Erlang/OTP and Elixir toolchain, ensuring the environment is ready for BEAM-based project operations.

.agents · high confidence

Initial configuration for LLM provider catalog and request timeouts

This change introduces the foundational configuration files for the application, establishing a model catalog via \llm\_db\ that defines allowed and denied models for various providers (such as OpenAI, Anthropic, and Google) and sets default request and stream timeouts in \req\_llm\. It also configures development-specific git hooks for commit message checking and code formatting, ensuring consistent development workflows.

config · high confidence

New ReqLLM Agent tutorial series

Added a comprehensive 14-chapter tutorial series in the tutorial/agents directory that demonstrates building LLM agents with ReqLLM. The examples progress from basic synchronous text generation to advanced patterns including tool calling loops, streaming responses, OTP GenServer architectures (phased execution), memory management with sliding windows, interactive CLI REPLs, usage logging, and resilient tool execution using Tasks, parallel execution via Task.Supervisor, and exponential backoff retries.

tutorial · high confidence

New ReqLLM CLI tasks for generation, compatibility, and diagnostics

This release introduces several new Mix tasks to the \lib/mix\ directory. \mix req\_llm.gen\ provides a unified command for generating text or structured JSON objects from various AI models, supporting streaming and non-streaming modes. \mix req\_llm.model\_compat\ allows users to validate model coverage using fixture-based testing, with options to filter by provider, operation type, and support tiers. \mix req\_llm.model\_support\ inspects or generates evidence-backed model support tiers, helping users understand which models are first-class, best-effort, or experimental. \mix req\_llm.provider\_drift\ runs bounded live provider drift verification to detect changes in provider behavior. \mix req\_llm.doctor\ diagnoses installation and runtime configuration issues. \mix req\_llm.install\ simplifies setting up ReqLLM in an application using Igniter. \mix req\_llm.migration\_audit\ scans source code for V2 migration patterns. Finally, \mix test.livebooks\ validates Livebook documentation files by checking their Elixir code blocks for syntax errors or execution failures.

lib/mix · high confidence

New ReqLLM examples project with agent demo and interactive playground

A new nested Mix project in the \examples/\ directory provides runnable demonstrations of ReqLLM capabilities. It includes an interactive agent demo (\demo.exs\) that showcases streaming text generation, tool calling (calculator and web search), and conversation history maintenance. A local web-based playground (\playground.exs\) built with Phoenix LiveView allows users to test and debug LLM requests interactively, supporting multiple providers including OpenAI, Anthropic, OpenRouter, and ZenMux. The project also contains standalone scripts for text generation, streaming, object generation, embeddings, and context reuse, along with shared helper utilities and configuration templates.

examples · high confidence

New provider and configuration documentation guides

The documentation now includes dedicated guides for adding custom providers, configuring global settings (timeouts, pools, telemetry), and detailed usage instructions for specific providers including Amazon Bedrock, Anthropic, Azure, Cerebras, DeepSeek, and Fireworks AI. These guides cover provider registration, model specification, provider options, and implementation details to help users integrate and configure the library effectively.

guides · high confidence

ReqLLM application bootstrapping and unified HTTP connection pooling

ReqLLM now starts its own OTP application that initializes the provider registry, a named ETS table for schema caching, and a centralized Finch HTTP client. This unified connection pool handles both streaming and non-streaming requests across all providers, with configurable pool size, count, and HTTP protocols. The application also supports automatic .env file loading at startup and includes a dev-mode Tidewave plug for local debugging.

_lib/req\llm · high confidence

Behavioural changes

Project renamed from ReqAi to ReqLLM and quality gates standardized

The library has been renamed from ReqAi to ReqLLM, reflected in the package tarball pattern in .gitignore and the project documentation. A .credo.exs configuration file has been added to enforce code quality standards, and the .formatter.exs has been updated to set a line length of 98 characters. Additionally, .gitignore has been expanded to exclude Conductor, Language Server, and Dialyzer PLT files, while .env.example now lists the supported API keys for automatic loading.

(repo-wide) · high confidence

Rename ReqAi to ReqLLM

The main API facade module has been renamed from \ReqAi\ to \ReqLLM\. The previous \ReqAi\ module, which contained only a placeholder \hello/0\ function, has been removed and replaced by the new \ReqLLM\ module, which provides the unified interface for AI providers, model specifications, configuration management, and structured data generation.

lib · high confidence

Test coverage

Added Azure provider test coverage; Added Google API coverage tests for grounding, image generation, and multimodal tool results; Added OpenRouter API coverage tests; Added comprehensive test coverage for Anthropic provider capabilities; Added comprehensive test coverage for ReqLLM core components; Added comprehensive test coverage for streaming failure handling and transport configuration; Added comprehensive test coverage for the StreamServer component; Added comprehensive test suite for Cerebras provider; Added comprehensive test suites for Z.AI and Z.AI Coder providers; Added comprehensive tests for provider streaming, materialization, and options handling; Added comprehensive tests for the MiniMax provider; Added contract tests for public API and provider extension stability; Added integration tests for Bedrock, Ollama, speech, transcription, and streaming; Added provider-level test coverage for Alibaba, Amazon Bedrock, Anthropic, Atlas Cloud, Cerebras, Cohere, DeepSeek, and Fireworks AI; Added release integration test for LLM DB dependency behavior; Added test coverage for Alibaba, Alibaba CN, Cohere, ElevenLabs, Venice, and Zenmux providers; Added test coverage for Amazon Bedrock Converse API features; Added test coverage for Amazon Bedrock, Anthropic, ElevenLabs, Google, and Ollama providers; Added test coverage for Google Vertex AI provider; Added test coverage for LM Studio provider; Added test coverage for Moonshot AI Kimi K3; Added test coverage for error handling, retry logic, usage extraction, and fixture replay steps; Added test coverage for xAI provider capabilities; Added test fixture for LLM DB release configuration; Added tests for Amazon Bedrock Cohere embedding support; Added tests for Anthropic OAuth token refresh; Added tests for Google CachedContent API integration; Added tests for Google Vertex AI authentication, token caching, and Anthropic structured output; Added tests for LLM provider structured output support; Added tests for LLM usage normalization logic; Added tests for OpenAI OAuth, parameter profiles, Responses API, and WebSocket support; Added tests for OpenAI structured output and Responses tool schema handling; Added tests for ReqLLM CLI tasks and compatibility logic; Added tests for ReqLLM message content part construction; Added tests for ReqLLM response stream summarization; Added tests for compatibility evidence migration, provider drift, and scenario catalog; Added tests for namespaced provider options normalization; Added tests for non-strict tool schemas and cross-provider tool call ID compatibility; Added unit tests for Bedrock bidirectional streaming and Nova Sonic event handling; Added unit tests for the Azure provider implementation; Expanded OpenAI feature coverage tests; Expanded test coverage for Amazon Bedrock provider; Expanded test coverage for ReqLLM core subsystems; Expanded test suite with parity checks and video generation coverage; New provider coverage test suites for text, embeddings, images, audio, and video; New test support infrastructure for fixtures, streaming, and provider validation; Validation script for DevDay Responses and Image 2.5 model support.

Dependencies

Add examples project and update dependency lockfiles

The \examples/\ directory now includes a dedicated \mix.exs\ and \mix.lock\ for the \req\_llm\_examples\ application, which depends on the main library and \phoenix\_playground\ (\~\> 0.1.8). The root \mix.exs\ has been updated to reflect the project rename from \ReqAi\ to \ReqLLM\ and sets the version to 1.26.0. Additionally, the root \mix.lock\ and the test fixture \mix.lock\ have been refreshed to resolve the latest dependency versions, including updates to \igniter\, \jsv\, \mint\, and \llm\_db\.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 77 → 73 (-3.4)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 89 → 89 (-0.3)
  • Architecture 100 → 91 (-8.9)
  • Maturity 77 → 78 (+0.2)
  • Readiness 77 → 66 (-11.0)
  • Security 72 → 77 (+4.6)

Resolved (52)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no licence statement (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (11 lines × 2) (lib/req_llm/generation.ex)
  • Duplicated block (12 lines × 2) (lib/req_llm/generation.ex)
  • Duplicated block (12 lines × 2) (lib/req_llm/providers/anthropic/oauth.ex)
  • Duplicated block (12 lines × 2) (lib/req_llm/providers/openai/responses_api.ex)
  • Duplicated block (12 lines × 2) (tutorial/agents/06_memory_context.exs)
  • Duplicated block (13 lines × 3) (lib/req_llm/providers/minimax/images_api.ex)
  • Duplicated block (14 lines × 2) (tutorial/agents/13_agent_profiles.exs)
  • Duplicated block (14 lines × 3) (lib/req_llm/providers/google.ex)
  • Duplicated block (15–16 lines × 2) (lib/req_llm/providers/amazon_bedrock.ex)
  • Duplicated block (17 lines × 2) (lib/req_llm/provider/defaults.ex)
  • Duplicated block (17 lines × 2) (lib/req_llm/telemetry.ex)
  • Duplicated block (18 lines × 3) (lib/req_llm/providers/groq.ex)
  • Duplicated block (22 lines × 2) (lib/req_llm/providers/openrouter.ex)
  • Duplicated block (23–27 lines × 2) (lib/req_llm/providers/openrouter.ex)
  • Duplicated block (5 lines × 2) (lib/req_llm/images.ex)
  • Duplicated block (6 lines × 2) (lib/mix/tasks/req_llm.doctor.ex)
  • Duplicated block (7 lines × 2) (lib/req_llm/images.ex)
  • …and 32 more

New (62)

  • Billing.calculate (cognitive 24) (lib/req_llm/billing.ex)
  • Billing.calculate (cyclomatic 20) (lib/req_llm/billing.ex)
  • Billing.meters (cognitive 26) (lib/req_llm/billing.ex)
  • Billing.meters (cyclomatic 18) (lib/req_llm/billing.ex)
  • Billing.modality_counts (cognitive 27) (lib/req_llm/billing.ex)
  • Billing.modality_counts (cyclomatic 21) (lib/req_llm/billing.ex)
  • Duplicated block (10 lines × 2) (lib/req_llm/generation.ex)
  • Duplicated block (10 lines × 2) (lib/req_llm/providers/amazon_bedrock.ex)
  • Duplicated block (10 lines × 2) (lib/req_llm/providers/meta.ex)
  • Duplicated block (10 lines × 2) (lib/req_llm/providers/minimax.ex)
  • Duplicated block (10 lines × 2) (lib/req_llm/speech.ex)
  • Duplicated block (10 lines × 2) (tutorial/agents/06_memory_context.exs)
  • Duplicated block (10 lines × 3) (lib/req_llm/providers/google/cached_content.ex)
  • Duplicated block (10 lines × 8) (examples/scripts/context_cross_model.exs)
  • Duplicated block (12 lines × 2) (lib/req_llm/providers/openrouter.ex)
  • Duplicated block (13 lines × 2) (lib/req_llm/generation.ex)
  • Duplicated block (13 lines × 2) (lib/req_llm/providers/anthropic/oauth.ex)
  • Duplicated block (13 lines × 2) (lib/req_llm/providers/azure.ex)
  • Duplicated block (13 lines × 2) (lib/req_llm/providers/openai/responses_api.ex)
  • Duplicated block (13 lines × 2) (tutorial/agents/06_memory_context.exs)
  • …and 42 more

Changes since last survey

  • 36 commits — 21 feature/other, 15 fixes

By area

  • lib/req_llm — 24 commits
  • (root) — 8 commits
  • test/req_llm — 2 commits
  • test/support — 2 commits

Notable commits

  • fix: fix(anthropic): replay tool search blocks in place (#1034)
  • fix: fix(anthropic): report Claude Code 2.1.282 on subscription OAuth requests (#1052)
  • fix: fix(bedrock): send output_config.effort for adaptive-thinking Claude models (#1055)
  • fix: fix(bedrock): send serviceTier on Converse and honor explicit region (#1032)
  • fix: fix(bedrock): surface mid-stream exceptions and map all Converse stop reasons (#1033)
  • fix: fix(deepseek): map reasoning effort levels to supported values (#1025)
  • fix: fix(deps): update Mint for security advisory
  • fix: fix(http): prevent non-streaming connection pool timeouts (#1067)
  • fix: fix(openai): decode Responses refusals as text with content_filter finish reason (#1064)
  • fix: fix(openai): enforce anonymous auth and exact streaming model identity (#1065)
  • fix: fix(openai): read nested error details from Responses stream error events (#1061)
  • fix: fix(streaming): honor per-request proxy connection options (#1054)
  • fix: fix(usage): distinguish cache reads and writes (#1035)
  • fix: fix: close shared contract gaps from design review (#1069)
  • fix: fix: preserve non-strict Responses tool schemas (#1049)
  • change: chore(deps): update ecosystem dependencies
  • change: chore(deps): update llm_db to 2026.9.5 (#1045)
  • change: chore(deps): update zoi and mint
  • change: chore: release version v1.25.0
  • change: chore: release version v1.26.0
  • …and 16 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

agentjido/req_llm was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit fd5e59eb00d3d1f9bb07e6466c440c6fba404b1e — the exact code this score is about.
  • Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-8fe32cd45d00.