%{
  title: "Jido Ecosystem Digest: January 2026",
  description: "Maintainer digest of Jido ecosystem activity for January 2026.",
  category: :docs,
  legacy_paths: [],
  tags: [:docs, :contributors, :ecosystem, :digest],
  order: 21,
  menu_label: "January 2026 Digest"
}
---

This digest summarizes public Jido ecosystem activity from January 1, 2026 through January 31, 2026. It is generated from the local ecosystem issue and pull request projection, then edited into a reviewable maintainer narrative.

## Activity Snapshot

| Metric | Count |
| --- | ---: |
| Merged pull requests | 91 |
| Closed issues | 48 |
| Active repositories with merged PRs | 6 |
| Human-authored merged PRs | 70 |
| Merged Dependabot pull requests | 13 |

## Pull Request Mix

| Category | Merged PRs |
| --- | ---: |
| Fixes | 33 |
| Features | 23 |
| Dependency maintenance | 14 |
| Other | 9 |
| Refactors | 6 |
| Documentation | 4 |
| Chores | 2 |

## Top Repositories By Merged PRs

| Repo | Merged PRs |
| --- | ---: |
| `req_llm` | 44 |
| `llm_db` | 22 |
| `jido_signal` | 8 |
| `jido` | 7 |
| `jido_action` | 5 |
| `jido_ai` | 5 |

## Top Authors And Automation

| Author | Merged PRs |
| --- | ---: |
| `mikehostetler` | 30 |
| `app/dependabot` | 13 |
| `vkryukov` | 10 |
| `app/github-actions` | 8 |
| `ycastorium` | 7 |
| `nshkrdotcom` | 4 |
| `meanderingstream` | 3 |
| `preciz` | 3 |
| `shelvick` | 3 |
| `youfun` | 2 |
| `GitJuhb` | 1 |
| `brent-emb` | 1 |

## Summary

The busiest repositories were `req_llm`, `llm_db`, `jido_signal`, `jido`. Dependency maintenance accounted for 13 merged PRs, while human-authored changes accounted for 70. The largest category was fixes.
Closed issues were concentrated in `req_llm` (33), `jido` (6), `llm_db` (5), `jido_action` (4).

## Notable Merged Work

| Repo | PR | Author | Merged |
| --- | --- | --- | --- |
| `req_llm` | [req_llm#396 feat: add ToolCall.from_map/1 and to_map/1 for normalized tool call handling](https://github.com/agentjido/req_llm/pull/396) | `mikehostetler` | 2026-01-31 |
| `req_llm` | [req_llm#394 feat: add reasoning_cost to cost breakdown](https://github.com/agentjido/req_llm/pull/394) | `mikehostetler` | 2026-01-30 |
| `req_llm` | [req_llm#393 feat: add OpenRouter usage and plugins options](https://github.com/agentjido/req_llm/pull/393) | `mikehostetler` | 2026-01-30 |
| `req_llm` | [req_llm#392 feat: add google_url_context provider option](https://github.com/agentjido/req_llm/pull/392) | `mikehostetler` | 2026-01-30 |
| `req_llm` | [req_llm#390 docs: clarify custom provider registration and usage](https://github.com/agentjido/req_llm/pull/390) | `mikehostetler` | 2026-01-30 |
| `req_llm` | [req_llm#389 fix: validate image-only attachments for OpenAI/xAI](https://github.com/agentjido/req_llm/pull/389) | `mikehostetler` | 2026-01-30 |
| `req_llm` | [req_llm#388 fix: remove broken Discussions link](https://github.com/agentjido/req_llm/pull/388) | `mikehostetler` | 2026-01-30 |
| `req_llm` | [req_llm#387 docs: add Ollama usage guide](https://github.com/agentjido/req_llm/pull/387) | `mikehostetler` | 2026-01-30 |
| `req_llm` | [req_llm#382 feat: add google_auth_header option for streaming](https://github.com/agentjido/req_llm/pull/382) | `mikehostetler` | 2026-01-30 |
| `req_llm` | [req_llm#381 fix: preserve translate_options changes to provider_options](https://github.com/agentjido/req_llm/pull/381) | `mikehostetler` | 2026-01-30 |
| `req_llm` | [req_llm#380 docs: fix incorrect Tool.new example in core-concepts](https://github.com/agentjido/req_llm/pull/380) | `mikehostetler` | 2026-01-30 |
| `req_llm` | [req_llm#379 fix: handle StreamServer termination gracefully in FinchClient](https://github.com/agentjido/req_llm/pull/379) | `mikehostetler` | 2026-01-30 |
| `req_llm` | [req_llm#378 fix: strip unsupported schema constraints for Anthropic](https://github.com/agentjido/req_llm/pull/378) | `mikehostetler` | 2026-01-30 |
| `req_llm` | [req_llm#371 feat: Add comprehensive usage and billing infrastructure](https://github.com/agentjido/req_llm/pull/371) | `vkryukov` | 2026-01-30 |
| `req_llm` | [req_llm#368 feat(openai): add configurable strict mode for JSON schema](https://github.com/agentjido/req_llm/pull/368) | `xu-chris` | 2026-01-30 |
| `req_llm` | [req_llm#365 feat: Implement support for Cohere Embeddings on Bedrock](https://github.com/agentjido/req_llm/pull/365) | `ycastorium` | 2026-01-30 |
| `req_llm` | [req_llm#355 fix: Add api_key to internal keys](https://github.com/agentjido/req_llm/pull/355) | `ycastorium` | 2026-01-30 |
| `req_llm` | [req_llm#357 feat: support structured and multimodal tool outputs](https://github.com/agentjido/req_llm/pull/357) | `vkryukov` | 2026-01-30 |
| `req_llm` | [req_llm#352 Fix zai coding plan delegates](https://github.com/agentjido/req_llm/pull/352) | `dbii` | 2026-01-30 |
| `req_llm` | [req_llm#354 feat: Adds support for verbosity in OpenAI Models](https://github.com/agentjido/req_llm/pull/354) | `ycastorium` | 2026-01-30 |
| `req_llm` | [req_llm#376 refactor: replace TypedStruct with Zoi schemas](https://github.com/agentjido/req_llm/pull/376) | `mikehostetler` | 2026-01-30 |
| `req_llm` | [req_llm#366 Optionally, override provider base_url with a base_url value in the model configuration.](https://github.com/agentjido/req_llm/pull/366) | `meanderingstream` | 2026-01-30 |
| `req_llm` | [req_llm#374 feat(openrouter): add support for native JSON schema structured output](https://github.com/agentjido/req_llm/pull/374) | `preciz` | 2026-01-30 |
| `llm_db` | [llm_db#101 fix: add explicit wire.protocol metadata for OpenAI models](https://github.com/agentjido/llm_db/pull/101) | `vkryukov` | 2026-01-30 |
| `jido` | [jido#108 fix(sensor): simplify handle_event/2 to directive-only format](https://github.com/agentjido/jido/pull/108) | `mikehostetler` | 2026-01-30 |
| `jido` | [jido#107 fix: address code quality issues from codebase review](https://github.com/agentjido/jido/pull/107) | `mikehostetler` | 2026-01-30 |
| `jido` | [jido#106 refactor: convert remaining structs to use Zoi schemas](https://github.com/agentjido/jido/pull/106) | `mikehostetler` | 2026-01-30 |
| `jido_signal` | [jido_signal#68 fix: add default for TrieNode.handlers in Router](https://github.com/agentjido/jido_signal/pull/68) | `malcolmsgc` | 2026-01-30 |
| `jido_action` | [jido_action#57 fix(compensation): use supervised tasks and pass opts to on_error/4](https://github.com/agentjido/jido_action/pull/57) | `mikehostetler` | 2026-01-30 |
| `jido_action` | [jido_action#56 fix(tool): support atom keys, open validation & JSON Schema improvements](https://github.com/agentjido/jido_action/pull/56) | `mikehostetler` | 2026-01-30 |
| `jido_signal` | [jido_signal#69 refactor: remove typed_struct dependency](https://github.com/agentjido/jido_signal/pull/69) | `mikehostetler` | 2026-01-30 |
| `jido_action` | [jido_action#54 feat(exec): add instance isolation support for multi-tenant execution](https://github.com/agentjido/jido_action/pull/54) | `mikehostetler` | 2026-01-30 |
| `llm_db` | [llm_db#98 Fix/test environment](https://github.com/agentjido/llm_db/pull/98) | `vkryukov` | 2026-01-28 |
| `llm_db` | [llm_db#96 Fix/issue 93](https://github.com/agentjido/llm_db/pull/96) | `vkryukov` | 2026-01-28 |
| `llm_db` | [llm_db#92 feat: Add pricing and billing support for tool usage](https://github.com/agentjido/llm_db/pull/92) | `vkryukov` | 2026-01-28 |

## Dependency Maintenance

Dependabot merged 13 PRs during January. The busiest repositories for dependency maintenance were:

| Repo | Dependabot PRs |
| --- | --- |
| `jido_signal` | 4 |
| `req_llm` | 4 |
| `llm_db` | 3 |
| `jido` | 1 |
| `jido_ai` | 1 |

## Closed Issues

| Repo | Issue | Closed |
| --- | --- | --- |
| `req_llm` | [req_llm#198 Add support for reasoning token cost calculation](https://github.com/agentjido/req_llm/issues/198) | 2026-01-30 |
| `req_llm` | [req_llm#229 [Feature]: Support additional provider options for openrouter, usage and plugins](https://github.com/agentjido/req_llm/issues/229) | 2026-01-30 |
| `req_llm` | [req_llm#226 [Feature]: Add support for url_context in Google provider context](https://github.com/agentjido/req_llm/issues/226) | 2026-01-30 |
| `req_llm` | [req_llm#283 [Bug]: Custom providers don't work?](https://github.com/agentjido/req_llm/issues/283) | 2026-01-30 |
| `req_llm` | [req_llm#317 [Bug]: OpenAI, xAI don't encode non-image attachments properly](https://github.com/agentjido/req_llm/issues/317) | 2026-01-30 |
| `req_llm` | [req_llm#288 [Bug]: When creating new issue, "Discussion" option is a broken link](https://github.com/agentjido/req_llm/issues/288) | 2026-01-30 |
| `req_llm` | [req_llm#297 [Bug]: Documentation for Working with Ollama](https://github.com/agentjido/req_llm/issues/297) | 2026-01-30 |
| `req_llm` | [req_llm#320 [Bug]: Google Provider Streaming Incompatible with OpenAI-Compatible Proxies](https://github.com/agentjido/req_llm/issues/320) | 2026-01-30 |
| `req_llm` | [req_llm#146 [Bug]: Options.process restores original provider_options after translate_options](https://github.com/agentjido/req_llm/issues/146) | 2026-01-30 |
| `req_llm` | [req_llm#268 [Bug]: Core Concepts has incorrect tool usage example](https://github.com/agentjido/req_llm/issues/268) | 2026-01-30 |
| `req_llm` | [req_llm#319 [Bug]: StreamServer timeout cascading :noproc errors](https://github.com/agentjido/req_llm/issues/319) | 2026-01-30 |
| `req_llm` | [req_llm#302 [Bug]: Property 'minimum' is not supported by Anthropic models](https://github.com/agentjido/req_llm/issues/302) | 2026-01-30 |
| `req_llm` | [req_llm#351 xAI: Migrate from /v1/messages endpoint before Feb 20, 2026 deprecation](https://github.com/agentjido/req_llm/issues/351) | 2026-01-30 |
| `req_llm` | [req_llm#356 Cannot upgrade past 1.2.0 due to TypedStruct conflict](https://github.com/agentjido/req_llm/issues/356) | 2026-01-30 |
| `req_llm` | [req_llm#265 [Feature]: Account for the cost related to tool usage (such as web search)](https://github.com/agentjido/req_llm/issues/265) | 2026-01-30 |
| `req_llm` | [req_llm#264 [Feature]: Support search for Anthropic and OpenAI models via provider options](https://github.com/agentjido/req_llm/issues/264) | 2026-01-30 |
| `req_llm` | [req_llm#372 Mistral tool_calls not parsed - missing 'type' field in API response](https://github.com/agentjido/req_llm/issues/372) | 2026-01-30 |
| `req_llm` | [req_llm#367 OpenAI json_schema mode hardcodes strict: true, breaking schemas with dynamic maps](https://github.com/agentjido/req_llm/issues/367) | 2026-01-30 |
| `req_llm` | [req_llm#364 [Feature]: Adds support for embeddings through Amazon Bedrock](https://github.com/agentjido/req_llm/issues/364) | 2026-01-30 |
| `req_llm` | [req_llm#275 [Bug]: api_key option not accepted by generate_text](https://github.com/agentjido/req_llm/issues/275) | 2026-01-30 |
| `req_llm` | [req_llm#349 [Bug]: ReqLLM.Context assumes text ContentPart](https://github.com/agentjido/req_llm/issues/349) | 2026-01-30 |
| `req_llm` | [req_llm#353 [Feature]: Allow Verbosity config for OpenAI Models](https://github.com/agentjido/req_llm/issues/353) | 2026-01-30 |
| `llm_db` | [llm_db#100 Make Responses API the default for OpenAI](https://github.com/agentjido/llm_db/issues/100) | 2026-01-30 |
| `jido` | [jido#104 Genserver crashes when setting routes in signal_routes/0 on agent (v2.0.0-rc.1)](https://github.com/agentjido/jido/issues/104) | 2026-01-30 |
| `jido` | [jido#102 Bug: Sensor.Runtime doesn't accept documented handle_event/2 return shapes](https://github.com/agentjido/jido/issues/102) | 2026-01-30 |
| `jido` | [jido#103 Code quality: 8 minor issues identified during codebase review](https://github.com/agentjido/jido/issues/103) | 2026-01-30 |
| `jido_action` | [jido_action#4 Create a RunicAction to coordinate actions built with Runic](https://github.com/agentjido/jido_action/issues/4) | 2026-01-30 |
| `jido_action` | [jido_action#52 JSON Schema generation has incomplete type mappings and missing array/enum support](https://github.com/agentjido/jido_action/issues/52) | 2026-01-30 |
| `jido_action` | [jido_action#53 Compensation execution uses unsupervised tasks, drops opts, and ignores max_retries config](https://github.com/agentjido/jido_action/issues/53) | 2026-01-30 |
| `jido_action` | [jido_action#51 Tool.convert_params_using_schema/2 breaks open validation semantics and ignores atom keys](https://github.com/agentjido/jido_action/issues/51) | 2026-01-30 |

## Merge Pace

| Central Day | Merged PRs |
| --- | ---: |
| 2026-01-04 | 6 |
| 2026-01-05 | 4 |
| 2026-01-12 | 4 |
| 2026-01-15 | 14 |
| 2026-01-16 | 3 |
| 2026-01-19 | 1 |
| 2026-01-20 | 2 |
| 2026-01-21 | 4 |
| 2026-01-23 | 5 |
| 2026-01-24 | 1 |
| 2026-01-25 | 2 |
| 2026-01-26 | 1 |
| 2026-01-27 | 1 |
| 2026-01-28 | 7 |
| 2026-01-30 | 35 |
| 2026-01-31 | 1 |

## Data Notes

- Window: January 1, 2026 through January 31, 2026, using US Central calendar boundaries.
- Source: local `data/jido.sqlite` issue and pull request projection.
- Latest full ecosystem sync used by this draft: `2026-05-15T14:10:41Z`.
- Latest targeted sync in the local projection: `2026-05-15T14:18:03Z`.
- This page is a draft digest for maintainer review before publication.
