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.
Aider v0.43.0 adds in-chat help, multi-undo, and standardized config file loading from multiple paths.
└──▷ GET THIS VERSION
$ git clone --branch v0.43.0 https://github.com/Aider-AI/aider.git
# already have the repo? check out this version:$ git checkout v0.43.0
└──▷ TRY IT
Get contextual help on configuring a setting or troubleshooting an issue without leaving the chat session.
$ /help How do I set a custom model settings file?
›Adds /help <question> command to ask questions about usage, settings, troubleshooting, and LLM configuration directly inside the chat session.
›Default --model-settings-file path is now .aider.model.settings.yml.
›Default --model-metadata-file path is now .aider.model.metadata.json.
›All config, env, YAML, and JSON files now load from home directory, git root, current working directory, and a named command-line switch — enabling layered configuration.
›Introduces $HOME/.aider/caches as a new directory for app-wide expendable caches.
+1 moreshow less
›Allows multiple sequential uses of /undo to step back through multiple changes.
└──▷ BREAKING ON UPGRADE
!The default value of --model-settings-file is now .aider.model.settings.yml; setups relying on a previous default path will no longer load automatically.
!The default value of --model-metadata-file is now .aider.model.metadata.json; setups relying on a previous default path will no longer load automatically.
Continue v0.0.53 for JetBrains adds .prompt file support and a new onboarding experience.
└──▷ GET THIS VERSION
$ git clone --branch v0.0.53-jetbrains https://github.com/continuedev/continue.git
# already have the repo? check out this version:$ git checkout v0.0.53-jetbrains
›Supports .prompt files for defining reusable prompt templates.
›Introduces a new onboarding experience for first-time setup.
OpenHands 0.8.2 adds headless controller mode and SWE-Bench custom Docker namespace support for eval workflows.
└──▷ GET THIS VERSION
$ git clone --branch 0.8.2 https://github.com/All-Hands-AI/OpenHands.git
# already have the repo? check out this version:$ git checkout 0.8.2
›Adds headless_mode for the Controller, enabling programmatic agent runs without a UI session.
›Supports pulling SWE-Bench evaluation environments from a custom Docker namespace.
›Shrinks the runtime image size, reducing pull times and storage overhead.
└──▷ BREAKING ON UPGRADE
!The Monologue agent has been removed and is no longer available as an agent type.
!Global config has been removed from the sandbox, agent controller, and related components — configurations previously set globally must now be passed explicitly.
2 more releases in this issue
· 2024-07-05 → 2024-07-27
›Adds {"restore_on_startup": "last_workspace"} setting to revert to the previous single-workspace restore behavior; new default restores all windows open at quit.
›Adds {"session": {"restore_unsaved_buffers": false}} setting to control automatic restoration of unsaved buffers across sessions (requires a project to be open).
›Adds "command_aliases" setting to define abbreviated command names.
›Extends task templates with shell and hide fields for specifying custom shells and close behavior.
›Allows format and format_on_save to accept an array of formatting actions; language_server formatter option now accepts a named language server (e.g. {"language_server": {"name": "ruff"}}).
+11 moreshow less
›Adds custom inline assist keybindings that pre-fill a prompt via the assistant::InlineAssist action with a prompt parameter in keymap.json.
›Built-in REPL now available, supporting line-by-line, block-by-block (# %%), and arbitrary-selection code execution.
›Adds Ruff extension for fast Python linting and formatting via a language server integration, configurable under "languages": {"Python": {"language_servers": ["pyright", "ruff"]}}.
›Adds support for quickly switching between multiple language model providers in the assistant panel.
›Adds support for gpt-4o-mini as a language model option.
›Adds ability to automatically generate or manually edit summaries for assistant conversations.
›Adds Copy, Paste, Select All, and New Terminal to the terminal context menu.
›Adds a button to copy the SHA from a Git blame entry.
›Adds ability to sign out of a Supermaven account.
›Vim: Y now yanks to end of line (matching Neovim behavior).
›Vim: adds support for count and object motion in the toggle comments action.
4 more releases in this issue
· 2024-07-03 → 2024-07-31
Zed v0.145.1 ships Remote Development over SSH, a /symbols assistant command, gpt-4o-mini support, and file-icon tabs.
└──▷ GET THIS VERSION
$ git clone --branch v0.145.1 https://github.com/zed-industries/zed.git
# already have the repo? check out this version:$ git checkout v0.145.1
└──▷ USE IT
Show file icons on editor tabs to quickly distinguish file types at a glance.
json
{ "tabs": { "file_icons": true } }
Disable function signature popovers if they clutter your editing flow.
json
{ "show_signature_help_after_completion": false }
Use Zed's built-in keyboard-driven file picker on Linux instead of the system XDG dialog.
json
{ "use_system_path_prompts": false }
›Adds "show_signature_help_after_completion": false to settings.json to disable the new function signature popovers.
›Adds "tabs": { "file_icons": true } to settings.json to show file icons on buffer tabs.
›Adds use_system_path_prompts setting (default true) to settings.json; set to false to use Zed's built-in keyboard-driven file prompts instead of XDG/system pickers.
›Adds /symbols slash command in the assistant panel, which automatically inserts the active file's symbols into the assistant context.
›Launches Remote Development (alpha) for all users — edit files or run commands on a remote server over SSH, with collaboration support.
+17 moreshow less
›Adds support for gpt-4o-mini as an assistant model.
›CLI: Adds ability to open URIs (including zed:// channel URIs) directly from the command line.
›Linux: Adds zed.dev/channel (zed://) URI support on Linux.
›Adds :bd, :bn, and :bp buffer navigation commands in Vim mode.
›Adds - and + Vim motions to jump to the beginning of the line above/below.
›Maps ctrl-m to enter in the editor in Vim mode.
›Adds support for following the cursor into the assistant panel during collaboration.
›Adds runnable tasks for Flutter (including Flutter tasks in the Dart extension).
›Adds support for pyright workspace configuration.
›Sets TERM_PROGRAM and TERM_PROGRAM_VERSION environment variables in the integrated terminal.
›Adds toggle hunk diff and expand-all hunk diffs key bindings.
›Adds default content for the user's keymap.json file.
›Remote Development: Allows adding and removing folders from remote projects.
›Adds ability to select and copy text from information popovers.
›Adds banners for built-in Zed features when matching keywords are used in the extension search.
›Linux: Adds a fallback Open file picker when XDG is not working.
›Linux: Adds a representation of the current focus state to Zed's window style.
└──▷ BREAKING ON UPGRADE
!Vim: The built-in binding of - to open the project panel has been removed. Re-add it manually to your keymap file with: {"context":"VimControl", "bindings":{ "-": "pane::RevealInProjectPanel"}}.
!Vim: Keymap contexts have been restructured — bindings that rely on VimWaiting or VimOperator being true may break and must be updated per the docs at https://zed.dev/docs/vim#custom-key-bindings.
Zed v0.144.3 adds native snippet support for all buffers, outline panel filtering, and tailwindcss-language-server classAttributes config.
└──▷ GET THIS VERSION
$ git clone --branch v0.144.3 https://github.com/zed-industries/zed.git
# already have the repo? check out this version:$ git checkout v0.144.3
└──▷ USE IT
Configure Tailwind to recognize custom class attributes (e.g. in Angular or CSS Modules projects) so the language server provides completions in those attributes.
›Adds classAttributes key under lsp.tailwindcss-language-server.settings in Zed config, letting you declare which attributes Tailwind scans (e.g. class, className, ngClass, styles).
›Extensions can now ship snippets by including a snippets.json file alongside the extension manifest.
›Moves snippet support into the core editor so snippets work in any buffer, including plain text — deprecates the separate snippet extension.
›Adds filtering support in the outline panel.
›Adds dynamic registration and unregistration of LSP formatting capabilities.
Zed lands on Linux with macro support, new AI action, IBM Plex fonts, and updated keybindings
└──▷ GET THIS VERSION
$ git clone --branch v0.143.6 https://github.com/zed-industries/zed.git
# already have the repo? check out this version:$ git checkout v0.143.6
›Adds assistant: insert into editor action (keybinding: cmd-< on macOS, ctrl-< on Linux) to insert AI output directly into the editor.
›Adds keyboard shortcuts for scrolling in the terminal.
›Changes default key binding for page-down to move the cursor via editor::MovePageDown; previous scroll-only behavior (editor::PageDown) is now bound to cmd-pagedown on macOS and alt-pagedown on Linux.
›Adds shift shift as a default binding to open the command palette in the JetBrains keymap.
›Adds duplicate-line shortcut to the Sublime Text keymap.
+10 moreshow less
›Adds vim bindings for the outline panel.
›Adds vim macro support: record with q and replay with @.
›Changes default fonts to IBM Plex Sans and IBM Plex Mono (previous Zed Sans/Zed Mono fonts require manual download and install).
›Defaults to a light theme during the day.
›Adds recognition of *.markdown files as Markdown.
›Adds updated window controls on Linux.
›First official stable release of Zed on Linux.
›Improves power consumption on Intel Macs by preferring integrated GPUs over discrete GPUs.
›Improves editor performance with large undo histories.
›Improves performance of 'replace all' in buffer search and project search.
└──▷ BREAKING ON UPGRADE
!editor::RevealInFinder is renamed to editor::RevealInFileManager; any keybindings or config referencing the old name will stop working.
Zed v0.142.4 adds Claude 3.5 Sonnet support, customizable OpenAI-compatible models, and new editor settings including scroll_beyond_last_line and gutter.runnables.
└──▷ GET THIS VERSION
$ git clone --branch v0.142.4 https://github.com/zed-industries/zed.git
# already have the repo? check out this version:$ git checkout v0.142.4
└──▷ USE IT
Configure Zed's assistant to use Claude 3.5 Sonnet via Anthropic for AI-assisted coding.
›Adds Claude 3.5 Sonnet (claude-3-5-sonnet) as a supported model via the assistant config block with "name": "anthropic" and "default_model": "claude-3-5-sonnet".
›Adds scroll_beyond_last_line setting to control whether the editor scrolls past the final line.
›Adds gutter.runnables setting to control whether runnable indicators are displayed in the gutter.
›Adds active_line_width setting to configure the line width of the active indent guide.
›Adds ability to customize available models for OpenAI-compatible services.
+10 moreshow less
›Adds editor: select enclosing symbol command (tree-sitter-based), useful with inline assist to rewrite a function.
›Adds workspace: clear all notifications command to dismiss all notifications.
›Adds mouse context action to copy a permalink to a specific line.
›Adds package version tooltips when hovering over package.json dependency entries.
›Adds vertical scrollbar to the project panel.
›Adds ability to remove multi-cursors by clicking on them again.
›Adds ability to bind shift or other modifier keys in keybindings.
›Adds Vim auto_surround support.
›Adds action to surround text in Vim visual mode (no default binding).
›Adds Markdown Preview shortcut for the Atom keymap.
Framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.
$ git clone --branch v0.41.0 https://github.com/crewAIInc/crewAI.git
# already have the repo? check out this version:$ git checkout v0.41.0
└──▷ USE IT
Enable pre-execution planning so your crew deliberates a strategy before assigning tasks — useful for complex, multi-step investigations.
python
from crewai import Crew
crew = Crew(
agents=[...],
tasks=[...],
planning=True
)
result = crew.kickoff()
Replay from a specific failed task after a partial run, without restarting the entire crew from scratch.
$ crewai replay <task_id>
Clear stale crew memory before re-running to ensure the crew starts fresh without prior context contaminating results.
$ crewai reset-memory
›Adds planning=True to Crew instances so crews reason through a plan before executing tasks.
›Introduces a CLI replay feature to list tasks from the last run and re-execute from a specific task.
›Enables resetting crew memory before a run via a new reset-memory capability.
›Adds LLM call retry support so a failed LLM call no longer halts crew execution.
›All crews and tasks now return typed CrewOutput and TaskOutput objects instead of raw strings.
+3 moreshow less
›Adds ability to customize the output converter on agents/tasks.
›Enhances tools with type hinting and new attributes.
›Adds MultiON Tool integration.
└──▷ BREAKING ON UPGRADE
!All crews and tasks now return TaskOutput and CrewOutput objects instead of plain strings — code that treats crew/task return values as strings will break.
1 more release in this issue
· 2024-07-06 → 2024-07-19
DSPy v2.4.12 lets you compile dspy.Predict and dspy.ChainOfThought directly and improves Chat LM adapter support.
└──▷ GET THIS VERSION
$ git clone --branch v2.4.12 https://github.com/stanfordnlp/dspy.git
# already have the repo? check out this version:$ git checkout v2.4.12
›Supports compiling dspy.Predict and dspy.ChainOfThought directly as Modules without wrapping them in a dspy.Module object.
›Improves the experimental=True Chat LM adapter support (enabled via dspy.configure(experimental=True)) introduced in v2.4.11, refining zero-shot generation quality for Chat LMs including GPT-3.5, GPT-4, Llama3, Mixtral, and DBRX.
DSPy v2.4.11 adds experimental adapter support for smoother Chat LM zero-shot generation via dspy.configure(experimental=True)
└──▷ GET THIS VERSION
$ git clone --branch v2.4.11 https://github.com/stanfordnlp/dspy.git
# already have the repo? check out this version:$ git checkout v2.4.11
└──▷ USE IT
Activate the new Chat LM adapters to get more predictable zero-shot outputs without changing your existing DSPy program logic.
python
import dspy
dspy.configure(experimental=True)
›Enables dspy.configure(experimental=True) to activate new adapter support, improving zero-shot generation predictability and accuracy for Chat LMs including GPT-3.5, GPT-4, Llama3, Mixtral, and DBRX.
›Adds initial support for new adapters with improved handling of Chat LM interactions.
Haystack v2.3.0 adds experimental package, five new components, and distribution-based rank fusion
└──▷ GET THIS VERSION
$ git clone --branch v2.3.0 https://github.com/deepset-ai/haystack.git
# already have the repo? check out this version:$ git checkout v2.3.0
└──▷ USE IT
Share a single in-memory document store between a writer pipeline and a retrieval pipeline without duplicating data.
python
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.dataclasses import Document
index = "shared_knowledge_base"
store_writer = InMemoryDocumentStore(index=index)
store_retriever = InMemoryDocumentStore(index=index)
store_writer.write_documents([Document(content="Haystack is an LLM framework.")])
print(store_retriever.count_documents()) # 1 — same memory
Drop documents missing a ranking field instead of letting them pollute scored results.
python
from haystack.components.rankers import MetaFieldRanker
ranker = MetaFieldRanker(meta_field="score", missing_meta="drop")
result = ranker.run(documents=docs)
print(result["documents"]) # only documents that have 'score' metadata
›Introduces the haystack-experimental package (pip install haystack-experimental), importable via from haystack_experimental.component_type import Component, shipping three initial components: OpenAIFunctionCaller, OpenAPITool, and EvaluationHarness.
›Adds OpenAIFunctionCaller (in haystack-experimental) to call LLM-returned functions after Chat Generators.
›Adds OpenAPITool (in haystack-experimental) to translate natural-language instructions into structured payloads for RESTful OpenAPI endpoints.
›Adds EvaluationHarness (in haystack-experimental) to wrap pipelines and complex evaluation tasks into a single runnable component.
›Adds TransformersTextRouter component, which uses a Transformers text-classification pipeline to route text inputs to different output connections based on model labels.
+17 moreshow less
›Adds SentenceWindowRetrieval component for sentence-window retrieval, fetching surrounding context documents for a given chunk from the document store.
›Adds DOCXToDocument converter component (uses python-docx) to convert Docx files into Haystack Documents.
›Adds a PPTX-to-Document converter (uses python-pptx) that extracts text from each slide, separating slides with a page break \f so DocumentSplitter can split by slide.
›Adds Distribution-Based Score Fusion (DBSF) as a new ranking mode in JoinDocuments.
›Adds missing_meta parameter to MetaFieldRanker controlling handling of documents that lack the ranked meta field; supported values are 'bottom', 'top', and 'drop'.
›Adds index parameter to InMemoryDocumentStore to enable memory sharing between multiple instances using the same index name.
›Adds filter_policy init parameter to InMemoryBM25Retriever and InMemoryEmbeddingRetriever with 'replace' or 'merge' options for combining runtime and initial filters.
›Adds custom Jinja2 filter callables support to ConditionalRouter via user-supplied filter callables accessible in condition expressions.
›Adds split_id and split_overlap support to DocumentSplitter for finer control over the splitting process.
›Adds save_to_disk and write_to_disk serialization methods to InMemoryDocumentStore.
›Adds remove_component method to PipelineBase to delete components and their connections from a pipeline.
›Adds max_retries and timeout parameters to AzureOpenAIGenerator, AzureOpenAIChatGenerator, AzureOpenAITextEmbedder, and AzureOpenAIDocumentEmbedder; values fall back to OPENAI_MAX_RETRIES (default 5) and OPENAI_TIMEOUT (default 30) environment variables.
›Adds support for structlog context variables to structured logging.
›Enables AnswerBuilder to accept ChatMessage objects as input in addition to strings, with metadata automatically added to the answer.
›Expands LinkContentFetcher content-type support to include glob patterns for text, application, audio, and video types via a flexible handler resolution mechanism.
›Pipeline serialization to YAML now supports tuples as field values.
›Extends HuggingFace API components to accept both HF_API_TOKEN and HF_TOKEN environment variable names.
└──▷ BREAKING ON UPGRADE
!trafilatura is no longer installed automatically; run pip install trafilatura manually to continue using HTMLToDocument.
!The converter_name parameter has been removed from PyPDFToDocument; use the converter init parameter with an instance implementing the PyPDFConverter protocol (convert, to_dict, from_dict) instead, or rely on the provided DefaultConverter class.
!HuggingFaceTEITextEmbedder and HuggingFaceTEIDocumentEmbedder have been removed; replace with HuggingFaceAPITextEmbedder and HuggingFaceAPIDocumentEmbedder.
!HuggingFaceTGIGenerator and HuggingFaceTGIChatGenerator have been removed; replace with HuggingFaceAPIGenerator and HuggingFaceAPIChatGenerator.
1 more release in this issue
· 2024-07-04 → 2024-07-15
Haystack v2.2.4 adds filter_policy to in-memory retrievers for flexible runtime filter control.
└──▷ GET THIS VERSION
$ git clone --branch v2.2.4 https://github.com/deepset-ai/haystack.git
# already have the repo? check out this version:$ git checkout v2.2.4
└──▷ USE IT
Use filter_policy='merge' on an InMemoryBM25Retriever so that runtime filters are combined with the retriever's initial filters rather than overwriting them.
python
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
retriever = InMemoryBM25Retriever(
document_store=document_store,
filter_policy='merge'
)
›Introduces filter_policy init parameter for InMemoryBM25Retriever and InMemoryEmbeddingRetriever, accepting 'replace' or 'merge' to control how runtime filters interact with initial filters.
›Adds apply_filter_policy function to standardize filter-policy application across all document store-specific retrievers, enabling consistent replace/merge behavior.
langchain-openai 0.1.20 adds proxy support to base embeddings and TypedDict-to-tool schema conversion.
└──▷ GET THIS VERSION
$ git clone --branch langchain-openai==0.1.20 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-openai==0.1.20
›Adds proxy support to the OpenAI base embeddings class, enabling embeddings requests to be routed through an HTTP proxy.
›Adds automatic conversion of TypedDict definitions to tool schemas, allowing TypedDict types to be used directly when defining tools.
36 more releases in this issue
· 2024-07-02 → 2024-07-31
langchain-anthropic 0.1.22 adds ToolMessage.status and TypedDict-to-tool-schema conversion support.
└──▷ GET THIS VERSION
$ git clone --branch langchain-anthropic==0.1.22 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-anthropic==0.1.22
›Introduces ToolMessage.status field on ToolMessage to carry status information for tool call results.
›Adds support for converting TypedDict types directly to tool schemas, enabling TypedDict-defined inputs to be used as tool definitions.
langchain-core 0.2.26 adds support for using TypedDict to define tool schemas.
└──▷ GET THIS VERSION
$ git clone --branch langchain-core==0.2.26 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.2.26
›Supports converting TypedDict classes into tool schemas, enabling typed Python dicts to be used directly when defining tools.
langchain-core 0.2.25 adds ToolMessage.status field and support for non-pickleable tool call arguments.
└──▷ GET THIS VERSION
$ git clone --branch langchain-core==0.2.25 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.2.25
›Adds ToolMessage.status field to represent the status of a tool message.
›Supports tool calls with non-pickleable arguments in tools, broadening the range of objects that can be passed as tool call inputs.
langchain-openai adds support for the gpt-4o-mini model
└──▷ GET THIS VERSION
$ git clone --branch langchain-openai==0.1.19 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-openai==0.1.19
›Adds gpt-4o-mini as a supported model in the OpenAI integration.
LangChain Core 0.2.24 adds rate limiting abstractions and async support for InMemoryVectorStore
└──▷ GET THIS VERSION
$ git clone --branch langchain-core==0.2.24 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.2.24
└──▷ USE IT
Throttle LLM calls to stay within API rate limits by attaching an InMemoryRateLimiter to your model.
python
from langchain_core.rate_limiters import InMemoryRateLimiter
from langchain_openai import ChatOpenAI
rate_limiter = InMemoryRateLimiter(requests_per_second=2)
llm = ChatOpenAI(model='gpt-4o', rate_limiter=rate_limiter)
response = llm.invoke('Summarize this document.')
Run async similarity searches against an in-memory vector store inside an async pipeline or FastAPI endpoint.
python
from langchain_core.vectorstores import InMemoryVectorStore
from langchain_openai import OpenAIEmbeddings
import asyncio
store = InMemoryVectorStore(embedding=OpenAIEmbeddings())
await store.aadd_texts(['doc one', 'doc two', 'doc three'])
results = await store.asimilarity_search('relevant query', k=2)
›Adds rate_limiter field to BaseModel along with a RateLimiter abstraction and InMemoryRateLimiter in-memory implementation for controlling request throughput to LLMs.
›Adds asynchronous support to InMemoryVectorStore, enabling non-blocking vector similarity operations in async LangChain pipelines.
›Aligns ChatPromptTemplate.__init__ behavior with ChatPromptTemplate.from_messages, so both construction paths are now equivalent.
LangChain CLI 0.0.26 adds a conversation memory combining persistent vectorstore history with a token buffer.
└──▷ GET THIS VERSION
$ git clone --branch langchain-cli==0.0.26 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-cli==0.0.26
›Adds a conversation memory type that combines an optionally persistent vectorstore history with a token buffer for richer, scalable chat context management.
langchain-qdrant 0.1.3 adds async similarity search with relevance scores to the Qdrant class.
└──▷ GET THIS VERSION
$ git clone --branch langchain-qdrant==0.1.3 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-qdrant==0.1.3
›Adds _asimilarity_search_with_relevance_scores method to the Qdrant class for async similarity search returning relevance scores.
LangChain Experimental 0.0.63 adds prompt restrictions for non-function-calling LLMs in LLMGraphTransformer and tightens PALValidator blocking.
└──▷ GET THIS VERSION
$ git clone --branch langchain-experimental==0.0.63 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-experimental==0.0.63
›Adds conditional logic in LLMGraphTransformer to inject restrictions into prompts for LLMs that do not support function calling, enabling graph extraction with a broader set of models.
›Expands PALValidator to block additional unsafe constructs, hardening code execution paths in PAL chains.
langchain-community 0.2.10 adds dedoc-based document loaders, a link-extraction document transformer, and a progress-bar toggle flag.
└──▷ GET THIS VERSION
$ git clone --branch langchain-community==0.2.10 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-community==0.2.10
›Adds new document loaders based on the dedoc library for parsing a wide range of document formats.
›Adds a new document transformer for extracting links from documents.
›Adds a flag to toggle the progress bar on document loading operations.
LangChain 0.2.11 adds async methods to ConversationSummaryBufferMemory and relaxes multi-agent return_direct validation.
└──▷ GET THIS VERSION
$ git clone --branch langchain==0.2.11 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain==0.2.11
›Adds async methods to ConversationSummaryBufferMemory, enabling non-blocking memory summarization in async LangChain pipelines.
›Removes return_direct validation restriction in multi-agent setups, allowing agents to use return_direct without triggering an error.
›Updates ContextualCompressionRetrieverbase_retriever type to RetrieverLike, broadening the range of retriever objects accepted.
langchain-core 0.2.23 relaxes tool/parser type constraints and enables RunnableWithMessageHistory without config
└──▷ GET THIS VERSION
$ git clone --branch langchain-core==0.2.23 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.2.23
›Enables RunnableWithMessageHistory to run without requiring an explicit config argument.
›Accepts configurable keys at the top level, reducing nesting when passing configuration.
›Relaxes type-checking constraints on tools and parsers, allowing broader input types.
langchain-community 0.2.9 adds MongoDB byte store, Riza code execution, TextEmbed, ApertureDB, and new graph/link-extraction integrations
└──▷ GET THIS VERSION
$ git clone --branch langchain-community==0.2.9 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-community==0.2.9
└──▷ USE IT
Persist chat history to a file with explicit UTF-8 encoding when working with non-ASCII content.
python
from langchain_community.chat_message_histories import FileChatMessageHistory
history = FileChatMessageHistory(
file_path="chat_history.json",
file_encoding="utf-8",
json_encoding="utf-8"
)
Cache embeddings or arbitrary bytes in MongoDB as a key-value byte store.
python
from langchain_community.storage import MongoDBByteStore
store = MongoDBByteStore(
connection_string="mongodb://localhost:27017",
db_name="langchain",
collection_name="byte_store"
)
›Adds file_encoding and json_encoding parameters to FileChatMessageHistory for specifying character and JSON encoding when persisting chat histories.
›Adds MongoDBByteStore as a new byte store backend for MongoDB.
›Adds RizaCodeInterpreter tool for Python and JavaScript code execution via the Riza API.
›Adds TextEmbedEmbeddings integration for the TextEmbed embedding service.
›Adds ApertureDB as a new vector store backend.
+16 moreshow less
›Adds keybert-based and GLiNER-based link extractors for graph store pipelines.
›Adds graph store extractors for constructing knowledge graphs.
›Adds GraphCypherQAChain support for passing additional user-provided inputs to Cypher generation.
›Adds stream parameter support to the Cloudflare Workers AI integration.
›Adds support for advanced text extraction options for PDF documents.
›Adds hybrid search support for Databricks vector search.
›Adds You.com conversational API integration.
›Adds structured output support to ChatTongyi.
›Adds PebbloSafeLoader support for SharePoint Loader and renames the loader type.
›Adds checksum verification when sending data to Pebblo Cloud.
›Adds Neo4j method for associating relationship embeddings, alongside updates to use non-deprecated Cypher methods.
›Replaces the YouTube channel search API with the playlistItems API in GoogleApiYoutubeLoader._get_document_for_channel for more reliable channel document retrieval.
›Forces opt-in for WebResearchRetriever (previously enabled by default; addresses CVE-2024-3095).
›Adds streaming support to HuggingFacePipeline.
›Adds Azure Search additional options support.
›Propagates cost information to the OpenAI callback handler.
└──▷ BREAKING ON UPGRADE
!WebResearchRetriever now requires explicit opt-in to be enabled; existing setups relying on the default enabled state will need to update their configuration.
LangChain 0.2.10 adds aadd_documents to ParentDocumentRetriever, a new ListRerank document compressor, and seed control for evaluations.
└──▷ GET THIS VERSION
$ git clone --branch langchain==0.2.10 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain==0.2.10
└──▷ USE IT
Asynchronously ingest documents into a ParentDocumentRetriever without blocking — useful in async pipelines or web servers.
python
await retriever.aadd_documents(documents)
›Adds aadd_documents async method to ParentDocumentRetriever for non-blocking document ingestion.
›Adds ListRerank document compressor for reranking retrieved documents using a list-based approach.
›Passes seed directly into evaluation runs for reproducible LLM evaluation results.
langchain-mongodb 0.1.7 adds index creation helpers, string ID support, and custom options for MongoDBChatMessageHistory.
└──▷ GET THIS VERSION
$ git clone --branch langchain-mongodb==0.1.7 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-mongodb==0.1.7
›Adds experimental driver-side index creation helper to MongoDBVectorSearch for programmatic index management without leaving Python.
›Adds string ID support to MongoDBVectorSearch — the vectorstore now accepts and returns string IDs instead of requiring ObjectId types.
›Adds custom options support to MongoDBChatMessageHistory, allowing callers to pass additional configuration when constructing chat history instances.
LangChain Core 0.2.22 adds Pydantic v1 and v2 BaseModel support in argsschema.
└──▷ GET THIS VERSION
$ git clone --branch langchain-core==0.2.22 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.2.22
›Supports all versions of Pydantic BaseModel in argsschema, enabling tools and chains to accept both Pydantic v1 and v2 model schemas without conversion.
langchain-core 0.2.21 adds InjectedToolArg annotation for marking tool arguments as runtime-injected.
└──▷ GET THIS VERSION
$ git clone --branch langchain-core==0.2.21 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.2.21
└──▷ USE IT
Mark a tool argument as runtime-injected so the LLM never sees or fills it — useful for passing session state, user context, or auth tokens into a tool without exposing them to the model.
python
from langchain_core.tools import tool
from langchain_core.tools.base import InjectedToolArg
from typing import Annotated
@tool
def get_user_data(query: str, user_id: Annotated[str, InjectedToolArg]) -> str:
"""Fetch data for the current user."""
return f"Data for {user_id}: {query}"
›Adds InjectedToolArg annotation to mark tool arguments that should be injected at runtime rather than supplied by the model.
langchain-openai 0.1.17 exposes raw response headers from OpenAI API calls.
└──▷ GET THIS VERSION
$ git clone --branch langchain-openai==0.1.17 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-openai==0.1.17
›Exposes raw HTTP response headers returned by the OpenAI API, enabling access to metadata such as rate-limit and request-ID headers.
LangChain 0.2.9 adds similarity_score_threshold search type support to MultiVectorRetriever.
└──▷ GET THIS VERSION
$ git clone --branch langchain==0.2.9 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain==0.2.9
›Adds similarity_score_threshold as a supported search type for MultiVectorRetriever, enabling relevance-filtered retrieval.
langchain-core 0.2.20 adds encoding options for file-based prompt templates and expands message utils for LCEL compatibility.
└──▷ GET THIS VERSION
$ git clone --branch langchain-core==0.2.20 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.2.20
›Adds encoding options when creating a prompt template from a file, enabling non-UTF-8 source files to be loaded correctly.
›Extends message utility functions to work with LCEL (LangChain Expression Language) pipelines.
›Updates template format typing to include jinja2 as a Literal value alongside the existing options.
LangChain 0.2.8 adds configurable generic model support, document_variable_name param, and ToolCall/ToolMessage I/O for Tools.
└──▷ GET THIS VERSION
$ git clone --branch langchain==0.2.8 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain==0.2.8
└──▷ USE IT
Explicitly name the documents variable in a stuff-documents chain when your prompt template uses a non-default variable name.
Select the backing LLM at runtime so a single chain definition works across different model providers.
python
from langchain.chat_models import init_chat_model
model = init_chat_model("gpt-4o", model_provider="openai")
response = model.invoke("Summarize the latest threat report.")
›Adds document_variable_name parameter to create_stuff_documents_chain, letting callers explicitly name the prompt variable that receives the stuffed documents.
›Introduces a generic configurable model via init_chat_model, enabling runtime model selection without changing chain code.
›Supports ToolCall as Tool input and ToolMessage as Tool output, aligning tool invocation with the structured message types used by chat models.
langchain-core 0.2.19 adds args_schema support to as_tool() and includes tool name in tool messages.
└──▷ GET THIS VERSION
$ git clone --branch langchain-core==0.2.19 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.2.19
›Adds args_schema parameter support to the as_tool method, allowing callers to pass a custom schema that controls how tool arguments are validated and described.
›Adds tool name field to tool messages, making it easier to trace which tool produced a given message in multi-tool chains.
langchain-qdrant 0.1.2 ships a new Qdrant implementation and a new sparse embeddings provider interface.
└──▷ GET THIS VERSION
$ git clone --branch langchain-qdrant==0.1.2 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-qdrant==0.1.2
›Introduces a new Qdrant implementation replacing the prior integration internals.
›Adds a new sparse embeddings provider interface (Part 1), enabling sparse vector support in Qdrant-backed retrievers.
langchain-anthropic 0.1.20 adds support for ToolCall as Tool input and ToolMessage as Tool output
└──▷ GET THIS VERSION
$ git clone --branch langchain-anthropic==0.1.20 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-anthropic==0.1.20
›Supports ToolCall as Tool input and ToolMessage as Tool output, enabling direct round-trip tool-calling workflows between Anthropic models and LangChain tools.
langchain-openai 0.1.16 adds native support for ToolCall as Tool input and ToolMessage as Tool output.
└──▷ GET THIS VERSION
$ git clone --branch langchain-openai==0.1.16 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-openai==0.1.16
›Supports ToolCall objects as direct input to Tools and ToolMessage objects as Tool output, enabling richer, more structured tool-call round-trips in LLM pipelines.
langchain-fireworks 0.1.5 adds ToolCall-as-input and ToolMessage-as-output support for Tools
└──▷ GET THIS VERSION
$ git clone --branch langchain-fireworks==0.1.5 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-fireworks==0.1.5
›Supports ToolCall as Tool input and ToolMessage as Tool output, enabling structured round-trip tool-calling workflows with Fireworks-backed models.
›Reads tool invocation results from the tool_calls attribute on model responses.
LangChain MistralAI 0.1.10 adds support for ToolCall as Tool input and ToolMessage as Tool output.
└──▷ GET THIS VERSION
$ git clone --branch langchain-mistralai==0.1.10 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-mistralai==0.1.10
›Supports ToolCall as Tool input and ToolMessage as Tool output, enabling structured tool-calling round-trips in MistralAI-backed chains.
$ git clone --branch langchain-core==0.2.16 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.2.16
›Tools now accept ToolCall objects directly as input and can return ToolMessage objects as output, enabling richer, structured tool-call workflows across LangChain integrations.
$ git clone --branch langchain-core==0.2.15 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.2.15
›Adds dispatching for custom events, enabling components to emit and handle user-defined events in the LangChain event stream.
›Propagates parse_docstring to the tool decorator so tool descriptions are automatically extracted from function docstrings.
›Renders metadata key-value pairs when drawing Mermaid graphs, and includes metadata in the graph JSON representation.
›Adds as_tool method version annotation via versionadded for clearer API documentation.
LangChain Core 0.2.13 adds Runnable-to-tool conversion and a new ToolMessage.raw_output field.
└──▷ GET THIS VERSION
$ git clone --branch langchain-core==0.2.13 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.2.13
└──▷ USE IT
Inspect the raw, unprocessed tool output when a ToolMessage is returned, useful for debugging or post-processing tool responses.
langchain-community 0.2.7 adds PGVector support in PebbloRetrievalQA, SingleStoreDB semantic cache, bind_tools for ChatLiteLLM, and Jira cloud/token auth.
└──▷ GET THIS VERSION
$ git clone --branch langchain-community==0.2.7 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-community==0.2.7
└──▷ USE IT
Authenticate to Jira Cloud using only a token, without supplying a username.
LangChain 0.2.7 adds a conversation memory that combines a persistent vectorstore history with a token buffer.
└──▷ GET THIS VERSION
$ git clone --branch langchain==0.2.7 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain==0.2.7
›Adds a new conversation memory type that combines an optionally persistent vectorstore history with a token buffer, enabling long-term retrieval-augmented memory alongside recent-context windowing.
langchain-core 0.2.12 adds GraphStore, VectorStore upsert methods, and InMemoryChatMessageHistory to core.
└──▷ GET THIS VERSION
$ git clone --branch langchain-core==0.2.12 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.2.12
└──▷ USE IT
Persist or overwrite documents in a vector store without duplicating entries — useful in indexing pipelines where the same document may be re-ingested.
python
from langchain_core.vectorstores import VectorStore
# synchronous upsert
vectorstore.upsert(documents)
# async streaming upsert for large batches
async for result in vectorstore.astreaming_upsert(documents):
print(result)
Use InMemoryChatMessageHistory directly from core in unit tests or lightweight apps without depending on langchain-community.
python
from langchain_core.chat_history import InMemoryChatMessageHistory
history = InMemoryChatMessageHistory()
await history.aadd_messages([HumanMessage(content="Hello")])
print(history.messages)
›Adds upsert, streaming_upsert, aupsert, and astreaming_upsert methods to the VectorStore abstraction for writing documents with conflict-resolution semantics.
›Adds Graph Store component to langchain-core, enabling graph-based retrieval as a first-class abstraction.
›Moves InMemoryChatMessageHistory into langchain-core (previously in langchain-community), making it available without the community package.
›Extends conversion utilities to handle RemoveMessage, enabling message deletion in conversation history workflows.
›Unifies function schema parsing across the core library for consistent tool-call handling.
+2 moreshow less
›Supports streaming tool calls when the called function has no arguments.
›Replaces @root_validator() with @pre_init across all models, aligning with the updated validation lifecycle.
langchain-openai 0.1.14 exposes the model request payload for OpenAI calls.
└──▷ GET THIS VERSION
$ git clone --branch langchain-openai==0.1.14 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-openai==0.1.14
›Exposes the model request payload sent to OpenAI, giving callers visibility into the exact data submitted per request.
langchain-core 0.2.11 adds vector store batch lookup, in-memory cache size limits, a BaseMedia type, and optional Document IDs.
└──▷ GET THIS VERSION
$ git clone --branch langchain-core==0.2.11 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.2.11
└──▷ USE IT
Retrieve specific documents from a vector store by their IDs without a similarity search.
langchain-ai21 0.1.7 adds streaming support for AI21 Labs Jamba models.
└──▷ GET THIS VERSION
$ git clone --branch langchain-ai21==0.1.7 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-ai21==0.1.7
›Adds streaming support for AI21 Labs Jamba models.
langchain-anthropic 0.1.18 adds stop_reason to ChatAnthropic streaming results.
└──▷ GET THIS VERSION
$ git clone --branch langchain-anthropic==0.1.18 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-anthropic==0.1.18
›Adds stop_reason field to ChatAnthropic stream result chunks, surfacing why the model stopped generating.
LangGraph 0.1.17 lets update_state() accept None values to preserve configuration without changing state.
└──▷ GET THIS VERSION
$ git clone --branch 0.1.17 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout 0.1.17
└──▷ USE IT
Preserve checkpoint configuration between steps without overwriting any state values — useful when you need to advance step count or merge configurable fields mid-graph.
python
graph.update_state(config, values=None)
›Supports None as a valid values argument in Pregel.update_state(), enabling configuration-only state updates that leave channel values unchanged.
8 more releases in this issue
· 2024-07-09 → 2024-07-31
LangGraph 0.1.10 adds InjectedState for automatic graph-state injection into tools and improves parallel tool execution in ToolNode.
└──▷ GET THIS VERSION
$ git clone --branch 0.1.10 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout 0.1.10
└──▷ USE IT
Give a tool access to the current graph state (e.g., conversation history) without asking the LLM to supply it — useful for retrieval or policy tools that need context the model shouldn't fabricate.
python
from typing import Annotated
from langgraph.prebuilt.tool_node import InjectedState
from langchain_core.tools import tool
class AgentState(TypedDict):
messages: list
user_id: str
@tool
def lookup_policy(
topic: str,
state: Annotated[AgentState, InjectedState()],
) -> str:
"""Look up company policy, scoped to the current user."""
user_id = state["user_id"] # injected automatically; model never sees it
return fetch_policy(topic, user_id)
›Adds InjectedState annotation to automatically inject graph state into tool arguments inside ToolNode, so tools can access state fields without the model generating them.
›Improves parallel execution of tools in ToolNode using config lists via get_config_list from langchain-core.
›Adds GraphInterrupt error class for structured handling of interruptions in nested graphs.
›Adds EmptyInputError error class for clearer reporting when graphs receive empty inputs.
›Enhances checkpoint parent-child relationship tracking and includes parent configuration data in checkpoint tuples, improving support for nested graphs.
LangGraph 0.1.9 adds state_modifier to create_react_agent, custom state schemas, retry policies, and new background executor classes.
└──▷ GET THIS VERSION
$ git clone --branch 0.1.9 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout 0.1.9
└──▷ USE IT
Use state_modifier to prepend a system prompt from the full agent state, giving you access to state fields beyond just messages.
python
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
def modify_state(state):
# state is the full graph state, not just messages
return [{"role": "system", "content": "You are a helpful security analyst."}] + state["messages"]
agent = create_react_agent(
model=ChatOpenAI(model="gpt-4o"),
tools=[...],
state_modifier=modify_state,
)
Define a custom state schema with extra fields so the agent graph carries domain-specific context alongside messages.
python
from typing import TypedDict, Annotated
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
import operator
class MyAgentState(TypedDict):
messages: Annotated[list, operator.add]
user_role: str # custom field
session_id: str # custom field
agent = create_react_agent(
model=ChatOpenAI(model="gpt-4o"),
tools=[...],
state_schema=MyAgentState,
)
›Adds state_modifier parameter to create_react_agent for finer control over LLM inputs, replacing the now-deprecated messages_modifier.
›Adds state_schema parameter to create_react_agent, enabling custom graph state definitions beyond the default AgentState.
›Adds BackgroundExecutor and AsyncBackgroundExecutor classes in langgraph.pregel for structured background task management and cancellation.
›Adds retry policies for nodes in StateGraph.
›Adds custom input and output type support to StateGraph.
+3 moreshow less
›Adds equality comparison (__eq__) to all channel classes (AnyValue, LastValue, Topic, and others), enabling channel state comparisons.
›Improves graph visualization to include type-hint hints for conditional edges and to create END nodes only when needed.
›Adds node-existence validation in update_state, surfacing clear errors when a nonexistent node is targeted.
└──▷ BREAKING ON UPGRADE
!The messages_modifier parameter of create_react_agent is deprecated; migrate to state_modifier.
LangGraph CLI 0.1.49 adds a dockerfile command to generate customized Dockerfiles for the LangGraph API server.
└──▷ GET THIS VERSION
$ git clone --branch cli==0.1.49 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout cli==0.1.49
└──▷ TRY IT
Generate a ready-to-build Dockerfile from your LangGraph config so you can version-control or customize it before pushing to a registry.
LangGraph SDK 0.1.26 adds batch run creation, cron job scheduling, and thread conflict handling
└──▷ GET THIS VERSION
$ git clone --branch sdk==0.1.26 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout sdk==0.1.26
└──▷ USE IT
List all scheduled cron jobs for a specific assistant to audit or manage recurring runs.
›New RunCreate TypedDict enables structured background run creation with fields for thread_id, assistant_id, input, metadata, and run configuration options.
›New create_batch method on LangGraphClient submits multiple runs in a single API call for more efficient batch operations.
›New Cron class and search method support scheduled job management, with filtering by assistant_id and thread_id and pagination.
›New OnConflictBehavior type ("raise" or "do_nothing") controls what happens when a thread is created that already exists, via the new if_exists parameter on Threads.create.
LangGraph 0.1.7 adds persistent task-write checkpointing via new put_writes/aput_writes methods, enabling resilient interrupted-workflow recovery.
└──▷ GET THIS VERSION
$ git clone --branch 0.1.7 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout 0.1.7
└──▷ USE IT
Persist mid-run task writes so that an interrupted graph can resume without re-executing completed tasks.
python
from langgraph.checkpoint.sqlite import SqliteSaver
checkpointer = SqliteSaver.from_conn_string('checkpoints.db')
# During a custom checkpointer integration, flush task writes explicitly:
checkpointer.put_writes(config, writes, task_id)
›Adds put_writes and aput_writes methods to BaseCheckpointer (implemented across Memory, SQLite, and AioSQLite checkpointers) for storing task-specific writes mid-execution.
›Adds pending_writes field to CheckpointTuple to carry per-task write state that is restored when a checkpoint is reloaded.
›Tasks with pre-loaded pending_writes are skipped on restart, avoiding redundant re-execution when resuming interrupted workflows.
LangGraph 0.1.6 adds RemoveMessage support for message deletion by ID and handle_tool_errors parameter in ToolNode.
└──▷ GET THIS VERSION
$ git clone --branch 0.1.6 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout 0.1.6
└──▷ USE IT
Disable automatic tool-error suppression in a ToolNode so exceptions propagate directly — useful when you want strict failure semantics in CI or testing.
python
from langgraph.prebuilt import ToolNode
tool_node = ToolNode(tools=[my_tool], handle_tool_errors=False)
Prune a specific message from a running message graph by its ID — handy for trimming context or removing a malformed turn mid-conversation.
python
from langchain_core.messages import RemoveMessage
# Return a RemoveMessage from a node to delete the message with the given ID
def cleanup_node(state):
return {"messages": [RemoveMessage(id="msg-abc123")]}
›Adds handle_tool_errors parameter (defaults to True) to ToolNode in langgraph.prebuilt.tool_node, returning a friendly error message instead of raising an exception when a tool fails, so agents can continue the conversation after tool errors.
›Adds support for RemoveMessage from langchain-core in langgraph.graph.message.add_messages, enabling deletion of specific messages by ID from message graphs, with validation that raises an error if the target message ID does not exist.
LangGraph CLI 0.1.48 adds --debugger-base-url to point the debugger at a custom LangGraph API URL
└──▷ GET THIS VERSION
$ git clone --branch cli==0.1.48 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout cli==0.1.48
└──▷ TRY IT
Point the LangGraph debugger at a remotely accessible API URL so teammates on other machines can use the Studio UI against your local server.
$ langgraph dev --debugger-base-url https://my-dev-server.example.com:8123
›Adds --debugger-base-url CLI option to specify a custom URL for the debugger to access the LangGraph API, overriding the default http://127.0.0.1:[PORT]; also sets VITE_STUDIO_LOCAL_GRAPH_URL in the debugger container when the option is used.
›Makes Docker base image pulls verbose during build to provide better visibility into the build process.
Letta 0.3.20 adds character limits for persona/human to /config response and fixes inner thoughts for gpt-4o models.
└──▷ GET THIS VERSION
$ git clone --branch 0.3.20 https://github.com/letta-ai/letta.git
# already have the repo? check out this version:$ git checkout 0.3.20
›Adds character limits for persona and human fields to the /config API response, giving clients the data needed to enforce input constraints.
›Improves inner-thought generation for gpt-4o and gpt-4o-mini models via an updated prompt format, enabling these models to produce non-None inner thoughts.
Letta 0.3.19 adds customizable memory classes via BaseMemory and unifies tools/memory in the agent creation API.
└──▷ GET THIS VERSION
$ git clone --branch 0.3.19 https://github.com/letta-ai/letta.git
# already have the repo? check out this version:$ git checkout 0.3.19
›Adds BaseMemory base class enabling developers to define custom memory fields and custom memory-editing functions beyond the built-in human/persona fields and core_memory_append/core_memory_replace tools.
›Adds ChatMemory as the new default memory class, preserving the original human/persona fields and core_memory_append/core_memory_replace editing functions.
›Extends client.create_agent() to accept memory and tools arguments, allowing custom memory classes and tool lists to be specified at agent creation time; memory-editing methods from the BaseMemory subclass are automatically registered as agent tools.
›Provides a migration script at scripts/migrate_0.3.18.py for upgrading agents from v0.3.18 to v0.3.19 due to AgentState schema changes.
└──▷ BREAKING ON UPGRADE
!Presets are no longer supported as a mechanism to create agents; tool, memory, and system-prompt specification moves into the client.create_agent() interface.
!The AgentState schema has changed; agents from v0.3.18 require migration using scripts/migrate_0.3.18.py before use with v0.3.19.
LlamaIndex v0.10.57 adds streaming tool-call extraction, KG property extraction, async BedrockConverse, and delete_nodes()/clear() across five vector stores.
└──▷ GET THIS VERSION
$ git clone --branch v0.10.57 https://github.com/run-llama/llama_index.git
# already have the repo? check out this version:$ git checkout v0.10.57
└──▷ USE IT
Filter vector context retrieval results to only those above a similarity threshold, reducing noisy context passed to the LLM.
python
from llama_index.core.retrievers import VectorContextRetriever
retriever = VectorContextRetriever(
vector_store_index,
similarity_score=0.75
)
nodes = retriever.retrieve("What is the access control policy?")
Purge all nodes from a Pinecone index (e.g., before a full re-ingestion) using the new clear() method.
python
from llama_index.vector_stores.pinecone import PineconeVectorStore
vector_store = PineconeVectorStore(pinecone_index=pinecone_index)
vector_store.clear()
›Adds optional similarity_score parameter to VectorContextRetriever to filter retrieved context by minimum similarity threshold.
›Adds property extraction (using property names and optional descriptions) for knowledge graphs in llama-index-core.
›Supports attaching output classes directly to LLMs for structured extraction.
›Adds streaming support for tool calling and structured extraction in llama-index-core.
›Implements delete_nodes() and clear() methods for Weaviate, OpenSearch, Milvus, Postgres, and Pinecone vector stores.
+3 moreshow less
›Implements async functionality in BedrockConverse (llama-index-llms-bedrock-converse v0.1.5).
›Enhances metadata filtering for MongoDB Atlas Vector Search in llama-index-vector-stores-mongodb.
›Updates Notion reader to handle duplicate pages and combined database+page IDs.
1 more release in this issue
· 2024-07-03 → 2024-07-23
Semantic Kernel .NET 1.16.1 adds GenAI support to ONNX connector and enriches auto function invocation filter context.
└──▷ GET THIS VERSION
$ git clone --branch dotnet-1.16.1 https://github.com/microsoft/semantic-kernel.git
# already have the repo? check out this version:$ git checkout dotnet-1.16.1
›Adds GenAI support to Connectors.Onnx, enabling local ONNX model inference through the standard Semantic Kernel GenAI pipeline.
›Adds additional data to the AutoFunctionInvocationFilterContext to give filter implementations richer context when intercepting automatic function calls.
›Adds AgentChat serialization support, enabling agent conversation state to be persisted and restored.
›Adds Assistant V2 support for Agents, aligning the agent framework with the OpenAI Assistants v2 API.
›Adds Agent History Propagation so conversation history is shared across agents in multi-agent scenarios.
+1 moreshow less
›Handles missing operationId fields in OpenAPI specs so connectors no longer fail when specs omit that field.
4 more releases in this issue
· 2024-07-03 → 2024-07-23
Semantic Kernel Python 1.3.0 adds a standalone chat completion agent, Ollama SDK migration, and Azure AI Inference application ID support.
└──▷ GET THIS VERSION
$ git clone --branch python-1.3.0 https://github.com/microsoft/semantic-kernel.git
# already have the repo? check out this version:$ git checkout python-1.3.0
›Adds application_id support for the Azure AI Inference connector.
›Introduces the single, non-group chat completion agent class with concept samples.
›Migrates the Ollama integration to the official Ollama Python SDK.
›Adds singular get methods to kernel collections for retrieving individual items without iterating.
›Improves JSON schema generation for Union and Optional type annotations in kernel functions.
Semantic Kernel 1.16.0 adds NexusRaven function calling, OpenAPI-as-plugin-description, Kernel-free OpenAPI plugin creation, and graduated Filters API.
└──▷ GET THIS VERSION
$ git clone --branch dotnet-1.16.0 https://github.com/microsoft/semantic-kernel.git
# already have the repo? check out this version:$ git checkout dotnet-1.16.0
└──▷ USE IT
Pass custom JSON serialization options to TextMemoryPlugin when your memory store uses non-default naming or converters.
csharp
var options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase };
var memoryPlugin = new TextMemoryPlugin(memory, jsonSerializerOptions: options);
kernel.ImportPluginFromObject(memoryPlugin);
›Enables creating a KernelPlugin from an OpenAPI spec without requiring a Kernel instance, simplifying plugin instantiation in DI and test scenarios.
›Uses the OpenAPI description field as the default plugin description when importing OpenAPI-based plugins.
›Graduates the Filters API from experimental to stable, making prompt and function invocation filters production-ready.
›Adds dynamic logging methods to the .NET Agents framework.
›Supports custom JsonSerializerOptions passed to TextMemoryPlugin for serialization control.
+4 moreshow less
›Adds a sample demonstrating function calling with the NexusRaven model.
›Adds a sample showing the model thought process for each function call.
›Improves DuckDBMemoryStore.RemoveBatchAsync performance by using arrays instead of lists.
Semantic Kernel Python 1.2.0 adds Mistral AI chat, Azure Model-as-a-Service connector, and cross-model function calling abstraction.
└──▷ GET THIS VERSION
$ git clone --branch python-1.2.0 https://github.com/microsoft/semantic-kernel.git
# already have the repo? check out this version:$ git checkout python-1.2.0
›Introduces FunctionChoiceBehavior, a new function-calling abstraction that enables function calling for models beyond OpenAI (the existing FunctionCallBehavior continues to work but migration is encouraged).
›Adds a new Azure Model-as-a-Service connector to the Python SDK.
›Adds support for function calling via the Azure AI Inference connector.
Semantic Kernel 1.15.1 adds streaming for ChatCompletionAgent, Gemini system-message support, and single-agent OpenAIAssistantAgent invocation.
└──▷ GET THIS VERSION
$ git clone --branch dotnet-1.15.1 https://github.com/microsoft/semantic-kernel.git
# already have the repo? check out this version:$ git checkout dotnet-1.15.1
›Adds cancellation token support to filter context types.
›Adds streaming support for ChatCompletionAgent in the Agents framework.
›Enables single-agent / no-chat invocation of OpenAIAssistantAgent.
›Supports direct logger association with an Agent.
›Adds Gemini support for system messages and removes message-order limitations.
+4 moreshow less
›Supports loading native functions from YAML files.
›Adds SQL Server JSON support for memory connectors (Dm/sqlserver/json).
›Adds batch delete query optimization in the SQLite memory connector.
›Adds plugin selection example using vector search.
›Adds --gpulayers -1 to let KoboldCpp automatically estimate how many GPU layers to offload (experimental).
›Adds KoboldCpp Launch Templates: shareable .kcppt files that bundle model URLs, a preloaded story, a chat-completions adapter, and full backend/thread/GPU-layer configuration; load one via --config <url-or-path>.
›Adds iq4_nl quantization format support in the Vulkan backend.
›Adds TTS narration speed setting in Kobold Lite.
›Adds support for selecting the greeting message in Character Cards that contain multiple greetings in Kobold Lite.
+2 moreshow less
›Adds Corpo UI theme availability for chat mode in Kobold Lite.
›Enables inject-chatnames in Corpo UI to replace the AI's displayed name when toggled on.
2 more releases in this issue
· 2024-07-01 → 2024-07-25
›Adds --unpack flag enabling self-extraction of KoboldCpp PyInstaller binaries into an empty directory for easy file access and modification; also usable from the GUI launcher.
›Adds --chatcompletionsadapter selection by bundled template filename (e.g. Llama-3.json), allowing pre-bundled chat completion templates to be referenced without a full path.
›Raises default --contextsize from 2048 to 4096 and increases the default Chat Completions API output length.
$ git clone --branch v1.69.1 https://github.com/LostRuins/koboldcpp.git
# already have the repo? check out this version:$ git checkout v1.69.1
└──▷ USE IT
Inject a forced positive and negative prompt for every Stable Diffusion generation request via an adapter config.
yaml
add_sd_prompt: "masterpiece, best quality"
add_sd_negative_prompt: "blurry, low quality, nsfw"
›Adds add_sd_prompt and add_sd_negative_prompt fields in a loaded adapter to inject forced positive or negative prompts for Stable Diffusion generation.
›Adds premade Chat Completions adapters selectable in the GUI launcher (via --chatcompletionsadapter) to apply instruct templates for various models and formats when using third-party OpenAI-compatible frontends.
›Adds a tensor split input field in the GUI launcher for Vulkan backends.
›Adds separator tokens between multiple images in LLaVA multi-image requests.
›Kobold Lite can now fall back to an alternative API or endpoint URL on connection failure, including retrying via the OpenAI API.
+2 moreshow less
›Merges upstream improvements including enhanced MMQ with int8 tensor core support and Gemma 2 features (including IQ MMVQ fixes).
›KoboldCpp Colab notebook switched to precompiled Linux binaries for faster startup.
LocalAI v2.19.1 adds P2P federated AI swarms, llama.cpp embeddings, model pull by URL, and a HuggingFace /scan endpoint.
└──▷ GET THIS VERSION
$ git clone --branch v2.19.1 https://github.com/mudler/LocalAI.git
# already have the repo? check out this version:$ git checkout v2.19.1
└──▷ TRY IT
Stand up a load-balanced federated AI cluster across multiple machines using a shared token.
$ local-ai --p2p--federated
Connect additional worker nodes to an existing P2P swarm using the shared token generated by the primary instance.
$ local-ai --p2p
›Adds --p2p and --p2p --federated CLI flags to launch federated LocalAI instances that auto-discover each other across networks using a shared token, with optional load balancing.
›Adds --p2p flag support for distributing model weights across nodes as P2P workers, currently available on the llama.cpp backend.
›Adds a HuggingFace /scan API endpoint for scanning HuggingFace resources.
›Enables embedding support in the llama-cpp (gRPC) backend via the embeddings endpoints.
›Adds model pulling directly from URLs via feat(models): pull models from urls.
+6 moreshow less
›Adds a 'Swarm' section to the WebUI providing a P2P dashboard with auto-discovery setup instructions and one-liner connection commands.
›Adds TTS (Text-to-Speech) to binary releases.
›Updates install.sh to support federated instance setup.
›Adds the ability to remove a backend from the backend list in the WebUI.
›Improves tool/function call handling by parsing broken JSON in raw results and using dynamic rules for grammar keys when grammars are disabled.
›WebUI welcome page now shows models without a config file alongside configured models.
LocalAI v2.19.0 adds P2P federated instances, llama-cpp embeddings, HuggingFace /scan endpoint, and URL-based model pulling.
└──▷ GET THIS VERSION
$ git clone --branch v2.19.0 https://github.com/mudler/LocalAI.git
# already have the repo? check out this version:$ git checkout v2.19.0
└──▷ TRY IT
Start a P2P AI swarm node — the generated shared token lets other LocalAI instances auto-discover and join the cluster for load-balanced inference.
$ local-ai --p2p--federated
›Adds --p2p flag to start LocalAI and generate a shared token for auto-discovering and clustering multiple instances into a load-balanced AI swarm without Docker or Kubernetes.
›Adds --p2p --federated flags to launch fully federated LocalAI instances that share requests across the cluster, with auto-discovery across different networks.
›Adds HuggingFace /scan endpoint for scanning HuggingFace model assets.
›Adds embeddings endpoint support to the llama-cpp (grpc) backend, enabling local embedding generation via llama.cpp.
›Adds load-balanced option to the P2P federation mode.
+7 moreshow less
›Supports pulling models directly from URLs via the model management interface.
›Includes TTS (Text-to-Speech) in binary releases, removing the need for a separate install.
›Adds federated instance setup support to the install.sh installer script.
›Adds a P2P 'Swarm' dashboard in the WebUI with one-liner connection instructions and auto-discovery guidance.
›Improves function/tool calling by parsing broken JSON in raw results and using dynamic rules for grammar keys when grammars are disabled.
›Allows removing a backend from the backend list via the WebUI.
›Shows models without a config file in the WebUI welcome/model list page.
SGLang v0.2.0 adds Llama3 405B, Deepseek MoE, Mistral-Nemo, GPTBigCode, and InternLM2 support with OpenAI parallel sampling and VertexAI safety settings.
└──▷ GET THIS VERSION
$ git clone --branch v0.2.0 https://github.com/sgl-project/sglang.git
# already have the repo? check out this version:$ git checkout v0.2.0
›Adds support for VertexAI safety settings in API calls.
›Adds OpenAI API parallel sampling support.
›Adds new model support for Llama3 405B (including FP8), Deepseek MoE, InternLM2, GPTBigCode, and Mistral-Nemo.
›Adds incremental detokenization when streaming, reducing time-to-first-token (TTFT) and inter-token latency (ITL) at stream_interval 1.
›Adds benchmark serving tooling (bench_serving.py) supporting random datasets, non-streaming mode, and TensorRT-LLM comparison benchmarks.
+1 moreshow less
›Delivers superior or competitive throughput versus TensorRT-LLM and vLLM across Llama-8B to Llama-405B on A100 and H100 GPUs in both FP8 and FP16.
2 more releases in this issue
· 2024-07-04 → 2024-07-25
oobabooga textgen v1.12 adds Llama 3.1 support across Transformers, ExLlamaV2, and AutoAWQ backends with UI markdown and coloring improvements.
└──▷ GET THIS VERSION
$ git clone --branch v1.12 https://github.com/oobabooga/textgen.git
# already have the repo? check out this version:$ git checkout v1.12
›Removes AutoAWQ as a standalone loader; AWQ models (including Llama 3.1 AWQ-INT4) are now loaded directly through Transformers for better compatibility.
›Adds Llama 3.1 support via Transformers 4.43, ExLlamaV2 0.1.8, and AutoAWQ 0.2.6 backend bumps.
›Colors text between quote characters in chat and chat-instruct modes for improved readability.
›Makes the markdown rendering cache infinite (cleared on chat switch) to keep the UI responsive during long 128k-context conversations.
└──▷ BREAKING ON UPGRADE
!AutoAWQ is no longer available as a standalone loader; AWQ models must now be loaded through the Transformers loader.
3 more releases in this issue
· 2024-07-05 → 2024-07-25
textgen v1.11 defaults to chat-instruct mode, adds Mistral-Nemo support, and enables gradio subpath customization for reverse proxies.
└──▷ GET THIS VERSION
$ git clone --branch v1.11 https://github.com/oobabooga/textgen.git
# already have the repo? check out this version:$ git checkout v1.11
›Adds support for customizing the gradio subpath for use with a reverse proxy.
›Adds ChatML-format.json format example for training.
›Supports Mistral-Nemo via llama-cpp-python bump to 0.2.83.
›Defaults new sessions to chat-instruct mode, which automatically applies the model's Jinja2 template for higher-quality outputs.
›Significantly faster and more responsive UI through refactored event handling that reduces connections between the UI and the server.
+1 moreshow less
›Excludes the instruction template from exports when using 'Save UI defaults to settings.yaml', preventing it from being overwritten by the model template.
oobabooga textgen v1.10 adds Gemma-2 support via ExLlamaV2 and new attention-disable flags.
└──▷ GET THIS VERSION
$ git clone --branch v1.10 https://github.com/oobabooga/textgen.git
# already have the repo? check out this version:$ git checkout v1.10
›Adds --no_xformers and --no_sdpa flags for ExLlamaV2 (complement the existing --no_flash_attn flag); all three must be used together — or their UI checkboxes enabled — to run Gemma-2 without severe performance degradation.
›ExLlamaV2 updated to 0.1.7, enabling Gemma-2 model support.
oobabooga text-gen v1.9 adds 4-bit/8-bit KV cache for llama.cpp, Gemma-2 support, and a rewritten Whisper STT extension.
└──▷ GET THIS VERSION
$ git clone --branch v1.9 https://github.com/oobabooga/textgen.git
# already have the repo? check out this version:$ git checkout v1.9
›Adds 4-bit and 8-bit KV cache options to llama.cpp and llamacpp_HF backends via the existing --cache_4bit and --cache_8bit flags.
›Adds native Gemma-2 support in Transformers: automatically detects Gemma2ForCausalLM architecture and applies optimal settings (bfloat16/float16 precision and eager attention) without requiring --bf16 --use_eager_attention manually.
›Automatically obtains the EOT token from Jinja2 templates and adds it to stopping strings, so Llama-3-Instruct stops correctly without manually adding <eot> to custom stopping strings.
›Rewrites the Whisper STT extension, replacing the Gradio microphone component with a custom microphone element for improved reliability.
›Adds --cpu-offload-gb flag to control how much GPU memory to extend into RAM via CPU offloading.
›Adds new vllm CLI with three subcommands: serve, complete, and chat.
›Supports chat completions input in the tokenize endpoint.
›Adds AWQ support to the Marlin kernel, delivering 1.5–2x performance improvements for existing AWQ models.
›Supports Meta Llama 3.1, runnable on a single 8xH100 or 8xA100 node with FP8 quantization, or across multiple nodes with BF16 via pipeline parallelism.
+11 moreshow less
›Enables chunked prefill by default for the Meta Llama 3.1 model series to support long context.
›Adds a new rope extension method to support long-context workloads.
›Supports dynamic loading of LoRA adapters from HuggingFace at runtime.
›Adds pipeline parallel support for Mixtral.
›Adds support for Mistral-Nemo.
›Adds initial support for Chameleon (multimodal model).
›Enables pipeline parallelism via the stdlib multiprocessing module as an alternative to Ray.
›Adds InfiniBand shared-object support to wheels so multi-node serving with InfiniBand works out of the box.
›Adds SPMD worker execution using Ray accelerated DAG.
›Enables MoE with the Pallas GMM kernel on TPU.
›Wheels now build on Ubuntu 20.04 instead of 22.04, broadening compatibility.
└──▷ BREAKING ON UPGRADE
!The Attention.kv_scale field is replaced by separate k_scale and v_scale fields; any code or configuration referencing kv_scale directly will break.
2 more releases in this issue
· 2024-07-05 → 2024-07-23
›Adds --pipeline-parallel-size flag to the API server to enable pipeline parallelism across multiple GPUs (early stage).
›Adds MLPSpeculator and Typical Acceptance Sampler to speculative decoding, plus a new Draft Model Runner.
›Adds support for sharded tensorized models via the frontend and core engine.
›Adds continuous streaming of OpenAI response token stats.
›Adds support for FlashInfer as an optional backend for prefill, decode, and CUDA Graph for decode.
+12 moreshow less
›Adds w4a16 and Marlin 24 support to compressed-tensors quantization.
›Adds a faster vectorized FP8 quantize kernel, with FP8 support extended to Ampere GPUs.
›Adds OpenVINO inference backend.
›Adds Intel GPU (XPU) initial inference backend.
›Adds CPU inference support with AVX2 ISA.
›Adds support for Gemma 2 (recommended with FlashInfer backend v0.0.8 for logits soft cap correctness).
›Adds support for Jamba, vLLM's first state space model.
›Adds support for DeepSeek-V2.
›Adds support for Phi3-Vision, dynamic image size, and a VLM input registry; VLM prompts now use <image> directly instead of complex formatting.
›Enhances TPU backend support.
›Enhances distributed communication performance via shared memory.
›Enhances block manager latency.
└──▷ BREAKING ON UPGRADE
!All VLM-specific arguments are removed from engine APIs; they can no longer be set globally via CLI. Prompts must now pass <image> instead of the previous complex prompt formatting.
Ollama v0.3.0 adds tool/function-calling support via the Chat API, plus four new models including Llama 3.1 and Mistral Large 2.
└──▷ GET THIS VERSION
$ git clone --branch v0.3.0 https://github.com/ollama/ollama.git
# already have the repo? check out this version:$ git checkout v0.3.0
└──▷ USE IT
Let a model decide which tool to call to answer a user query — useful for building agents that dispatch to real APIs based on natural language.
python
import ollama
response = ollama.chat(
model='llama3.1',
messages=[{'role': 'user', 'content': 'What is the weather in Toronto?'}],
tools=[{
'type': 'function',
'function': {
'name': 'get_current_weather',
'description': 'Get the current weather for a city',
'parameters': {
'type': 'object',
'properties': {
'city': {
'type': 'string',
'description': 'The name of the city',
},
},
'required': ['city'],
},
},
}],
)
print(response['message']['tool_calls'])
›Adds tool calling support to the Chat API, enabling models to invoke functions, browse the web, run code interpreters, and interact with external APIs.
›Supports Llama 3.1 (8B, 70B, 405B) with native tool-calling capability.
›Supports Mistral Large 2 (123B) with 128k context, code generation, tool calling, math, and multilingual reasoning.
›Supports Firefunction v2, an open-weights function-calling model competitive with GPT-4o function calling.
›Supports Llama-3-Groq-Tool-Use, a series of models optimized for tool use and function calling.
Ollama v0.2.0 adds concurrent request handling, multi-model loading, and three new models including Gemma 2.
└──▷ GET THIS VERSION
$ git clone --branch v0.2.0 https://github.com/ollama/ollama.git
# already have the repo? check out this version:$ git checkout v0.2.0
└──▷ TRY IT
Check which models are currently loaded into GPU memory and when they will be unloaded.
$ ollama ps
›New ollama ps subcommand shows which models are currently loaded, along with size, processor utilization, and expiry time.
›Supports serving multiple simultaneous requests in parallel using only a small amount of additional memory per request — enabling concurrent chat sessions, code completion, document processing, and multi-agent workloads.
›Supports loading multiple different models into GPU memory at the same time, with automatic load/unload based on request demand and available GPU memory — enabling RAG pipelines where embedding and text completion models run side-by-side.
›Adds GLM-4, a multilingual general-purpose model competitive with Llama 3, to the Ollama model library.
›Adds CodeGeeX4, a code-completion and AI software development model, to the Ollama model library.
+2 moreshow less
›Adds Gemma 2, Google's next-generation model with improved output quality, to the Ollama model library.
›Returns a descriptive error on Linux when the system lacks sufficient memory to load a model.
Triton v2.48.0 adds custom backend tracing, enhanced failure metrics, and GenAI-Perf support for embeddings, re-rankers, and multi-prompt input.
└──▷ GET THIS VERSION
$ git clone --branch v2.48.0 https://github.com/triton-inference-server/server.git
# already have the repo? check out this version:$ git checkout v2.48.0
›Adds --input-file flag to GenAI-Perf to accept multiple user-specified prompts in a single run.
›Supports tracing custom backend activities via the backend tracing API (see trace.md#custom-backend-tracing).
›Enhances Failure Count Metrics to include the failure reason of each inference request.
›Enables profiling of OpenAI-compatible embeddings and Hugging Face TEI re-ranker API-compatible rankings via GenAI-Perf.
›Updates request-rate handling in OpenAI and HTTP clients so async requests are dispatched at exactly the specified rate.
+2 moreshow less
›Adds a warning in Perf Analyzer when latency does not stabilize for async models, while still allowing the run to complete.
›Adds input/output validation in Perf Analyzer, returning an error if user-supplied inputs or outputs are not present in the model.
Phoenix v4.16.0 adds a feedback tab to span details, a span aside with timing info, and sort ordering for annotation fields.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v4.16.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v4.16.0
›Adds sort order argument to SpanAnnotation and TraceAnnotation fields, enabling ordered retrieval of annotation data.
›Adds a feedback tab to span details in the UI, surfacing annotation feedback directly within span inspection.
›Adds a span aside panel with timing info and feedback in the trace view.
›Adds a trace stream toggle in the preferences context.
›Allows retries for annotation insertions when the corresponding span or trace does not yet exist, reducing dropped annotations during ingestion.
9 more releases in this issue
· 2024-07-02 → 2024-07-30
$ git clone --branch arize-phoenix-v4.15.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v4.15.0
›Adds containedInDataset boolean field to GraphQL Spans type, enabling queries that filter spans by dataset membership.
›Adds annotation macro and filter condition snippets to the project page UI for faster annotation workflows.
›Adds dataset edit UI and support for supplying dataset metadata at creation time.
›Adds version mismatch checks to warn when client and server versions differ.
›Implements lazy loading of spans in the trace UI, enabling performant rendering of large traces.
+1 moreshow less
›Annotations now automatically refetch when annotation data changes, keeping the UI in sync without manual refresh.
Phoenix v4.14.0 adds an annotations UI and extends the evals DSL with an annotations symbol.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v4.14.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v4.14.0
›Extends the evals DSL to accept the annotations symbol, enabling annotation data to be referenced directly in evaluation expressions.
›Adds a new annotations UI for viewing and managing span/trace annotations.
Phoenix v4.13.0 adds a GraphQL resolver to query all annotation names on a project.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v4.13.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v4.13.0
›Adds a GraphQL resolver that returns all annotation names on a project, enabling programmatic discovery of annotation surfaces.
Arize Phoenix 4.12.0 adds timeout arguments to client methods.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v4.12.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v4.12.0
›Adds timeout arguments to client methods, enabling callers to control request duration limits.
Phoenix v4.11.0 adds a Guardrail span kind and a GraphQL resolver for span annotations.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v4.11.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v4.11.0
›Adds GraphQL resolver for querying annotations on a span, enabling programmatic retrieval of span-level annotation data.
›Adds GUARDRAIL span kind type, extending the span taxonomy to cover guardrail components in LLM pipelines.
Phoenix v4.10.0 adds GraphQL mutations and REST routes for span and trace annotations, plus UI copy of IDs.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v4.10.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v4.10.0
›Adds REST routes for span and trace annotations, enabling programmatic annotation of spans and traces via HTTP.
›Adds GraphQL mutations for span and trace annotations, exposing annotation operations over the GQL API.
›Adds UI ability to copy span and trace IDs directly from the annotations interface.
Phoenix 4.8.0 adds a REST endpoint to delete datasets from experiments.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v4.8.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v4.8.0
›Adds a REST endpoint to delete a dataset in the experiments API.
Phoenix v4.7.0 adds image rendering for messages in the UI.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v4.7.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v4.7.0
›Renders images inline within messages in the trace/span UI.
Phoenix v4.6.0 ships datasets, experiments, and LLM evaluators with new client methods, GraphQL resolvers, and environment-variable auth headers.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v4.6.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v4.6.0
└──▷ USE IT
Decorate a custom function to register it as an evaluator for experiment runs.
python
import phoenix as px
from phoenix.evals import create_evaluator
@create_evaluator
def my_evaluator(output, expected):
return output.strip() == expected.strip()
Use reference as an alias for expected in an evaluator to match either naming convention from dataset examples.
python
import phoenix as px
from phoenix.evals import create_evaluator
@create_evaluator
def exact_match(output, reference): # 'reference' is an alias for 'expected'
return output.strip() == reference.strip()
›Adds reference as an alias for expected in evaluator argument bindings via **datasets** evaluator function signatures.
›Adds get_dataset_by_name client method to retrieve datasets by name.
›Adds a client method for appending to existing datasets.
›Adds create_evaluator decorator for defining custom evaluators.
›Adds built-in LLM evaluators and a relevance evaluator for experiment outputs.
+35 moreshow less
›Adds basic evaluators for string experiment outputs.
›Adds ability to set auth headers via environment variables.
›Adds ability to clear data older than a specified date.
›Adds patchDatasetExamples GraphQL mutation to update dataset examples.
›Adds compareExperiments GraphQL resolver for side-by-side experiment comparison.
›Adds annotations resolver on the DatasetRun GraphQL type.
›Adds experiments resolver on the DatasetExample GraphQL type.
›Adds runs resolver on the Experiment GraphQL type.
›Adds span resolver on the DatasetExample GraphQL type.
›Adds project resolver on Span GraphQL type.
›Adds GraphQL field linking a trace to its project.
›Adds deleteDataset GraphQL mutation and corresponding UI.
›Adds deleteExamples GraphQL mutation and corresponding UI.
›Adds GraphQL resolver for adding spans to datasets.
›Adds GraphQL dataset versions connection.
›Adds a JSON endpoint to retrieve dataset versions.
›Adds a dataset upload REST endpoint.
›Adds JSONL download option (including OpenAI-format JSONL) to the dataset download menu.
›Adds CSV download for datasets via the UI.
›Adds dataframe transformation support for datasets.
›Adds ability to create datasets dynamically from the client.
›Adds example and experiment counts to the datasets table.
›Adds pagination to the dataset examples table.
›Adds sequence numbers for experiments belonging to the same dataset.
›Captures traces from experiments and their evaluations.
›Posts each experiment/evaluation run result immediately upon completion.
›Prints experiment summaries after runs complete.
›Prints the URL to the dataset when it is uploaded.
›Allows evaluator functions with unrecognized parameters that have default values.
›Enforces read-only mode by denying v1 REST routes and GraphQL mutations when readonly.
›Adds multi-select on spans/traces tables for bulk dataset addition.
›Adds a dataset creation UI and example modal.
›Displays the latest dataset version in the UI.
›Adds a link to view the source span from a dataset example.
Langfuse v2.66.0 adds version/release trace filters, promptName/promptVersion on observations, Redis API key and prompt caching, and configurable JWT session duration.
└──▷ GET THIS VERSION
$ git clone --branch v2.66.0 https://github.com/langfuse/langfuse.git
# already have the repo? check out this version:$ git checkout v2.66.0
└──▷ TRY IT
Filter traces to a specific release version to scope investigations to a single deployment.
$ curl -X GET 'https://<your-langfuse-host>/api/public/traces?version=1.2.0&release=prod' \
-H 'Authorization: Bearer <secret-key>'
Set a shorter JWT session lifetime (e.g., 1 hour) for stricter auth controls in self-hosted deployments.
$ AUTH_SESSION_MAX_AGE=3600
›Adds version and release query filters to the GET /traces and GET /observations API routes, enabling precise retrieval of traces and observations by deployment version or release.
›Adds promptName and promptVersion fields to observations returned by the API, exposing which prompt and version drove each LLM call.
›Adds AUTH_SESSION_MAX_AGE environment variable to customize JWT session duration, with a 5-minute polling interval.
›Adds server-side Redis caching for API keys and prompts, reducing database load on high-throughput deployments.
›Adds a connection-check endpoint for ClickHouse to verify infrastructure health.
+1 moreshow less
›Adds a separate date range filter to UI tables for traces and generations.
Langfuse v2.60.0 adds non-numeric score support via API and new 5-minute/3-hour dashboard timeframes.
└──▷ GET THIS VERSION
$ git clone --branch v2.60.0 https://github.com/langfuse/langfuse.git
# already have the repo? check out this version:$ git checkout v2.60.0
›Adds support for non-numeric scores and score configs via the API, dropping the non-null constraint on the value field in the scores table — enabling categorical/qualitative scoring alongside numeric scores.
›Adds 5-minute and 3-hour timeframe options to the dashboard for finer-grained monitoring windows.
Weave v0.50.6 adds call feedback UI, a new .call() method on ops, and promotes get_current_call to a top-level API.
└──▷ GET THIS VERSION
$ git clone --branch v0.50.6 https://github.com/wandb/weave.git
# already have the repo? check out this version:$ git checkout v0.50.6
└──▷ USE IT
Retrieve the Call object from a decorated op to inspect call metadata (ID, inputs, outputs) without a separate lookup.
python
import weave
@weave.op()
def my_llm_call(prompt: str) -> str:
return "response"
result, call = my_llm_call.call("What is the capital of France?")
print(call.id)
Inspect the currently executing call from inside any function in the call stack, useful for adding dynamic metadata mid-execution.
python
import weave
@weave.op()
def process(data: str) -> str:
current = weave.get_current_call()
print(current.id)
return data
›Adds call function to decorated ops, returning a Call object alongside the op's result — accessible as my_op.call(...).
›Promotes get_current_call to a top-level API, making the active call inspectable from anywhere without internal imports.
›Adds a feedback tab to the call details page in the UI, surfacing notes and emoji reactions per call.
›Adds UI to attach notes and emoji reactions to individual calls.
LanceDB python-v0.11.0 adds reciprocal rank fusion reranking and HuggingFace-compatible transformers in Node.js
└──▷ GET THIS VERSION
$ git clone --branch python-v0.11.0 https://github.com/lancedb/lancedb.git
# already have the repo? check out this version:$ git checkout python-v0.11.0
›Adds a reciprocal rank fusion (RRF) reranker for combining multiple retrieval result sets.
›Adds HuggingFace-compatible transformers embedding support to the Node.js SDK.
›Upgrades the underlying Lance storage engine to v0.15.0.
└──▷ BREAKING ON UPGRADE
!The timeout argument in the LanceDB Node.js SDK has been corrected; existing code passing timeout values may break if the previous (incorrect) argument name or position was relied upon.
6 more releases in this issue
· 2024-07-13 → 2024-07-26
LanceDB python-v0.10.2 adds native HuggingFace sentence-transformers embedding support via Rust.
└──▷ GET THIS VERSION
$ git clone --branch python-v0.10.2 https://github.com/lancedb/lancedb.git
# already have the repo? check out this version:$ git checkout python-v0.10.2
›Adds HuggingFace sentence-transformers as a natively supported embedding provider via the Rust backend.
LanceDB python-v0.10.0 adds DynamoDB commit store, Jina embeddings/reranking, explain_plan, fast search, and binary field updates.
└──▷ GET THIS VERSION
$ git clone --branch python-v0.10.0 https://github.com/lancedb/lancedb.git
# already have the repo? check out this version:$ git checkout python-v0.10.0
└──▷ USE IT
Use Jina embeddings and the Jina reranker together in a LanceDB retrieval pipeline.
›Adds POST /collections/{collection_name}/points/query Universal Query API supporting search, recommendations, discovery, and payload ordering in a single request, with hybrid search via result fusion and multi-stage re-scoring.
›Adds float16 datatype for dense vectors, halving memory consumption with minimal accuracy loss.
›Adds float16 and uint8 datatype options for sparse vector indexes, reducing memory by 2x and 4x respectively.
›Adds Inverse Document Frequency (IDF) modifier for sparse vectors, enabling streaming updates for BM25 and BM42 embeddings.
›Adds S3-compatible storage backend for snapshots.
+6 moreshow less
›Adds ability to configure default collection parameters (quantization, vector storage, replication factor) applied to all new collections.
›Adds ability to overwrite global optimizer configuration per collection, enabling separation of indexing and searching roles within a single cluster.
›Adds support for multivectors, enabling native use of late-interaction models such as ColBERT and storing a dynamic number of vectors per point with shared payload.
›Adds issue reporting to surface potential performance problems and misconfigurations.
›Applies Delta Encoding and bitpacking compression for sparse vectors, reducing their memory footprint by up to 75%.
›Skips serialization of empty fields in search responses, reducing payload size and network traffic.
Search across multiple named vectors in a single GraphQL query for more comprehensive retrieval.
json
{
Get {
Article(
nearText: {
concepts: ["climate change"],
targets: { combinationMethod: minimum, targetVectors: ["title", "body"] }
}
) {
title
body
}
}
}
›Adds OFFLOAD_S3_ENDPOINT environment variable (renamed from S3_ENDPOINT_URL) to configure S3-compatible object storage for tenant offloading.
›Adds FROZEN tenant status via REST and gRPC APIs, enabling inactive tenant data to be offloaded to S3-compatible object storage to reduce compute costs.
›Adds IndexRangeFilters property config to enable a new roaring-set range index, drastically improving performance of numeric range queries at scale.
›Adds a reindex endpoint to the REST API.
›Adds Scalar Quantization (SQ) vector compression, mapping floating-point vector values to integers to reduce storage size while maintaining search accuracy.
+11 moreshow less
›Adds async (Merkle tree-based) replication to keep replicas consistent with minimal performance impact.
›Adds multi-target vector search, allowing a single query to search across multiple named vectors simultaneously via GraphQL and gRPC.
›Adds generative-anthropic as a new generative module (Module Generative Anthropic).
›Adds dynamic generative module syntax with GraphQL and gRPC support, enabling runtime selection of generative modules.
›Adds an environment variable to disable the Go profiler setup.
›Adds API-based modules (including multi2vec-palm) enabled by default.
›Enables concurrent batch vectorization requests, improving throughput for bulk ingestion.
›Changes HNSW default max connections to 32 for improved index performance.