Heads up This site is currently under heavy development.
Subscribe Get it delivered — the daily firehose, filtered to the tools you run, plus the documentation changes vendors never announce. Compare plans →

The AI Toolchain — issue -301, October 20, 2025

THE AI TOOLCHAIN NO. -301
Tail
THE DAILY RELEASE FIREHOSE
PUBLISHED OCTOBER 20, 2025 · EVERY WEEKDAY
EDITIONS tail grep head diff uniq

The daily firehose — everything the toolchain shipped today, already filtered.

// HOW THIS ISSUE IS MADE

We read every release from the 174 tools on our watchlist at the source — GitHub and GitLab release notes, vendor release pages and changelogs, project blogs and feeds, vendor press releases, and the source code behind the tag. Bug-fix-only releases and non-product newsroom noise are dropped; what's left is summarized down to the new capability, how to try it, and any screenshots or videos the release itself published. Every entry links to the sources it was built from.

VIEW
ISSUE VIEW full issue
Do you prefer this view?
$ tct list   # 8 tools matched
AI & LLM Tooling
◆  AI Agent Frameworks

Agno (formerly Phidata)

Sources Release notes → v2.1.9 NOTES

Agno v2.1.9 adds trackable message IDs and session_state propagation to Workflow Condition and Router steps.

└──▷ GET THIS VERSION
$ git clone --branch v2.1.9 https://github.com/agno-agi/agno.git
# already have the repo? check out this version:
$ git checkout v2.1.9
└──▷ USE IT
Access session_state inside a Condition evaluator to make routing decisions based on contextual workflow state.
python
from agno.workflow import Condition

def my_evaluator(step_output, session_state):
    return session_state.get('user_tier') == 'premium'

condition = Condition(evaluator=my_evaluator, ...)
  • Adds id field to the Message class, available on RunOutput message lists, enabling message tracking in storage.
  • Extends session_state access to evaluator and selector functions in Condition and Router Workflow Step classes.
Was this useful?

CrewAI

Sources Release notes → 1.0.0 NOTES

Framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.

CrewAI 1.0.0 adds enhanced knowledge/guardrail event handling and tool repository credential injection for the run command.

└──▷ GET THIS VERSION
$ git clone --branch 1.0.0 https://github.com/crewAIInc/crewAI.git
# already have the repo? check out this version:
$ git checkout 1.0.0
  • Enhances knowledge and guardrail event handling in the Agent class for more robust agent lifecycle control.
  • Injects tool repository credentials automatically in the crewai run command, enabling authenticated tool source access.
Was this useful?

deepset Haystack

Sources Release notes → v2.19.0 NOTES

Haystack v2.19.0 adds FallbackChatGenerator, sparse embedders, RegexTextExtractor, and mixed Tool/Toolset support for agents.

└──▷ GET THIS VERSION
$ git clone --branch v2.19.0 https://github.com/deepset-ai/haystack.git
# already have the repo? check out this version:
$ git checkout v2.19.0
└──▷ USE IT
Build a resilient chat pipeline that automatically falls back through Anthropic, Google, and OpenAI when earlier providers fail.
python
from haystack.components.generators.chat.fallback import FallbackChatGenerator
from haystack.components.generators.chat.openai import OpenAIChatGenerator
from haystack_integrations.components.generators.anthropic import AnthropicChatGenerator
from haystack.dataclasses import ChatMessage

chat_generator = FallbackChatGenerator(chat_generators=[
    AnthropicChatGenerator(model="claude-sonnet-4-5", timeout=5),
    OpenAIChatGenerator(model="gpt-4o-mini"),
])
response = chat_generator.run(messages=[ChatMessage.from_user("Summarize the OWASP Top 10.")])
print(response["meta"]["successful_chat_generator_class"])
print(response["replies"][0].text)
Embed documents as sparse vectors for efficient inverted-index retrieval with QdrantDocumentStore.
python
from haystack.components.embedders import SentenceTransformersSparseTextEmbedder

embedder = SentenceTransformersSparseTextEmbedder()
embedder.warm_up()
result = embedder.run("Detect lateral movement via SMB.")
print(result["sparse_embedding"])  # SparseEmbedding(indices=[...], values=[...])
Mix standalone tools and toolsets in a single Agent, and override the tool subset at runtime for a specific invocation.
python
from haystack.components.agents import Agent
from haystack.tools import Tool, Toolset

agent = Agent(
    chat_generator=generator,
    tools=[math_toolset, weather_toolset, calendar_tool],
)
# At runtime, restrict to only the tools needed for this task
response = agent.run(
    messages=[ChatMessage.from_user("What is 42 * 7?")],
    tools=["multiply"],
)
  • Adds FallbackChatGenerator in haystack.components.generators.chat.fallback that tries a list of chat generators sequentially and returns the first successful response, with meta['successful_chat_generator_class'] identifying which provider succeeded — handles timeouts, rate limits, and server errors transparently.
  • Adds conversion_mode='row' parameter to CSVToDocument, with optional content_column; each CSV row becomes a separate Document with remaining columns stored in meta (default 'file' mode preserved).
  • Adds pipeline_snapshot and pipeline_snapshot_file_path parameters to BreakpointException, and pipeline_snapshot_file_path to PipelineRuntimeError, for easier location and inspection of stored pipeline snapshots.
  • Introduces SentenceTransformersSparseTextEmbedder and SentenceTransformersSparseDocumentEmbedder components in haystack.components.embedders for sparse embedding models compatible with Sentence Transformers; output SparseEmbedding objects are compatible with QdrantDocumentStore.
  • Adds warm_up() method to the Tool dataclass and Toolset, automatically called by Agent and ToolInvoker during their warmup phase to support pre-execution initialization such as database connections or model loading.
+6 moreshow less
  • Adds a new RegexTextExtractor component that extracts text from chat messages or string inputs based on a custom regex pattern.
  • Adds tools as a runtime parameter to Agent.run(), allowing callers to supply a subset of tool names or an entirely new set of Tool objects or a Toolset per invocation.
  • Extends the tools parameter on Agent, ToolInvoker, OpenAIChatGenerator, AzureOpenAIChatGenerator, HuggingFaceAPIChatGenerator, and HuggingFaceLocalChatGenerator to accept a mixed list of Tool and Toolset objects in the same list.
  • Enables resuming an Agent from an AgentSnapshot while simultaneously specifying a new breakpoint in the same run call, supporting stepwise debugging with precise control over chat generator and tool inputs.
  • Updates PipelineSnapshot serialization and deserialization to support Python Enum classes.
  • Adds raise_on_failure option to _save_pipeline_snapshot to control whether save failures raise an exception or are only logged.
└──▷ BREAKING ON UPGRADE
  • !Requires openai>=1.99.2 due to use of ChatCompletionMessageCustomToolCall; installations with older OpenAI client versions will break.
Was this useful?

LangChain LangGraph

Sources Release notes → checkpointpostgres==3.0.0 3 RELEASES · 2025-10-20 NOTES STABLE

Build resilient agents.

langgraph-checkpoint-postgres 3.0 adds cursory Python 3.14 support.

└──▷ GET THIS VERSION
$ git clone --branch checkpointpostgres==3.0.0 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:
$ git checkout checkpointpostgres==3.0.0
  • Adds cursory Python 3.14 support, enabling use of the Postgres checkpointer on the latest Python release.
└──▷ BREAKING ON UPGRADE
  • !Python 3.9 is no longer supported; setups running langgraph-checkpoint-postgres on Python 3.9 will break on upgrade.
2 more releases in this issue · 2025-10-20
checkpointsqlite==3.0.0 NOTES STABLE

LangGraph checkpointsqlite 3.0 adds Python 3.14 support and drops Python 3.9.

└──▷ GET THIS VERSION
$ git clone --branch checkpointsqlite==3.0.0 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:
$ git checkout checkpointsqlite==3.0.0
  • Adds cursory Python 3.14 support, keeping the library compatible with the upcoming CPython release.
  • Drops Python 3.9 support; minimum supported Python version is now 3.10 or higher.
└──▷ BREAKING ON UPGRADE
  • !Python 3.9 is no longer supported; running checkpointsqlite on Python 3.9 will break after upgrading to 3.0.0.
checkpoint==3.0.0 NOTES STABLE

LangGraph checkpoint 3.0 drops Python 3.9 and adds cursory Python 3.14 support.

└──▷ GET THIS VERSION
$ git clone --branch checkpoint==3.0.0 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:
$ git checkout checkpoint==3.0.0
  • Adds cursory Python 3.14 support to the checkpointers library.
  • Restricts 'json' type deserialization for tighter serialization safety.
└──▷ BREAKING ON UPGRADE
  • !Python 3.9 is no longer supported; upgrade to Python 3.10 or later before upgrading to checkpoint 3.0.0.
Was this useful?

PydanticAI

Sources Release notes → v1.2.0 NOTES

PydanticAI v1.2.0 adds Claude Haiku 4.5 support and genai-prices-based OpenAI usage extraction.

└──▷ GET THIS VERSION
$ git clone --branch v1.2.0 https://github.com/pydantic/pydantic-ai.git
# already have the repo? check out this version:
$ git checkout v1.2.0
  • Adds Claude Haiku 4.5 as a supported model.
  • Extracts OpenAI usage data via the genai-prices library for more accurate token cost reporting.
  • Includes final_result as an agent span attribute after streaming completes, improving observability in traces.
Was this useful?
◆  AI Coding Agents

SST OpenCode

Sources Release notes → v0.15.9 NOTES

The open source coding agent.

OpenCode v0.15.9 adds Astro language server support with automatic installation for .astro files

└──▷ GET THIS VERSION
$ git clone --branch v0.15.9 https://github.com/sst/opencode.git
# already have the repo? check out this version:
$ git checkout v0.15.9
  • Adds Astro language server support with automatic installation for .astro files
Was this useful?

Google gemini-cli

Sources Release notes → v0.11.0-nightly.20251020.a96f0659 NOTES

An open-source AI agent that brings the power of Gemini directly into your terminal.

gemini-cli v0.11.0-nightly adds model routing, stream-JSON headless output, markdown toggle, todo list tab, and more UI capabilities.

└──▷ GET THIS VERSION
$ git clone --branch v0.11.0-nightly.20251020.a96f0659 https://github.com/google-gemini/gemini-cli.git
# already have the repo? check out this version:
$ git checkout v0.11.0-nightly.20251020.a96f0659
└──▷ TRY IT
Stream structured JSON output line-by-line from a headless gemini-cli invocation for pipeline integration.
$ gemini --output-format stream-json -p "Summarize the CVEs in this advisory: $(cat advisory.txt)"
Inspect MCP servers registered via extensions, now showing the extension name alongside each server.
$ gemini mcp list
Toggle between rendered Markdown and raw model output while reviewing a response in the terminal.
$ # While a response is displayed in gemini-cli, press: Alt+m
  • Enables Model Routing to automatically direct prompts to the best-fit model.
  • Adds --output-format stream-json flag for streaming JSON output in headless/non-interactive mode.
  • Adds alt+m keyboard shortcut to toggle between rendered Markdown and raw text in the terminal.
  • Introduces a dedicated Todo List Tab (TodoTray) in the UI for tracking task lists generated during sessions.
  • Includes the extension name in gemini mcp list command output for clearer MCP server identification.
+5 moreshow less
  • Surfaces ASK_USER policy decision prompts in the UI message bus, enabling interactive permission flows.
  • Allows editing queued messages using the up-arrow key before they are sent.
  • Displays educative tips blended with witty phrases during loading times.
  • Adds 'Esc to close' visual hint across dialogs (Settings, and other closeable dialogs).
  • Suppresses slash command execution and autocomplete suggestions inside shell command input.
└──▷ BREAKING ON UPGRADE
  • !The deprecated --all-files flag has been removed; invocations using it will fail.
  • !Deprecated telemetry flags have been removed; any scripts or configs referencing them will break.
  • !Additional deprecated flags removed in this release will cause failures if still passed on the command line.
  • !Workspace extensions and their migration support have been removed; workspace-scoped extension configurations will no longer work.
  • !The ctrl-t key binding for /mcp commands has been removed.
Was this useful?
Other / Uncategorized
◆  VECTOR DB RAG

Milvus

Sources Release notes → v2.5.19 NOTES

Milvus 2.5.19 adds common.requery.hybridSearchPolicy config and granular flush targets for flushall operations.

└──▷ GET THIS VERSION
$ git clone --branch v2.5.19 https://github.com/milvus-io/milvus.git
# already have the repo? check out this version:
$ git checkout v2.5.19
└──▷ USE IT
Tune how hybrid search requery behaves cluster-wide by setting the policy in your Milvus config.
yaml
common:
  requery:
    hybridSearchPolicy: <policy_value>
  • Adds common.requery.hybridSearchPolicy configuration key to control the requery policy used during hybrid search.
  • Adds support for granular flush targets in the flushall operation, enabling more precise control over which data gets flushed.
  • Ensures accesslog.$consistency_level now reflects the actual consistency level value in use, improving observability of access log entries.
Was this useful?
my-toolchain — 0 tools
paste an install list to detect your tools

A brew list, a Brewfile, requirements.txt, a Dockerfile — or just the product names, free-form. Nothing leaves your browser.

    browse all tools →