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 -154, March 18, 2026

THE AI TOOLCHAIN NO. -154
Tail
THE DAILY RELEASE FIREHOSE
PUBLISHED MARCH 18, 2026 · 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   # 14 tools matched
AI & LLM Tooling
◆  AI Coding Agents

Anthropic Claude Code

Sources Release notes → v2.1.79 NOTES

Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.

Claude Code v2.1.79 adds Console auth, turn-duration display, remote-control bridge, and multi-directory plugin seeds.

└──▷ GET THIS VERSION
$ git clone --branch v2.1.79 https://github.com/anthropics/claude-code.git
# already have the repo? check out this version:
$ git checkout v2.1.79
└──▷ TRY IT
Authenticate with the Anthropic Console (API billing) instead of the default Claude.ai login flow.
$ claude auth login --console
Load plugins from multiple seed directories at once — useful when team-wide and project-local plugins live in separate paths.
$ CLAUDE_CODE_PLUGIN_SEED_DIR=/shared/plugins:/project/.claude/plugins claude
Bridge a running VSCode session to claude.ai/code so you can continue the conversation from a browser or phone.
$ /remote-control
  • Adds --console flag to claude auth login for Anthropic Console (API billing) authentication.
  • Adds 'Show turn duration' toggle to the /config menu to display how long each turn takes.
  • Adds CLAUDE_CODE_PLUGIN_SEED_DIR support for multiple seed directories separated by the platform path delimiter (: on Unix, ; on Windows).
  • [VSCode] Adds /remote-control command to bridge your session to claude.ai/code for continuation from a browser or phone.
  • [VSCode] Session tabs now receive AI-generated titles based on your first message.
Was this useful?

GitHub Copilot CLI

Sources Release notes → v1.0.8 NOTES

GitHub Copilot CLI v1.0.8 adds hook definitions in settings files, MCP registry validation, and flexible --resume by task ID

└──▷ GET THIS VERSION
$ git clone --branch v1.0.8 https://github.com/github/copilot-cli.git
# already have the repo? check out this version:
$ git checkout v1.0.8
└──▷ USE IT
Define repo-level hooks declaratively in a local settings file so they apply automatically on trust confirmation.
json
{
  "hooks": {
    "pre-commit": "npm run lint"
  }
}
  • Adds support for defining hooks in settings.json, settings.local.json, and config.json.
  • Enables validation of MCP servers against configured registries via the experimental MCP_ALLOWLIST feature flag.
  • Extends --resume to accept a task ID in addition to a session ID.
  • Adds an extension mode setting to control extensibility.
  • Alternate screen buffer is now enabled by default for a cleaner terminal experience.
+2 moreshow less
  • Idle subagents are now hidden from the /tasks view after 2 minutes of inactivity, reducing clutter.
  • Ctrl-C in prompt mode now exits immediately instead of waiting for the request to complete.
Was this useful?

Block Goose

Sources Release notes → v1.28.0 NOTES

an open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM

Goose v1.28.0 adds adversarial safety agent, Claude adaptive thinking, MCP Roots, new LLM providers, and ACP filesystem delegation.

└──▷ GET THIS VERSION
$ git clone --branch v1.28.0 https://github.com/block/goose.git
# already have the repo? check out this version:
$ git checkout v1.28.0
  • Adds an adversarial agent that monitors sessions to prevent information leakage and other unsafe behaviors.
  • Supports Claude adaptive thinking, enabling dynamic reasoning depth for Claude models.
  • Introduces a new onboarding flow for first-time setup.
  • Persists GooseMode per-session via the session database so mode selection survives restarts.
  • Propagates session.id to OpenTelemetry spans and log records for end-to-end tracing.
+16 moreshow less
  • Migrates the autovisualiser extension to MCP Apps.
  • Adds ACP session/set_mode handler for programmatic mode switching via ACP.
  • Supports MCP Roots, enabling scoped filesystem access declarations for MCP servers.
  • Loads hint files from nested subdirectories, not just the top-level directory.
  • Adds ACP read tool for delegating filesystem I/O to ACP clients.
  • Adds a summarize tool for deterministic, reproducible file reads.
  • Adds ACP providers for Claude Code and Codex (claude-acp, codex-acp).
  • Captures reasoning summaries from the OpenAI Responses API.
  • Adds MiniMax as a provider via an Anthropic-compatible API.
  • Adds Tensorix as a declarative LLM provider.
  • Supports individually loadable skill files via load() in summon.
  • Adds Avian as an LLM provider.
  • Adds a base path field for custom provider configuration.
  • Improves private channel detection for the Slack bot integration.
  • Enables preferred microphone selection for voice input.
  • Supports secret interpolation in streamable HTTP extension URLs.
Was this useful?

Earendil Works Pi

Sources Release notes → v0.60.0 NOTES

AI agent toolkit: unified LLM API, agent loop, TUI, coding agent CLI

Pi v0.60.0 adds session forking from the CLI and a new createLocalBashOperations() SDK export for custom bash integrations.

└──▷ GET THIS VERSION
$ git clone --branch v0.60.0 https://github.com/earendil-works/pi.git
# already have the repo? check out this version:
$ git checkout v0.60.0
└──▷ TRY IT
Check for and apply available package updates on demand instead of waiting for a startup auto-update.
$ pi update
  • Adds --fork <path|id> flag to fork an existing session file or partial session UUID into a new session in the current project.
  • Adds createLocalBashOperations() export so extensions and SDK callers can wrap pi's built-in local bash backend for user_bash interception and custom bash integrations.
  • Startup no longer auto-updates unpinned npm and git packages; interactive mode now checks for updates in the background and notifies when newer packages are available.
└──▷ BREAKING ON UPGRADE
  • !Installed unpinned packages are no longer checked or updated during startup — use pi update explicitly to apply npm/git package updates.
Was this useful?

Zed

Sources Release notes → v0.228.0 NOTES

Zed v0.228.0 adds agent-assisted merge conflict resolution, branch diff @-mentions, new git actions, and LM Studio provider settings.

└──▷ GET THIS VERSION
$ git clone --branch v0.228.0 https://github.com/zed-industries/zed.git
# already have the repo? check out this version:
$ git checkout v0.228.0
└──▷ USE IT
Configure a local LM Studio instance as an agent provider with a custom endpoint and key.
json
"lm_studio": {
  "api_url": "http://localhost:1234/v1",
  "api_key": "<your-key>"
}
Declare Jupyter kernel language aliases in an extension language config so Zed maps kernels to the right language.
yaml
kernel_language_names:
  - python
  - python3
  - ipython
  • Adds api_url and api_key settings for the LM Studio provider in the agent configuration.
  • Adds kernel_language_names field to extension language configs for declaring Jupyter kernel language aliases.
  • Adds a git: restore and next action that restores the diff hunk at the cursor and conditionally moves to the next hunk; in the git diff view, cmd-alt-z (macOS) / ctrl-k ctrl-r (Linux/Windows) now triggers this action instead of git: restore.
  • Adds Paste as Plain Text to the agent panel message editor right-click menu.
  • Enables ability to @-mention your branch diff in the agent panel to include all changes since main as context.
+5 moreshow less
  • Enables one-click merge conflict resolution via the agent directly from conflict markers.
  • Enables thinking mode when using Anthropic models with Copilot.
  • Adds support for removing and renaming worktrees when connected via SSH.
  • Adds ability to delete a git worktree from the worktree picker using cmd-shift-backspace (macOS) or ctrl-shift-backspace (Linux/Windows).
  • Adds an API for extensions to provide settings schemas, enabling autocompletion for language server settings.
└──▷ BREAKING ON UPGRADE
  • !The deprecated Gemini 3 Pro Preview model is removed; existing configurations automatically migrate to Gemini 3.1 Pro.
  • !The auto_indent setting now supports three explicit modes — syntax_aware, preserve_indent, and none — replacing its previous behavior.
Was this useful?
◆  AI Agent Frameworks

deepset Haystack

Sources Release notes → v2.26.0 NOTES

Haystack v2.26.0 adds LLMRanker, Jinja2 agent system prompts, SUPPORTED_MODELS class variables, and async embedding splitting.

└──▷ GET THIS VERSION
$ git clone --branch v2.26.0 https://github.com/deepset-ai/haystack.git
# already have the repo? check out this version:
$ git checkout v2.26.0
└──▷ USE IT
Rerank retrieved documents semantically using an LLM rather than a cross-encoder, filtering out irrelevant results before stuffing context into a RAG prompt.
python
from haystack import Document
from haystack.components.rankers import LLMRanker

ranker = LLMRanker()
documents = [
    Document(id="paris", content="Paris is the capital of France."),
    Document(id="berlin", content="Berlin is the capital of Germany."),
]
result = ranker.run(query="capital of Germany", documents=documents)
print(result["documents"][0].id)  # "berlin"
Dynamically adapt agent behavior at runtime (e.g. response language) without redefining the prompt for each context.
python
from haystack.components.agents import Agent
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.dataclasses import ChatMessage

agent = Agent(
    chat_generator=OpenAIChatGenerator(),
    tools=[weather_tool],
    system_prompt="""{% message role='system' %}
    You always respond in {{language}}.
    {% endmessage %}""",
    required_variables=["language"],
)
result = agent.run(
    messages=[ChatMessage.from_user("What is the weather in London?")],
    language="Italian",
)
print(result["last_message"].text)
Tune the LLM-facing search tool metadata in a large toolset so a specific model finds tools more reliably.
python
from haystack.tools import SearchableToolset

toolset = SearchableToolset(
    catalog=my_tools,
    search_tool_name="find_tools",
    search_tool_description="Find tools by keyword. Pass 1-3 words, not sentences.",
    search_tool_parameters_description={
        "tool_keywords": "Single words only, e.g. 'hotel booking'.",
    },
)
  • Adds LLMRanker component in haystack.components.rankers that reranks documents using a ChatGenerator and PromptBuilder with JSON-formatted LLM output; supports configurable prompts, optional custom chat generators, runtime top_k overrides, and serialization.
  • Agent system_prompt parameter now accepts Jinja2 message template syntax (e.g. {% message role='system' %}...{% endmessage %}), with runtime variables passed at run time alongside a required_variables init parameter for validation.
  • OpenAIChatGenerator, OpenAIResponsesChatGenerator, and AzureOpenAIResponsesChatGenerator now expose a SUPPORTED_MODELS class variable listing supported model IDs (e.g. gpt-4o, gpt-5-mini).
  • SearchableToolset adds three new optional __init__ parameters — search_tool_name, search_tool_description, and search_tool_parameters_description — to customize the bootstrap search tool's LLM-facing metadata.
  • Adds run_async method to EmbeddingBasedDocumentSplitter enabling async embedding-based document splitting.
+5 moreshow less
  • HuggingFaceAPIDocumentEmbedder.run_async gains a concurrency_limit parameter to control concurrent embedding inference requests, improving async throughput.
  • Components whose input types are a union of lists (e.g. list[str] | list[ChatMessage]) now support multiple input connections in pipelines, extending beyond the previous bare-list and optional-list limitation.
  • The messages runtime parameter to Agent.run is now optional, allowing the agent to execute with only a user_prompt.
  • Pipeline and AsyncPipeline now log a warning identifying misconfigured components when a component returns output keys not declared in its @component.output_types, replacing a previously confusing 'Pipeline Blocked' error.
  • Adds Python 3.14 support to Haystack.
Was this useful?

LangChain

Sources Release notes → langchain-core==1.2.20 NOTES

langchain-core 1.2.20 adds LangSmith integration metadata to agent/model init and hardens anti-SSRF controls.

└──▷ GET THIS VERSION
$ git clone --branch langchain-core==1.2.20 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:
$ git checkout langchain-core==1.2.20
  • Adds LangSmith integration metadata to create_agent and init_chat_model to improve observability tracing for agents and chat models.
  • Hardens anti-SSRF protections in core to reduce server-side request forgery exposure.
  • Documents base_url configuration in the Mermaid API for diagram rendering.
Was this useful?

LangChain LangGraph

Sources Release notes → 1.1.3 NOTES

Build resilient agents.

LangGraph 1.1.3 adds execution info to the runtime context.

└──▷ GET THIS VERSION
$ git clone --branch 1.1.3 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:
$ git checkout 1.1.3
  • Adds execution info to the LangGraph runtime, exposing contextual metadata during graph execution.
Was this useful?

PydanticAI

Sources Release notes → v1.70.0 NOTES

PydanticAI v1.70.0 adds bedrock_inference_profile to Bedrock model and embedding settings.

└──▷ GET THIS VERSION
$ git clone --branch v1.70.0 https://github.com/pydantic/pydantic-ai.git
# already have the repo? check out this version:
$ git checkout v1.70.0
└──▷ USE IT
Route Bedrock LLM calls through a specific inference profile, e.g. a cross-region profile, without changing your agent logic.
python
from pydantic_ai.models.bedrock import BedrockModelSettings

settings = BedrockModelSettings(
    bedrock_inference_profile="us.anthropic.claude-3-5-sonnet-20241022-v2:0"
)

agent = Agent("bedrock:anthropic.claude-3-5-sonnet-20241022-v2:0", model_settings=settings)
  • Adds bedrock_inference_profile field to BedrockModelSettings and BedrockEmbeddingSettings, enabling inference profile selection for AWS Bedrock model and embedding calls.
Was this useful?

holmesgpt

Sources Release notes → 0.22.0 NOTES

SRE Agent - CNCF Sandbox Project

HolmesGPT 0.22.0 adds MongoDB toolset, mTLS for HTTP/Elasticsearch, digest auth, Inspektor Gadget filtering, and GitHub App token management.

└──▷ GET THIS VERSION
$ git clone --branch 0.22.0 https://github.com/HolmesGPT/holmesgpt.git
# already have the repo? check out this version:
$ git checkout 0.22.0
└──▷ TRY IT
Use a separate classifier model by setting the CLASSIFIER_MODEL env var, e.g. when routing classification to a cheaper model via OpenRouter.
$ export CLASSIFIER_MODEL=openrouter/anthropic/claude-3-haiku
holmes ask 'Why is my pod crashlooping?'
  • Adds initContainers and args support to the Helm chart for advanced pod configuration.
  • Adds digest auth and mTLS support to the HTTP toolset, configurable via the HTTP connector config.
  • Adds mTLS (mutual TLS) support to the Elasticsearch toolset.
  • Adds CLASSIFIER_MODEL environment variable support for specifying a separate classifier model (documented alongside OpenRouter requirements).
  • Adds behavior_controls API parameter for prompt customization in the investigation API.
+13 moreshow less
  • Adds tool_results_dir parameter to ToolCallingLLM in the custom LLM interface.
  • Adds a MongoDB toolset for querying and diagnostics.
  • Adds filtering support to the Inspektor Gadget toolset, enabling scoped tool invocations.
  • Adds GitHub App token manager for automatic installation token handling, including MCP config support for GitHub App credentials.
  • Adds datasource-catalog.json for datasource cataloging.
  • Adds keyless auth support for Azure AI Foundry.
  • Adds cached tokens tracking and max_prompt_tokens_per_call tracking to LLM usage/cost reporting.
  • Adds URL query parameter support to tab synchronization in the TUI.
  • Adds Enum field support and MCP config management to the TUI.
  • Adds multi-round approval workflow support with iteration offset.
  • Enables strict tool calling universally with per-tool compatibility checks.
  • Disables unconfigured toolsets by default in the CLI.
  • Removes the automated investigation API, consolidating all investigation flows into the conversational interface.
└──▷ BREAKING ON UPGRADE
  • !The automated investigation API has been removed; all investigation flows must now use the conversational interface.
  • !Unconfigured toolsets are now disabled by default in the CLI — toolsets that were previously active without explicit configuration will no longer run.
  • !Message truncation logic has been removed; context overflow now causes a fast failure instead of silently truncating.
Was this useful?
◆  Local LLM Runtimes

llama.cpp

Sources Release notes → b8416 NOTES

llama.cpp b8416 adds control vector support to Qwen3.5 and Qwen-next models

└──▷ GET THIS VERSION
$ git clone --branch b8416 https://github.com/ggml-org/llama.cpp.git
# already have the repo? check out this version:
$ git checkout b8416
  • Extends control vector (cvec) support to Qwen3.5 and Qwen-next models, plus fills in missing cvec compatibility across the remaining model architectures.
Was this useful?

oobabooga's Text Generation WebUI (textgen)

Sources Release notes → v4.1.1 NOTES

Tool-calling in the UI, incognito chat, OpenAI API spec overhaul, and llama.cpp/ExLlamaV3 capability expansions in v4.1.1

└──▷ GET THIS VERSION
$ git clone --branch v4.1.1 https://github.com/oobabooga/textgen.git
# already have the repo? check out this version:
$ git checkout v4.1.1
└──▷ HOW TO FIND IT
Start the UI and keep a sensitive conversation entirely in RAM — no chat history ever written to disk.
📍In the chat interface, click the 'Incognito chat' button next to the 'New chat' button to open a temporary session that is never saved to disk.
  • Adds tool-calling support in the chat UI: each tool is a single .py file dropped into user_data/tools; five built-in examples ship — web_search, fetch_webpage, calculate, get_datetime, and roll_dice — and each tool call renders as a collapsible accordion during streaming showing the function name, LLM-chosen arguments, and output.
  • Adds reasoning_content field to OpenAI API streaming and non-streaming chat completions, isolating thinking-block content from content (which now carries only the post-thinking reply) even when tool calls are present.
  • Adds tool_choice support and corrects the tool_calls response format in the OpenAI API for strict spec compliance, including returning finish_reason: tool_calls when tool calls are detected.
  • Adds stream_options support with include_usage for streaming responses in the OpenAI API.
  • Adds max_completion_tokens as an alias for max_tokens in the OpenAI API.
+20 moreshow less
  • Adds support for the developer role in the OpenAI API, mapped to system.
  • Makes the /v1/models endpoint show only the currently loaded model.
  • Includes /v1 in the API URL printed to the terminal.
  • Rewrites logprobs support in the OpenAI API for full spec compliance across llama.cpp, ExLlamaV3, and Transformers backends — both streaming and non-streaming responses now return token-by-token logprobs.
  • Sets llama.cpp ctx-size to 0 (auto) by default when --gpu-layers is -1 (the default); on other loaders, 0 maps to 8192.
  • Uses --fit-ctx 8192 to establish 8192 as the minimum acceptable context size for llama.cpp's --fit on mode (previously 4096).
  • Reduces the llama.cpp --fit-target default from 1024 MiB to 512 MiB.
  • Makes logit_bias and logprobs functional in llama.cpp API calls.
  • Adds missing custom_token_bans parameter to the llama.cpp section of the UI.
  • Adds native logit_bias and logprobs support for the ExLlamaV3 backend.
  • Loads the ExLlamaV3 vision model and draft model before the main model so memory auto-splitting accounts for them.
  • Adds 'Incognito chat' button next to the existing 'New chat' button — incognito chats are temporary, live in RAM, and are never written to disk.
  • Introduces a new default sampling preset 'Top-P' (top_p: 0.95); removes the 'Qwen3 - Thinking', 'Qwen3 - No Thinking', 'min_p', and 'Instruct' presets.
  • Removes rope scaling parameters alpha_value, rope_freq_base, and compress_pos_emb from the UI; they can still be passed to llama.cpp via --extra-flags.
  • Increases the ctx-size slider maximum to 1M tokens in the UI (1024-token step).
  • Adds a drag-and-drop UI component for reordering 'Sampler priority' items.
  • Adds security hardening: server-side file save roots, image URL SSRF protection, and an extension allowlist.
  • Replaces html2text with trafilatura for webpage text extraction, reducing navigation-bar boilerplate and lowering token usage in agentic tool-calling loops.
  • Refactors thinking/reasoning extraction into a standalone module supporting Qwen, GPT-OSS, Solar, seed:think, and other formats, and auto-detects when a chat template appends <think> to prepend it to the reply during streaming.
  • Removes the Gradio import in --nowebui mode, saving approximately 0.5–0.8 seconds on startup.
└──▷ BREAKING ON UPGRADE
  • !The alpha_value, rope_freq_base, and compress_pos_emb rope scaling parameters are removed from the UI; pass them to llama.cpp via --extra-flags if still needed.
  • !The 'Qwen3 - Thinking', 'Qwen3 - No Thinking', 'min_p', and 'Instruct' presets are removed; the new default preset is 'Top-P' (top_p: 0.95).
  • !Thinking-block content now goes exclusively into the reasoning_content field; content in chat completions no longer includes thinking-block text, even when tool calls are present.
  • !The /v1/models endpoint now returns only the currently loaded model instead of all available models.
  • !llama.cpp ctx-size now defaults to 0 (auto) when --gpu-layers is -1; setups that relied on the previous default context size will see a different context window.
Was this useful?

vMLX

Sources Release notes → v1.0.7 NOTES

vMLX - JANGTQ Uber Compressed MLX Models - L2 Disk Cache (survives restart) + L1 Paged (super fast ttft) + Hybrid SSM Scheduler + Cont Batching + etc!

vMLX v1.0.7 adds full mflux model support, img2img variation generation, and an Iterate UI for prompt-based image refinement.

└──▷ GET THIS VERSION
$ git clone --branch v1.0.7 https://github.com/jjang-ai/vmlx.git
# already have the repo? check out this version:
$ git checkout v1.0.7
  • Adds support for Klein 4B/9B, Kontext, Fill, Qwen Image, and FIBO mflux models in the model picker with correct class dispatch.
  • Enables img2img variation generation for Generate models via source image and strength parameter.
  • Adds 'Iterate' UI action on any generated image to create variations with modified prompts.
  • Persists settings — steps, size, guidance, strength, and negative prompt — across restarts.
  • Adds 'Code tab' placeholder (marked Coming Soon) to the UI.
Was this useful?
Other / Uncategorized
◆  AI OBSERVABILITY

Arize Phoenix

Sources Release notes → arize-phoenix-client-v2.1.0 NOTES

Phoenix client v2.1.0 adds span filter parameters to the getSpans method.

└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-client-v2.1.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:
$ git checkout arize-phoenix-client-v2.1.0
  • Adds span filter params to getSpans, enabling callers to narrow span queries server-side.
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 →