agentjido/req_llm
73.2
Strong · 3 October 2026
77.4k
lines of production code
Elixir
primary language
2
measurements over time
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.