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 -016, August 3, 2026

THE AI TOOLCHAIN NO. -016
Tail
THE DAILY RELEASE FIREHOSE
PUBLISHED AUGUST 3, 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   # 8 tools matched
AI & LLM Tooling
◆  AI Agent Frameworks

Stanford NLP DSPy

Sources Release notes → 3.3.0 NOTES

DSPy 3.3.0 adds Flex structure-optimizing programs, ReActV2 with native tool calling, and a typed provider-neutral LM boundary.

└──▷ GET THIS VERSION
$ git clone --branch 3.3.0 https://github.com/stanfordnlp/dspy.git
# already have the repo? check out this version:
$ git checkout 3.3.0
└──▷ USE IT
Let GEPA discover the full program structure — not just prompts — for a QA task, then inspect and save the generated implementation.
python
import dspy

program = dspy.Flex("question -> answer")
optimized = dspy.GEPA(metric=metric, reflection_lm=reflection_lm).compile(
    program,
    trainset=trainset,
    valset=valset,
)

print(optimized.module_src)
optimized.save("flex_qa.json")
Catch LM errors in a provider-neutral way instead of depending on provider-specific exception classes.
python
import dspy

try:
    result = lm(messages=[{"role": "user", "content": "Hello"}])
except dspy.LMError as e:
    print(f"LM call failed: {e}")
  • Adds dspy.Flex, an experimental module that places program structure — predictors, control flow, DSPy primitives, and Python/LM balance — into the GEPA search space so the optimizer discovers decomposition instead of only tuning prompts; defaults to a single dspy.Predict baseline, or dspy.RLM when tools are supplied.
  • Adds max_predictor_calls guard on Flex-generated programs to prevent runaway LM usage in optimizer-authored code, and supports a program_trace argument to metrics so programs can be scored on how a result was produced (e.g. penalizing excessive LM calls).
  • Persists optimizer-discovered module_src as part of a Flex program's serialized state, so dump_state() / load_state() round-trips preserve the GEPA-authored implementation.
  • Adds dspy.ReActV2, an experimental ReAct implementation built on native tool calling, using dspy.History, dspy.Tool, and dspy.ToolCalls (which can optionally store dspy.ToolCallResults) instead of custom next_tool_args / trajectory syntax.
  • Adds parallel_tool_calls support to dspy.ReActV2, preserving each call/result pair by ID in both native and non-native mode.
+12 moreshow less
  • Adds multi-turn native tool call support to dspy.ReActV2: prior tool calls and results are replayed as structured assistant and tool messages rather than being flattened into prompt text, enabling prompt-caching reuse of stable prefixes (observed up to 50% cost reduction in internal testing).
  • Introduces a typed, provider-neutral LM contract — def forward(self, request: dspy.LMRequest) -> dspy.LMResponse — that custom LM authors can implement instead of guessing at OpenAI/LiteLLM-shaped inputs; opt in with dspy.context(experimental=True).
  • Exports the typed LM API (dspy.LMRequest, dspy.LMResponse, dspy.LMToolCallPart) and supports typed direct calls through BaseLM.__call__.
  • Adds dspy.LMError (and narrower DSPy subclasses) as a provider-neutral exception type, replacing the need to catch provider-specific exception classes.
  • Adds BaseLM.dump_state() and BaseLM.load_state() for sanitized LM state serialization that excludes API keys, preserves legacy saved states, and requires explicit opt-in before importing trusted custom LM classes.
  • Makes LiteLLM imports lazy, decoupling the core LM API from a specific provider bridge at import time.
  • Makes optional-provider imports thread-safe.
  • Adds explicit factory methods Image.from_path(), Image.from_url(), Audio.from_path(), Audio.from_url(), File.from_path() as the new required API for resource loading, replacing implicit I/O on construction.
  • OpenAI Responses API path now emits Responses-native tool and tool_choice request shapes, with legacy Responses outputs using the same Chat-style tool-call representation as the Chat Completions path.
  • Makes numpy an optional install extra (pip install 'dspy[numpy]'), reducing the base install footprint; affected features include embeddings, KNN/KNNFewShot, SIMBA, and other NumPy-backed optimizer or retrieval paths.
  • Updates DspyGEPAResult to mirror gepa[dspy]==0.1.1 result shapes, making candidates and best_candidate return compiled DSPy modules; val_subscores, per_val_instance_best_candidates, best_outputs_valset, and highest_score_achieved_per_val_task all have updated types keyed by validation instance id.
  • Replaces reflection_prompt_template in dspy.GEPA gepa_kwargs with an instruction_proposer parameter for custom proposal behavior (passing reflection_prompt_template now raises a clear ValueError).
└──▷ BREAKING ON UPGRADE
  • !Constructing dspy.Image, dspy.Audio, or dspy.File from a path or URL no longer reads or fetches the resource implicitly; use Image.from_path(), Image.from_url(), Audio.from_path(), Audio.from_url(), or File.from_path() instead.
  • !Image.from_url(..., download=...) and the download_images / verify options on encode_image() were removed; use an explicit factory or reference constructor instead.
  • !encode_image(path), encode_audio(path_or_url), and encode_file_to_dict(path) are replaced by Image.from_path(), Audio.from_path() / Audio.from_url(), and File.from_path() respectively.
  • !Image.from_file(), Image.from_PIL(), and Audio.from_file() are deprecated aliases scheduled for removal in 3.4; use Image.from_path(), Image(pil_image), and Audio.from_path() respectively.
  • !numpy is no longer installed with base dspy; code using embeddings, KNN/KNNFewShot, SIMBA, or other NumPy-backed paths will break unless pip install 'dspy[numpy]' is added.
  • !DspyGEPAResult.candidates now returns a list of compiled DSPy modules instead of instruction dictionaries, and DspyGEPAResult.best_candidate now returns a compiled DSPy module; code inspecting optimized_program.detailed_results must be updated.
  • !DspyGEPAResult fields val_subscores, per_val_instance_best_candidates, best_outputs_valset, and highest_score_achieved_per_val_task have new types keyed by validation instance id.
  • !GEPA 0.1.1 renamed default reflection template placeholders from <curr_instructions> / <inputs_outputs_feedback> to <curr_param> / <side_info>; custom templates using the old names must be updated.
  • !Passing reflection_prompt_template through gepa_kwargs in dspy.GEPA now raises a ValueError; use instruction_proposer instead.
  • !RLM.max_iterations is renamed to RLM.max_iters; code constructing dspy.RLM(max_iterations=...) will break.
Was this useful?

Nous Research Hermes

Sources Release notes → v2026.8.3 NOTES

The agent that grows with you

Hermes v2026.8.3 adds conversational voice with barge-in, A2A v1.0, signed webhooks, grounded citations, a plugin SDK, and a CLI power-user wave.

└──▷ GET THIS VERSION
$ git clone --branch v2026.8.3 https://github.com/NousResearch/hermes-agent.git
# already have the repo? check out this version:
$ git checkout v2026.8.3
└──▷ TRY IT
Quickly run a shell command from within a Hermes CLI session without consuming a model turn — useful for checking git status or running a test mid-conversation.
$ !git status
Bootstrap an AGENTS.md for a new project so Hermes understands the repo layout before starting autonomous work.
$ hermes /init
Migrate an existing Claude Code or Codex CLI configuration into Hermes in a single step.
$ hermes import-agent
  • Adds !command shell-escape mode to run a shell command from the CLI instantly without spending a model turn.
  • Adds /init CLI command to scan a project and generate or update an AGENTS.md file.
  • Adds /diff CLI command to show staged, all, or session-level changes from any surface.
  • Adds /context CLI command to break down exactly what is filling the current context window.
  • Adds /focus CLI command for a reduced-output view with hidden-line recovery.
+19 moreshow less
  • Adds hermes import-agent command to migrate a Claude Code or Codex CLI setup into Hermes in one command.
  • Adds hermes approvals suggest command to mine approval history and produce allowlist proposals.
  • Raises the default tool-calling iteration limit from 90 to 500, removing an artificial ceiling on long autonomous runs.
  • Introduces the grounded-citations skill, which matches quotes against actual page text, links citations to exact evidence, and includes a fact-checking mode for any document or claim.
  • Adds signed outbound webhooks that push HMAC-signed lifecycle events (session activity, turn completions, tool events) to any registered HTTP endpoint — no polling required.
  • Adds a bundled Agent-to-Agent (A2A v1.0) plugin so Hermes can discover, talk to, and be driven by other A2A-compatible agents.
  • Adds streaming conversational voice with clause-by-clause TTS, barge-in interruption, and busy-aware silence detection across the CLI, desktop, and gateway adapters.
  • Adds on-device open-vocabulary wake-word detection with multi-profile voice routing and a 'stop' keyword to end voice chat hands-free.
  • Extends voice support to WhatsApp, Feishu, DingTalk, LINE, QQ, Photon, and Weixin — incoming voice notes are transcribed and auto-TTS replies are delivered platform-aware (opus, captions).
  • Adds hermes tools category for STT configuration, GUI toggles, dashboard dropdowns, unified language resolution, and OpenAI gpt-transcribe support.
  • Adds a unified spoken-text preprocessor that strips markdown, code, and URLs from speech across all TTS providers.
  • Adds desktop artifacts: versioned cards with sandboxed live-preview in a right-rail viewer so generated HTML/apps run safely next to chat.
  • Ships a plugin SDK with ctx.download for file delivery, floating pane placement, and multiple GUI windows; Kanban ships as the founding plugin.
  • Adds a global-hotkey quick-entry window to capture input into any session from anywhere in the OS.
  • Adds mid-turn redirect capability — type a correction while the agent is working and the active turn course-corrects while preserving work in flight and the original prompt.
  • Makes compression thresholds configurable per-model and in absolute tokens, and adds a guaranteed N-user-message tail so recent conversation always survives pruning.
  • Adds a consecutive-denial circuit breaker in smart approvals to stop a misbehaving approval loop.
  • Adds a new approval gate for docker/podman daemon-redirect commands.
  • Reduces hermes -w cold-start time from ~14 s to ~1.8 s and makes hermes update no-ops 2–6 s faster through lazy SDK loading and config-read optimizations.
Was this useful?
◆  AI Coding Agents

GitHub Copilot CLI

Sources Release notes → v1.0.78 NOTES

GitHub Copilot CLI v1.0.78 adds /new-worktree and /permissions commands, ACP token usage exposure, and a new allowDevToolCaches sandbox setting.

└──▷ GET THIS VERSION
$ git clone --branch v1.0.78 https://github.com/github/copilot-cli.git
# already have the repo? check out this version:
$ git checkout v1.0.78
└──▷ TRY IT
Start a parallel investigation in an isolated worktree without disturbing your current working tree or conversation.
$ /new-worktree
Switch approval modes on the fly mid-session instead of restarting the CLI.
$ /permissions
  • Adds /new-worktree (experimental) command to create a new git worktree and start a fresh conversation inside it.
  • Adds /permissions command to switch between approval modes mid-session.
  • Adds allowDevToolCaches sandbox setting (on by default) to grant sandboxed builds access to toolchain caches, registries, and installs; set to false to opt out.
  • Adds forceRemoteSettingsRefresh managed setting to require a fresh managed-settings fetch on every startup.
  • Adds /settings showToolDurations to control display of per-tool-call elapsed time in timeline headers (on by default, live-ticking for calls of at least 5 seconds).
+14 moreshow less
  • Exposes token usage in ACP prompt results and live usage_update notifications.
  • ACP mode now supports closing sessions via the closeSession request.
  • Managed settings now fall back to the persistent cache on any fetch failure (network error, non-success HTTP status, or malformed response), and fail open when no usable cached policy is available.
  • Startup now warns about unknown top-level keys in user settings.json (e.g. misspelled settings) instead of silently ignoring them.
  • Shell completion for --model now suggests auto and all supported model names.
  • The sessionEnd hook for stdin-piped runs now fires once per completed agent turn with reason complete (or error), matching -p behavior, instead of firing once at shutdown with user_exit.
  • Switching sessions no longer restarts MCP servers or rebuilds hook state, preventing stale-hook errors in concurrent turns.
  • Refreshes deferred MCP tools automatically after OAuth authentication.
  • Sandbox bypass from a bypass prompt now applies only to the current session; new sessions start sandboxed again.
  • When the sandbox blocks a shell command and bypass is allowed, CLI offers to re-run it outside the sandbox without re-querying the model.
  • First-party plugins automatically update to their latest version at session start.
  • Resuming long sessions is dramatically faster and memory-lighter: a 230 MB, 74k-event transcript now loads in under a second (vs. ~10 seconds previously) at roughly one-quarter peak memory, by reading history once in parallel at startup.
  • Long session transcripts now render progressively to keep scrolling responsive.
  • Copilot login now defaults to the browser flow for local desktop subprocesses without a TTY (including IDE integrations); remote and headless environments continue using device code.
└──▷ BREAKING ON UPGRADE
  • !The /allow-all auto safety-judge model is no longer user-configurable; the judge model is now selected automatically.
  • !Managed settings now fail open — starting without the unconfirmed server restriction — when no usable cached policy is available, reversing the prior fail-closed behavior.
Was this useful?

All Hands AI OpenHands

Sources Release notes → v1.9.0 2 RELEASES · 2026-08-03 NOTES STABLE

OpenHands: AI-Driven Development

OpenHands v1.9.0 adds live agent activity in chat, a streamlined backend chooser, and an extension-manifest host.

└──▷ GET THIS VERSION
$ git clone --branch v1.9.0 https://github.com/All-Hands-AI/OpenHands.git
# already have the repo? check out this version:
$ git checkout v1.9.0
  • Adds a compact Cloud vs Agent-server add-backend chooser to streamline switching between backend types.
  • Shows live agent activity directly in the chat UI so users can follow along in real time.
  • Introduces a domain-neutral extension-manifest host to support broader extension compatibility.
1 more release in this issue · 2026-08-03
v1.9.0 NOTES STABLE

OpenHands v1.9.0 adds live agent activity in chat, a compact backend chooser, and an extension-manifest host.

└──▷ GET THIS VERSION
$ git clone --branch v1.9.0 https://github.com/OpenHands/OpenHands.git
# already have the repo? check out this version:
$ git checkout v1.9.0
  • Shows live agent activity streamed directly in the chat view so users can follow what the agent is doing in real time.
  • Adds a compact Cloud vs Agent-server backend chooser UI to the backends settings, making it faster to switch between hosting modes.
  • Introduces a domain-neutral extension-manifest host to support loading extensions independently of the deployment domain.
  • Drives the automation UI from the interface manifest, enabling manifest-controlled automation flows.
Was this useful?

Alibaba Qwen Code

Sources Release notes → v0.21.4 NOTES

Qwen Code v0.21.4 adds new review/drive commands, configurable memory agents, session workflow toggles, and a desktop Web Shell.

└──▷ GET THIS VERSION
$ git clone --branch v0.21.4 https://github.com/QwenLM/qwen-code.git
# already have the repo? check out this version:
$ git checkout v0.21.4
└──▷ USE IT
Limit memory agents to a fixed number of turns to cap runaway agent loops in large repos.
yaml
# In your Qwen Code config
memory:
  agentMaxTurns: 20
Enable Plan & Review mode and the Workflow DAG for session-level orchestration of multi-step tasks.
yaml
# In your Qwen Code config
experimental:
  sessionWorkflow: true
Poll for review service readiness and verify facts without relying on fixed sleep delays in CI.
$ qwen review drive
  • Adds experimental.sessionWorkflow setting to optionally enable Session Workflow features including Plan & Review mode and the Workflow DAG.
  • Adds memory.agentMaxTurns setting to configure turn limits for all managed memory agents; set to 0 to disable the limit entirely.
  • Adds qwen review drive command to poll for service readiness and verify completion facts instead of relying on fixed sleep delays.
  • Adds qwen review mock-provider command to record OpenAI-compatible requests as JSONL for testing against a faithful outside-world simulation.
  • Adds qwen review publish-assets command to host evidence images in a user-designated repository for embedding in PR review comments.
+9 moreshow less
  • The /summary command now accepts an optional path argument to save project summaries to custom locations, automatically creating parent directories as needed.
  • Sub-session concurrency caps are now configurable via the serve surface.
  • Web Shell is now packaged as a release-ready desktop app with native lifecycle management, single-instance behavior, and automatic updates.
  • Enables full Web Shell management for GitHub and GitLab channels, allowing users to configure tokens and policies without editing settings files.
  • Adds a built-in Java/JVM performance checklist to the review tool that flags correctness traps and JVM-cost defects in Java files.
  • Adds a repo-hygiene skill and weekly workflow to automatically scan for and propose fixes for documentation and code quality issues.
  • PR review timeout now scales with change size, allowing up to 240 minutes for large pull requests exceeding 300 lines.
  • Non-interactive CLI /goal commands now use the Goal v3 runtime for consistent state persistence and improved streaming behavior.
  • The review verifier now treats unverified findings as low-confidence confirmations rather than rejections, instructing it to check cited sources first.
Was this useful?
◆  Local LLM Runtimes

llama.cpp

Sources Release notes → b10242 3 RELEASES · 2026-08-03 NOTES STABLE

llama.cpp b10242 adds GPU-accelerated CUDA backend sampler for penalty handling including frequency, presence, and top-k penalties.

└──▷ GET THIS VERSION
$ git clone --branch b10242 https://github.com/ggml-org/llama.cpp.git
# already have the repo? check out this version:
$ git checkout b10242
  • Adds CUDA backend sampler for llama_sampler_penalties, offloading frequency, presence, and repeat penalty computation to GPU via the llama_sampler_backend infrastructure.
  • Adds llama_n_ctx parameter to common_sampler_init so penalty_last_n defaults to the model context length when not explicitly set.
  • Adds support for top-k penalties in backend sampling, with configurable positions in the sampler chain.
  • Adds vocabulary-sized count tensor to replace the per-candidate penalty comparison matrix, improving scalability for large history windows.
  • Adds validation that repeat penalty is finite and greater than 0, and preserves masked logits as -Inf to eliminate NaN generation.
└──▷ BREAKING ON UPGRADE
  • !The signature of common_sampler_init now requires an additional llama_n_ctx parameter; callers that do not pass it will fail to compile.
2 more releases in this issue · 2026-08-03
b10238 NOTES STABLE

llama.cpp b10238 adds Multi-Token Prediction (MTP) support for Qwen3-Next models.

└──▷ GET THIS VERSION
$ git clone --branch b10238 https://github.com/ggml-org/llama.cpp.git
# already have the repo? check out this version:
$ git checkout b10238
  • Adds Multi-Token Prediction (MTP) support for Qwen3-Next, including load_mtp flags and opt_num_mtp_layers defined in the model mixin.
b10237 NOTES STABLE

llama.cpp b10237 adds Multi-Token Prediction (MTP) support for DeepSeek V3.2 models.

└──▷ GET THIS VERSION
$ git clone --branch b10237 https://github.com/ggml-org/llama.cpp.git
# already have the repo? check out this version:
$ git checkout b10237
  • Adds Multi-Token Prediction (MTP) support for DeepSeek V3.2, enabling faster speculative decoding with that model family.
Was this useful?
Other / Uncategorized
◆  AI OBSERVABILITY

Arize Phoenix

Sources Release notes → arize-phoenix-v19.14.0 NOTES

Phoenix v19.14.0 adds a built-in hallucination evaluator to the evals library.

└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v19.14.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:
$ git checkout arize-phoenix-v19.14.0
  • Adds a hallucination evaluator to the evals module for detecting hallucinated content in LLM outputs.
Was this useful?

Langfuse

Sources Release notes → v4.3.0 NOTES

Langfuse v4.3.0 exposes semantic roots in the v2 API and adds media size display in trace previews.

└──▷ GET THIS VERSION
$ git clone --branch v4.3.0 https://github.com/langfuse/langfuse.git
# already have the repo? check out this version:
$ git checkout v4.3.0
  • Exposes semantic roots via the v2 API, enabling richer trace hierarchy data for downstream consumers.
  • Shows media size in the trace/generation preview UI, giving practitioners visibility into payload footprint at a glance.
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 →