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.
Agno v1.0.0 introduces an Evals framework and a fully restructured multi-modal API with typed Image, Audio, Video, and Artifact classes.
└──▷ GET THIS VERSION
$ git clone --branch v1.0.0 https://github.com/agno-agi/agno.git
# already have the repo? check out this version:$ git checkout v1.0.0
└──▷ USE IT
Build a PDF knowledge base using the renamed embedder id parameter and updated import paths.
python
from agno.knowledge.pdf_url import PDFUrlKnowledgeBase
from agno.vectordb.pgvector import PgVector
from agno.embedder.ollama import OllamaEmbedder
knowledge_base = PDFUrlKnowledgeBase(
urls=['https://phi-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf'],
vector_db=PgVector(
table_name='recipes',
db_url='postgresql+psycopg://ai:ai@localhost:5532/ai',
embedder=OllamaEmbedder(id='llama3.2', dimensions=3072),
),
)
knowledge_base.load(recreate=True)
›Adds an Evals system to measure performance, accuracy, and reliability of agents.
›Typed multi-modal input classes — Image, Audio, Video — now accepted by agent.run() and agent.print_response(), with fields for url, filepath, content, detail, format, and id.
›Typed output artifact classes — ImageArtifact, AudioArtifact, VideoArtifact, AudioOutput — now returned on RunResponse.images, RunResponse.audio, RunResponse.videos, and RunResponse.response_audio.
›Embedders now accept id instead of model as the identifier parameter (e.g. OllamaEmbedder(id='llama3.2', dimensions=3072)).
›All toolkit classes are now suffixed with Tools (e.g. DuckDuckGoTools).
+6 moreshow less
›Model namespace moved from phi.model.x to agno.models.x; knowledge base namespace moved from phi.knowledge_base.x to agno.knowledge.x.
›Document readers renamed with _reader suffix under agno.document.reader.* (e.g. agno.document.reader.pdf_reader).
›Performance improvement: several internal Pydantic models converted to dataclasses to reduce overhead.
└──▷ BREAKING ON UPGRADE
!All imports under phi.* are replaced by agno.* — code importing from phi.model.x, phi.knowledge_base.x, phi.document.reader.*, etc. will break.
!All toolkit class names must now be suffixed with Tools (e.g. DuckDuckGo is now DuckDuckGoTools).
!agent.run(images=[...]) and agent.print_response(images=[...]) now require Image objects instead of bare values; same for Audio and Video.
!RunResponse.images is now a list of ImageArtifact; RunResponse.audio is a list of AudioArtifact; RunResponse.videos is a list of VideoArtifact; RunResponse.response_audio is now of type AudioOutput — any code accessing these fields by prior type assumptions will break.
!Embedders no longer accept the model parameter — it must be replaced with id.
!PgAgentStorage, SqlAgentStorage, MongoAgentStorage, S2AgentStorage are renamed to PostgresAgentStorage, SqliteAgentStorage, MongoDbAgentStorage, SingleStoreAgentStorage respectively.
!SqlWorkflowStorage, PgWorkflowStorage, MongoWorkflowStorage are renamed to SqliteWorkflowStorage, PostgresWorkflowStorage, MongoDbWorkflowStorage respectively.
!Model classes AzureOpenAIChat, CohereChat, DeepSeekChat, GeminiOpenAIChat, HuggingFaceChat, Hermes are renamed to AzureOpenAI, Cohere, DeepSeek, GeminiOpenAI, HuggingFace, OllamaHermes respectively.
!Assistant, llm, PhiTools, PythonAgent, and DuckDbAgent have been removed with no direct replacement.
!The similarity_threshold parameter on semantic chunking is replaced by threshold.
!Knowledge base phi.knowledge.pdf.PDFUrlKnowledgeBase is now at agno.knowledge.pdf_url.PDFUrlKnowledgeBase; phi.knowledge.csv.CSVUrlKnowledgeBase is now at agno.knowledge.csv_url.CSVUrlKnowledgeBase.
AutoGPT Platform v0.4.4 adds an external API, store-agent execution, video blocks, Mem0 memory, Linear integration, and auto top-up credits.
└──▷ GET THIS VERSION
$ git clone --branch autogpt-platform-beta-v0.4.4 https://github.com/Significant-Gravitas/AutoGPT.git
# already have the repo? check out this version:$ git checkout autogpt-platform-beta-v0.4.4
›Introduces an external API for the AutoGPT platform, enabling programmatic access to platform capabilities.
›Splits CodeExecutionBlock into InstantiationBlock and StepExecutionBlock for finer-grained code execution control.
›Adds new blocks for GitHub checks and statuses, enabling CI/CD status monitoring in agent workflows.
›Adds multimedia file support and basic Video blocks for processing video content in agent pipelines.
›Adds a Mem0 AI memory block for persistent, cross-agent memory via the Mem0 service.
+9 moreshow less
›Adds a Linear integration with dedicated blocks for interacting with Linear project management.
›Adds a username+password credentials type and restores email and Reddit blocks.
›Enables executing store agents without requiring agent ownership, broadening access to marketplace agents.
›Exposes the LLM prompt as an output pin on LLM blocks, making the constructed prompt inspectable and chainable.
›Implements Auto-Top-Up credits capability so agent runs are not interrupted by credit exhaustion.
›Adds a billing portal entry point for managing subscriptions and payment methods.
›Changes the /store* URL to /marketplace* for the agent store.
›Adds graph/node id and execution id fields to the CreditTransaction table for per-execution credit tracking.
›Adds default value support in oneOf fields in the block schema.
└──▷ BREAKING ON UPGRADE
!The /store* URL path is renamed to /marketplace*; any bookmarks, webhooks, or integrations pointing to /store* routes will break.
1 more release in this issue
· 2025-01-10 → 2025-01-29
AutoGPT Platform v0.4.2 adds Twitter integration, API key generation, Nvidia deepfake detection, and new GitHub blocks.
└──▷ GET THIS VERSION
$ git clone --branch autogpt-platform-beta-v0.4.2 https://github.com/Significant-Gravitas/AutoGPT.git
# already have the repo? check out this version:$ git checkout autogpt-platform-beta-v0.4.2
›Adds API key generation frontend, enabling users to create and manage API keys directly from the UI.
›Adds TERMINATED execution status to the backend executor, providing a new distinct state for agent run lifecycle tracking.
›Adds Twitter integration block, enabling agents to interact with Twitter as a connected service.
›Adds Nvidia Deepfake Detection block via backend/blocks/nvidia, with Nvidia provided as a default backend.
›Adds GitHub Create File block for automating file creation in repositories.
+3 moreshow less
›Adds GitHub Create Repo block for programmatic repository creation.
›Adds GitHub List Stargazers block for retrieving stargazer data from repositories.
›Supports multiple credentials inputs on blocks, allowing a single block to accept more than one set of credentials simultaneously.
└──▷ BREAKING ON UPGRADE
!Python.format and Jinja templating format backward compatibility has been removed; agents relying on either templating format must be updated.
Framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.
CrewAI 0.100.0 adds Amazon SageMaker as a supported LLM provider.
└──▷ GET THIS VERSION
$ git clone --branch 0.100.0 https://github.com/crewAIInc/crewAI.git
# already have the repo? check out this version:$ git checkout 0.100.0
›Supports Amazon SageMaker as an LLM provider for running agents against hosted SageMaker endpoints.
2 more releases in this issue
· 2025-01-04 → 2025-01-28
CrewAI 0.98.0 adds Conversation Crew, flow state persistence with @persist, and SambaNova/NVIDIA NIM/VoyageAI integrations.
└──▷ GET THIS VERSION
$ git clone --branch 0.98.0 https://github.com/crewAIInc/crewAI.git
# already have the repo? check out this version:$ git checkout 0.98.0
└──▷ USE IT
Persist flow state across runs so a long-running security workflow can resume where it left off after interruption.
python
from crewai.flow.persistence import persist, FlowPersistence
class MySecurityFlow(Flow):
@persist
def analyze_targets(self):
# state is automatically saved after this method completes
...
Haystack v2.9.0 adds Tool/ToolInvoker abstractions, ComponentTool, RecursiveDocumentSplitter, XLSXToDocument, and StringJoiner.
└──▷ GET THIS VERSION
$ git clone --branch v2.9.0 https://github.com/deepset-ai/haystack.git
# already have the repo? check out this version:$ git checkout v2.9.0
└──▷ USE IT
Wire an LLM to a live web search tool so the pipeline can answer questions requiring real-time information.
python
from haystack import Pipeline
from haystack.tools import ComponentTool
from haystack.components.websearch import SerperDevWebSearch
from haystack.utils import Secret
from haystack.components.tools.tool_invoker import ToolInvoker
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.dataclasses import ChatMessage
search = SerperDevWebSearch(api_key=Secret.from_env_var("SERPERDEV_API_KEY"), top_k=3)
tool = ComponentTool(
component=search,
name="web_search",
description="Search the web for current information on any topic"
)
pipeline = Pipeline()
pipeline.add_component("llm", OpenAIChatGenerator(model="gpt-4o-mini", tools=[tool]))
pipeline.add_component("tool_invoker", ToolInvoker(tools=[tool]))
pipeline.connect("llm.replies", "tool_invoker.messages")
result = pipeline.run({"llm": {"messages": [ChatMessage.from_user("Who founded SpaceX?")]}})
print(result)
›Adds Tool dataclass (importable from haystack.tools) to represent callable tools for LLMs, plus a create_tool_from_function helper and @tool decorator for automatic name, description, and parameter generation.
›Adds ToolInvoker component (haystack.components.tools.tool_invoker) that executes LLM-prepared tool calls and returns results as a List[ChatMessage] with tool role; connects directly to OpenAIChatGenerator and HuggingFaceAPIChatGenerator via llm.replies → tool_invoker.messages.
›Adds ComponentTool (haystack.tools) to wrap any Haystack component (web search, document processing, custom) as an LLM-callable tool with automatic schema generation and input type conversion, supporting basic types, dataclasses, and List[Document].
›Adds RecursiveDocumentSplitter (haystack.components.preprocessors) with split_length, split_overlap, and separators parameters for recursive, separator-ordered text splitting.
›Adds XLSXToDocument converter that loads Excel files via Pandas + openpyxl, converting each sheet into a separate Document in CSV format.
+9 moreshow less
›Adds store_full_path parameter to PyPDFToDocument and AzureOCRDocumentConverter__init__ methods — True stores the full file path in document metadata, False stores only the filename.
›Adds StringJoiner component to collect strings from multiple pipeline components into a single list of strings.
›Adds from_openai_dict_format class method to ChatMessage for constructing a ChatMessage from an OpenAI Chat API-format dictionary.
›Adds default_headers parameter to AzureOpenAIDocumentEmbedder and AzureOpenAITextEmbedder.
›Adds token argument to NamedEntityExtractor to support private Hugging Face models.
›Merges NLTKDocumentSplitter functionality into DocumentSplitter: split_by='sentence' now uses NLTK-based sentence boundary detection; previous behaviour is available via split_by='period'.
›Refactors ChatMessage dataclass to support multiple content types (text, tool calls, tool call results); the content attribute is replaced by the new text property.
›Extends tool calling support to HuggingFaceAPIChatGenerator and OpenAIChatGenerator.
›Improves callable serialization to support class methods and static methods; explicitly prohibits serialization of instance methods, lambdas, and nested functions.
└──▷ BREAKING ON UPGRADE
!The content attribute of ChatMessage is removed; use the new text property to access textual content. Pipelines containing ChatPromptBuilder serialized with haystack-ai <= 2.9.0 may fail to deserialize.
!The converter init argument is removed from PyPDFToDocument; use the component's other init arguments or create a custom component.
!The store_full_path parameter default is changed to False in document converters — previously the full path was stored; now only the filename is stored unless store_full_path=True is set explicitly.
!The SentenceWindowRetriever output key context_documents now returns List[Document] (ordered by split_idx_start) instead of List[List[Document]].
langchain-ollama 0.2.3 adds backwards-compatible OllamaEmbeddings init to ease migration from langchain_community.
└──▷ GET THIS VERSION
$ git clone --branch langchain-ollama==0.2.3 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-ollama==0.2.3
›Adds backwards-compatible initialization for OllamaEmbeddings so existing code using langchain_community.embeddings can migrate to langchain_ollama.embeddings without changes.
›Adds standard metadata to structured output tracing.
12 more releases in this issue
· 2025-01-03 → 2025-01-29
langchain-mistralai 0.2.5 adds JSON Schema structured output and AI message prefix support for MistralAI.
└──▷ GET THIS VERSION
$ git clone --branch langchain-mistralai==0.2.5 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-mistralai==0.2.5
└──▷ USE IT
Force a MistralAI model to return output conforming to a strict JSON Schema, useful when downstream code must parse a guaranteed structure.
python
from langchain_mistralai import ChatMistralAI
from pydantic import BaseModel
class Answer(BaseModel):
answer: str
confidence: float
llm = ChatMistralAI(model='mistral-large-latest')
structured = llm.with_structured_output(Answer, method='json_schema')
result = structured.invoke('What is the capital of France?')
print(result)
›Supports method='json_schema' in structured output calls, enabling strict JSON Schema-based response shaping with MistralAI models.
›Allows setting a Prefix in AIMessage for MistralAI, enabling prefill/prefix-guided generation workflows.
langchain-community 0.3.16 adds GitHub releases retrieval, SambaNova integration, and broader Azure AI credential support.
└──▷ GET THIS VERSION
$ git clone --branch langchain-community==0.3.16 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-community==0.3.16
›Adds support for fetching GitHub releases for a configured repository via the GitHub tool.
›Adds the sambanova-langchain integration package for SambaNova LLM support.
›Allows setting a custom GitLab URL in the GitLab tool constructor.
LangChain 0.3.16 adds DeepSeek and Ollama provider support to init_chat_model and init_embeddings.
└──▷ GET THIS VERSION
$ git clone --branch langchain==0.3.16 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain==0.3.16
└──▷ USE IT
Initialize a DeepSeek chat model through the unified factory without importing provider-specific classes.
python
from langchain.chat_models import init_chat_model
llm = init_chat_model("deepseek-chat", model_provider="deepseek")
Initialize Ollama embeddings through the unified factory for drop-in use with any LangChain vector store or retriever.
python
from langchain.embeddings import init_embeddings
embeddings = init_embeddings("ollama", model="nomic-embed-text")
›Adds deepseek as a supported provider in init_chat_model, enabling direct DeepSeek model initialization alongside existing providers.
›Adds ollama support in init_embeddings, allowing Ollama embedding models to be initialized through the unified embeddings factory.
langchain-community 0.3.15 adds image blob parsers, PyMuPDF refactor, OBSFileLoader mode arg, and page_label metadata for PyPDF.
└──▷ GET THIS VERSION
$ git clone --branch langchain-community==0.3.15 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-community==0.3.15
└──▷ USE IT
Load a file from OBS in a specific mode, e.g. to control whether the file is read as text or binary.
LangChain 0.3.15 adds API key argument support to OpenAI moderation chain and expands OpenAI Assistant parameters.
└──▷ GET THIS VERSION
$ git clone --branch langchain==0.3.15 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain==0.3.15
›Adds api_key argument support to the OpenAI moderation chain, enabling per-call key configuration.
›Adds additional_instructions parameter to OpenAI Assistant runs create calls via OpenAIAssistantV2Runnable.
›Adds additional parameters to OpenAIAssistantV2Runnable for broader control over assistant run configuration.
langchain-anthropic 0.3.2 adds parallel_tool_calls support for Anthropic chat models.
└──▷ GET THIS VERSION
$ git clone --branch langchain-anthropic==0.3.2 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-anthropic==0.3.2
›Adds parallel_tool_calls parameter to Anthropic chat model calls, enabling concurrent tool invocation in a single model turn.
$ git clone --branch langchain-core==0.3.30 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-core==0.3.30
›Allows artifact to be passed in create_retriever_tool, enabling retriever tools to return artifact data alongside retrieved documents.
langchain-openai 0.3 switches structured output to json_schema by default and removes hardcoded parameter defaults.
└──▷ GET THIS VERSION
$ git clone --branch langchain-openai==0.3.0 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-openai==0.3.0
└──▷ USE IT
Enable strict schema validation when extracting structured output from a model that supports json_schema, to guarantee the response exactly matches your TypedDict schema.
python
from langchain_openai import ChatOpenAI
from typing import TypedDict
class Answer(TypedDict):
score: int
reasoning: str
llm = ChatOpenAI(model='gpt-4o-mini')
structured = llm.with_structured_output(Answer, method='json_schema', strict=True)
result = structured.invoke('Rate the following code quality from 1-10 and explain why.')
Restore 0.2 behaviour for a Pydantic model with constrained fields or when targeting a model like gpt-3.5-turbo that does not support json_schema.
python
from langchain_openai import ChatOpenAI
from pydantic import BaseModel, Field
class Verdict(BaseModel):
confidence: float = Field(ge=0.0, le=1.0)
label: str
llm = ChatOpenAI(model='gpt-3.5-turbo', temperature=0.7, max_retries=2, n=1)
structured = llm.with_structured_output(Verdict, method='function_calling')
result = structured.invoke('Classify the following text as spam or ham.')
›Changes the default method parameter of ChatOpenAI(...).with_structured_output() from 'function_calling' to 'json_schema', using OpenAI's dedicated structured output feature instead of function calling.
›Adds support for strict=True in with_structured_output() to enable strict schema validation for schemas specified via TypedDict or JSON schema (disabled by default).
└──▷ BREAKING ON UPGRADE
!The default method for ChatOpenAI(...).with_structured_output() changes from 'function_calling' to 'json_schema'; models that do not support json_schema (e.g. gpt-4 and gpt-3.5-turbo) will raise an error unless method='function_calling' is explicitly passed.
!Pydantic BaseModel schemas with fields that have non-null defaults or metadata (such as min/max constraints) will raise an error with the new json_schema default; pass method='function_calling' to restore previous behaviour.
!Non-null defaults for the optional temperature (was 0.7), max_retries (was 2), and n (was 1) parameters on ChatOpenAI are removed; callers that relied on these defaults must now set them explicitly.
langchain-chroma 0.2.0 adds get_by_ids, embedding vector retrieval, and document.id support to the Chroma vector store.
└──▷ GET THIS VERSION
$ git clone --branch langchain-chroma==0.2.0 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-chroma==0.2.0
›Adds get_by_ids method to the Chroma vector store for direct document lookup by ID.
›Adds document.id support so documents carry their IDs through the Chroma store.
›Enables retrieval of embedding vectors alongside documents from a Chroma collection.
›Passes through kwargs to Chroma collection.delete, exposing the full Chroma delete API surface.
langchain-text-splitters 0.3.5 adds HTMLSemanticPreservingSplitter for structure-aware HTML chunking.
└──▷ GET THIS VERSION
$ git clone --branch langchain-text-splitters==0.3.5 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-text-splitters==0.3.5
└──▷ USE IT
Split an HTML document into chunks that respect semantic boundaries like headings and paragraphs, rather than splitting on raw character count.
python
from langchain_text_splitters import HTMLSemanticPreservingSplitter
splitter = HTMLSemanticPreservingSplitter()
chunks = splitter.split_text(html_content)
›Adds HTMLSemanticPreservingSplitter class for splitting HTML documents while preserving semantic structure.
langchain-community 0.3.14 adds SQL LanguageParser and expands AzureSearch credential support
└──▷ GET THIS VERSION
$ git clone --branch langchain-community==0.3.14 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain-community==0.3.14
›Adds SQL LanguageParser to langchain_community, enabling parsing of SQL files as a supported language in document loaders.
›Adds embed_documents and embed_query methods to LlamaCppEmbeddings, enabling batch and single-query embedding with the local Llama.cpp backend.
›Changes DuckDuckGoSearchAPIWrapper default backend from api to auto, broadening search fallback behavior.
└──▷ BREAKING ON UPGRADE
!The DuckDuckGoSearchAPIWrapperbackend parameter default changed from api to auto; existing code relying on the api backend must now pass backend='api' explicitly.
LangChain 0.3.14 adds Google Anthropic Vertex AI model garden support to init_chat_model.
└──▷ GET THIS VERSION
$ git clone --branch langchain==0.3.14 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout langchain==0.3.14
›Adds support for the Google Anthropic Vertex AI model garden provider in init_chat_model, enabling Anthropic models hosted on Vertex AI to be initialized through the standard chat model factory.
LangGraph 0.2.69 adds context utilities (get_config, get_store, get_stream_writer), tag support for streamed LLM messages, and optional store in ToolNode.
└──▷ GET THIS VERSION
$ git clone --branch 0.2.69 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout 0.2.69
└──▷ USE IT
Emit custom progress events from inside a node during streaming without threading store/config through function signatures.
python
from langgraph.config import get_stream_writer
def my_node(state):
writer = get_stream_writer()
writer({"status": "starting scan", "targets": state["targets"]})
# ... do work ...
writer({"status": "complete", "findings": 42})
return state
Access the LangGraph store inside a node to read or write persistent data without passing it explicitly through the graph.
python
from langgraph.config import get_store
def enrich_node(state):
store = get_store()
record = store.get("threat-intel", state["ioc"])
state["intel"] = record.value if record else {}
return state
Give a ToolNode access to the store for lookups during tool execution without making it a required parameter.
python
from langgraph.prebuilt import ToolNode
from langgraph.store.memory import InMemoryStore
store = InMemoryStore()
tool_node = ToolNode(tools=[my_tool], store=store)
›Adds get_config(), get_store(), and get_stream_writer() utilities in the new langgraph.config module to access runtime context (config, store, and custom stream writer) from inside any node or task.
›Adds optional store parameter support in ToolNode, enabling tools to access the LangGraph store without requiring it as a mandatory dependency.
›Adds tag support in StreamMessagesHandler so streamed LLM messages carry filtered tag metadata (excluding internal sequence-step tags).
›Adds subgraphs property to PregelNode and subgraphs field to PregelExecutableTask for direct tracking and caching of nested graph references.
16 more releases in this issue
· 2025-01-05 → 2025-01-31
LangGraph CLI now supports auth configuration in langgraph.json with path validation and Docker container handling.
└──▷ GET THIS VERSION
$ git clone --branch cli==0.1.70 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout cli==0.1.70
└──▷ USE IT
Wire a custom auth handler into your LangGraph deployment so it is validated locally and resolved correctly inside the Docker container.
›Supports auth configuration block in langgraph.json, with validation that auth.path follows the required ./path/to/file.py:attribute_name format.
›Enables auth path resolution in Docker environments via new _update_auth_path function, so auth handlers are correctly wired when deploying containers.
LangGraph 0.2.68 promotes the Functional API to Beta and adds a name parameter to the task decorator.
└──▷ GET THIS VERSION
$ git clone --branch 0.2.68 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout 0.2.68
└──▷ USE IT
Assign a human-readable display name to a task that wraps a lambda or method where the default __name__ would be unhelpful.
python
from langgraph.func import task
@task(name="fetch_user_profile")
def _t(user_id: str) -> dict:
# your implementation
return {"id": user_id}
future = _t("u-123")
result = future.result()
Use the new prompt parameter name in create_react_agent instead of the deprecated state_modifier.
python
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
agent = create_react_agent(
model=ChatOpenAI(model="gpt-4o"),
tools=[...],
prompt="You are a concise security analyst. Answer in bullet points.",
)
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize CVE-2024-1234"}]})
›Adds name parameter to the task decorator, allowing custom display names for tasks regardless of the underlying function name.
›Promotes the Functional API (@task, @entrypoint) from Experimental to Beta status with expanded documentation.
›Introduces unified SyncAsyncFuture type in langgraph.pregel.call that implements both the Future interface and the awaitable protocol for task return values.
›Renames state_modifier parameter to prompt in create_react_agent, with full backward compatibility retained.
└──▷ BREAKING ON UPGRADE
!Generators are no longer supported in the Functional API (@entrypoint); any entrypoint using a generator function will break on upgrade.
LangGraph CLI now ships PostgreSQL with pgvector enabled for vector operations support.
└──▷ GET THIS VERSION
$ git clone --branch cli==0.1.69 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout cli==0.1.69
›Upgrades the bundled PostgreSQL Docker image to pgvector/pgvector:pg16, enabling vector operations in local dev environments.
›Loads the pgvector extension automatically via shared_preload_libraries=vector in the generated Docker Compose configuration.
LangGraph 0.2.67 adds entrypoint.final for separating return vs. checkpointed values and async state modifiers in the chat agent executor.
└──▷ GET THIS VERSION
$ git clone --branch 0.2.67 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout 0.2.67
└──▷ USE IT
Return a clean response to the caller while persisting richer state to the checkpoint — useful when you want the graph's saved context to differ from what the user receives.
python
from langgraph.func import entrypoint
@entrypoint(checkpointer=checkpointer)
def my_graph(input: str) -> entrypoint.final[str, dict]:
result = run_pipeline(input)
# Return the string to the caller; save the full dict to the checkpoint
return entrypoint.final(value=result["summary"], save=result)
›Adds entrypoint.final primitive to return a value to the caller that differs from the value saved in the checkpoint.
›Supports async coroutine functions as state modifiers in the chat agent executor.
›Adds thread-safe atomic counters in PregelScratchpad for safer concurrent graph execution.
›Supports Union types in node function return annotations so add_node correctly extracts Command types.
›Enhances Command.update with automatic field extraction from type hints on dataclasses and typed objects.
+1 moreshow less
›Reduces tracing noise by applying recurse=False to internal RunnableCallable instances.
└──▷ BREAKING ON UPGRADE
!The CONFIG_KEY_END constant is renamed to CONFIG_KEY_PREVIOUS; any code referencing CONFIG_KEY_END will break.
!PregelScratchpad is changed from a TypedDict to a dataclass; code that constructs or unpacks it as a plain dict will break.
›Adds explode_args parameter to RunnableCallable to unpack a tuple of (args, kwargs) instead of passing it as the first positional argument; affects both invoke and ainvoke methods.
›Adds trace_inputs parameter to RunnableSeq to customize how inputs are recorded in callbacks across invoke, ainvoke, stream, and astream.
›Adds run_coroutine_threadsafe function in langgraph.utils.future for safely running coroutines from any thread context.
›Adds CONTEXT_NOT_SUPPORTED flag in langgraph.utils.future to handle Python versions whose event loops do not support contextvars.
›Adds get_runnable_for_entrypoint and get_runnable_for_task functions in langgraph.pregel.call for targeted handling of distinct execution contexts.
+4 moreshow less
›Moves the call function from langgraph.func.__init__ to langgraph.pregel.call for better module organization.
›Adds _explode_args_trace_inputs utility in langgraph.pregel.call to flatten function arguments in traces for improved debugging.
›Enhances chain_future in langgraph.utils.future to return the destination future, enabling direct chaining.
›Removes the restriction in PregelRunner that only coroutine functions could be called in an async context, and adds context detection to return the appropriate future type (async or sync) based on the calling context.
LangGraph 0.2.65 adds graph visualization for entrypoint functions and a new get_store() utility for easy store access.
└──▷ GET THIS VERSION
$ git clone --branch 0.2.65 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout 0.2.65
└──▷ USE IT
Visualize an entrypoint function and all its nested tasks during development or debugging.
python
from langgraph.func import entrypoint, task
@task
def fetch_data(url: str):
...
@entrypoint()
def pipeline(input: dict):
return fetch_data(input["url"]).result()
# pipeline is now an EntrypointPregel
graph = pipeline.get_graph(xray=True)
graph.print_ascii()
Access the configured store inside a node or task without threading config through manually.
python
from langgraph.config import get_store
@task
def save_result(key: str, value: str):
store = get_store()
store.put(("results",), key, {"value": value})
›New EntrypointPregel class exposes a get_graph() method to visualize entrypoint functions and their dependent tasks, including nested subgraphs via x-ray mode.
›New get_store() utility function retrieves the BaseStore from the current config context without manual extraction.
›Tasks decorated with @task now carry a _is_pregel_task attribute, making them automatically discoverable for graph visualization.
└──▷ BREAKING ON UPGRADE
!The entrypoint decorator now returns an EntrypointPregel instance instead of a Pregel instance; code that type-checks or depends on the exact return type being Pregel will break.
LangGraph CLI 0.1.68 adds Bun package manager support and clearer JS-graph error guidance.
└──▷ GET THIS VERSION
$ git clone --branch cli==0.1.68 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout cli==0.1.68
›Supports Bun as a detected package manager: detects bun.lockb and runs bun i automatically for Bun-based projects.
›Adds a clear error message when users attempt to run JS graphs with the Python CLI, directing them to use npx @langchain/langgraph-cli instead.
LangGraph 0.2.64 adds config schema validation and previous state access to the entrypoint decorator.
└──▷ GET THIS VERSION
$ git clone --branch 0.2.64 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout 0.2.64
└──▷ USE IT
Enforce a typed config schema on a workflow so callers get validation errors when they pass unexpected config keys.
python
from langgraph.func import entrypoint
from pydantic import BaseModel
class MyConfig(BaseModel):
temperature: float = 0.7
max_tokens: int = 256
@entrypoint(config_schema=MyConfig)
def my_workflow(inputs: dict) -> str:
# config is validated against MyConfig before execution
...
Accumulate state across invocations by reading the last return value via previous — useful for iterative, stateful agent loops.
python
from langgraph.func import entrypoint
@entrypoint()
def my_workflow(inputs: dict, previous: list | None = None) -> list:
history = previous or []
history.append(inputs["message"])
return history
›Adds config_schema parameter to the entrypoint decorator, enabling schema validation for workflow configuration.
›Adds support for an optional previous parameter in entrypoint-decorated functions to access the prior return value in stateful Pregel graphs.
›Adds automatic input/output type detection from function signatures in the entrypoint decorator, removing the need for manual type annotation wiring.
Spin up a ReAct agent by referencing a model by string instead of instantiating a model object.
python
from langgraph.prebuilt import create_react_agent
agent = create_react_agent("openai:gpt-4", tools)
›Supports checkpointer=True on subgraphs to enable persistent checkpointing without passing a full checkpointer object.
›Accepts string model identifiers in create_react_agent, e.g. create_react_agent("openai:gpt-4", tools).
›Adds structured type definitions for human-in-the-loop interactions: HumanInterruptConfig, ActionRequest, HumanInterrupt, and HumanResponse in langgraph.prebuilt.interrupt.
›Adds stream_eager option to langgraph.pregel to force stream events to emit eagerly.
›Enables method chaining on add_node, add_edge, add_sequence, add_conditional_edges, set_entry_point, set_conditional_entry_point, and set_finish_point via updated Self return types.
+1 moreshow less
›Allows mixed Command and non-Command types in list commands, removing the requirement that all list items be Command objects.
└──▷ BREAKING ON UPGRADE
!get_configurable in langgraph.utils.config is renamed to get_config; any code calling get_configurable will break.
langgraph-checkpoint-postgres 2.0.12 adds task_path tracking to checkpoint writes for better data organization.
└──▷ GET THIS VERSION
$ git clone --branch checkpointpostgres==2.0.12 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout checkpointpostgres==2.0.12
└──▷ USE IT
Tag checkpoint writes with a task path so you can trace which graph node produced each write.
›Adds task_path parameter to put_writes() and aput_writes() on all saver classes (PostgresSaver, AsyncPostgresSaver, ShallowPostgresSaver, AsyncShallowPostgresSaver) to tag checkpoint writes with their originating task path.
›Extends the checkpoint_writes table schema with a task_path column, enabling path-based ordering and querying of checkpoint write records.
LangGraph SQLite checkpointer adds task_path parameter to write-tracking methods for improved task traceability.
└──▷ GET THIS VERSION
$ git clone --branch checkpointsqlite==2.0.3 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout checkpointsqlite==2.0.3
└──▷ USE IT
Tag writes with the originating task path so checkpoint records can be traced back to a specific graph node or subgraph.
LangGraph checkpoint 2.0.10 adds task path tracking to put_writes/aput_writes for consistent ordering in nested task graphs.
└──▷ GET THIS VERSION
$ git clone --branch checkpoint==2.0.10 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout checkpoint==2.0.10
└──▷ USE IT
Pass the nested task path when writing checkpoint data so that sends are retrieved in a consistent, hierarchical order in complex subgraph workflows.
›Adds task_path parameter to put_writes and aput_writes on BaseCheckpointSaver and InMemorySaver to track the nested path of tasks creating checkpoint writes.
›Enables deterministic, consistent ordering of pending sends by sorting on task path, task ID, and sequence number during checkpoint retrieval.
LangGraph DuckDB checkpointer adds in-memory vector search support
└──▷ GET THIS VERSION
$ git clone --branch checkpointduckdb==2.0.2 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout checkpointduckdb==2.0.2
›Adds in-memory vector search capability to the DuckDB checkpointer
LangGraph 0.2.62 adds a response_format parameter to create_react_agent for structured, schema-validated agent outputs.
└──▷ GET THIS VERSION
$ git clone --branch 0.2.62 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout 0.2.62
└──▷ USE IT
Enforce a typed output schema on a ReAct agent so downstream code can rely on structured data instead of free-form text.
python
from pydantic import BaseModel
from langgraph.prebuilt import create_react_agent
class AgentAnswer(BaseModel):
answer: str
confidence: float
agent = create_react_agent(
model,
tools=[...],
response_format=AgentAnswer,
)
result = agent.invoke({"messages": [("user", "What is the capital of France?")]})
print(result["structured_response"]) # AgentAnswer(answer='Paris', confidence=0.99)
Supply a custom extraction prompt alongside the schema when the default structured-output prompt doesn't fit your domain.
python
from typing import TypedDict
from langgraph.prebuilt import create_react_agent
class Summary(TypedDict):
key_findings: list[str]
risk_level: str
agent = create_react_agent(
model,
tools=[...],
response_format=(
"Extract the security findings and risk level from the conversation.",
Summary,
),
)
result = agent.invoke({"messages": [("user", "Analyze this log: ...")]})
print(result["structured_response"])
›Adds response_format parameter to create_react_agent to enforce a schema on final agent output, returned in the structured_response state key.
›Supports OpenAI function/tool schemas, JSON Schema, TypedDict classes, and Pydantic models as the response schema.
›Accepts a (prompt, schema) tuple for response_format to supply a custom prompt when generating structured output.
LangGraph SDK 0.1.50 adds store authorization handlers and expands Command.update to accept tuple sequences.
└──▷ GET THIS VERSION
$ git clone --branch sdk==0.1.50 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout sdk==0.1.50
└──▷ USE IT
Use tuple sequences in Command.update when state keys contain ordering semantics or you're building updates dynamically.
LangGraph 0.2.61 adds OpenAI-format message conversion to add_messages and a more flexible task decorator with async support.
└──▷ GET THIS VERSION
$ git clone --branch 0.2.61 https://github.com/langchain-ai/langgraph.git
# already have the repo? check out this version:$ git checkout 0.2.61
└──▷ USE IT
Ensure all messages stored in a graph state channel are automatically normalized to OpenAI format (string, 'text', 'image_url' blocks) before passing to an OpenAI-compatible LLM.
python
from langgraph.graph.message import add_messages
from typing import Annotated
from typing_extensions import TypedDict
class State(TypedDict):
messages: Annotated[list, add_messages(format="langchain-openai")]
Wrap an async function as a LangGraph task using the decorator directly without parentheses — useful for fire-and-forget subtasks in a functional graph.
python
from langgraph.func import task
@task
async def fetch_data(url: str, timeout: int = 30) -> dict:
# async I/O here
...
›Adds format="langchain-openai" parameter to add_messages to automatically convert message content (strings, text blocks, image_url blocks) to OpenAI-compatible format.
›Enables add_messages as a partial function when called without arguments, improving flexibility in type annotations.
›Rewrites the task decorator to support both direct (@task) and parameterized (@task(...)) usage, with proper coroutine detection and wrapping for async functions.
›Expands task decorator function signature to accept *args and **kwargs and adds overloads for better IDE type inference.
AutoGen v0.4.4 adds serializable agent/team configs, Azure AI model client, rich CLI output, and zero-config in-memory LLM caching.
└──▷ GET THIS VERSION
$ git clone --branch v0.4.4 https://github.com/microsoft/autogen.git
# already have the repo? check out this version:$ git checkout v0.4.4
└──▷ USE IT
Persist a multi-agent team across sessions by serializing its config and state to disk, then reloading both later.
python
config = group_chat.dump_component()
with open("team_config.json", "w") as f:
f.write(config.model_dump_json(indent=4))
state = await group_chat.save_state()
with open("team_state.json", "w") as f:
f.write(json.dumps(state, indent=4))
# Later, restore the team:
with open("team_config.json", "r") as f:
config = json.load(f)
group_chat = Team.load_component(config)
with open("team_state.json", "r") as f:
state = json.load(f)
await group_chat.load_state(state)
Use GitHub-hosted Phi-4 via the new Azure AI client without switching to the OpenAI client.
python
from autogen_ext.models.azure import AzureAIChatCompletionClient
from azure.core.credentials import AzureKeyCredential
client = AzureAIChatCompletionClient(
model="Phi-4",
endpoint="https://models.inference.ai.azure.com",
credential=AzureKeyCredential(os.environ["GITHUB_TOKEN"]),
model_info={"json_output": False, "function_calling": False, "vision": False, "family": "unknown"},
)
result = await client.create([UserMessage(content="Summarize this CVE.", source="user")])
Wrap any model client with zero-config in-memory caching to avoid redundant LLM calls during repeated queries.
python
from autogen_ext.models.cache import ChatCompletionCache
from autogen_ext.models.openai import OpenAIChatCompletionClient
client = OpenAIChatCompletionClient(model="gpt-4o")
cached_client = ChatCompletionCache(client)
result = await cached_client.create([UserMessage(content="What is the capital of France?", source="user")])
print(result.content, result.cached) # False on first call, True on subsequent identical calls
›Adds dump_component() and load_component() to serialize/deserialize agent and team configurations to/from JSON, enabling persistent sessions across server-client interactions.
›Introduces AzureAIChatCompletionClient in autogen_ext.models.azure for Azure- and GitHub-hosted models including Phi-4, Mistral, and Cohere.
›Adds --rich flag to the m1 CLI for pretty-printed, colorized console output via the Rich library.
›Adds a default in-memory store to ChatCompletionCache, enabling model call caching without configuring an external cache service.
›Adds description field support in dump_component() output for richer component metadata.
3 more releases in this issue
· 2025-01-10 → 2025-01-29
AutoGen v0.4.3 adds model response caching, GraphRAG tools, Semantic Kernel adapters, Jupyter execution, and agent memory.
└──▷ GET THIS VERSION
$ git clone --branch v0.4.3 https://github.com/microsoft/autogen.git
# already have the repo? check out this version:$ git checkout v0.4.3
└──▷ USE IT
Cache OpenAI completions to disk so repeated identical prompts are served instantly without additional API calls.
python
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.models.cache import ChatCompletionCache, CHAT_CACHE_VALUE_TYPE
from autogen_ext.cache_store.diskcache import DiskCacheStore
from autogen_core.models import UserMessage
from diskcache import Cache
import asyncio
async def main():
openai_client = OpenAIChatCompletionClient(model="gpt-4o")
cache_store = DiskCacheStore[CHAT_CACHE_VALUE_TYPE](Cache("/tmp/autogen-cache"))
cache_client = ChatCompletionCache(openai_client, cache_store)
response = await cache_client.create([UserMessage(content="Summarise zero-trust networking.", source="user")])
print(response) # live response
response = await cache_client.create([UserMessage(content="Summarise zero-trust networking.", source="user")])
print(response) # served from disk cache
asyncio.run(main())
Give an agent global GraphRAG search capability to answer broad, dataset-wide questions from an indexed knowledge graph.
python
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.graphrag import GlobalSearchTool
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.ui import Console
import asyncio
async def main():
global_tool = GlobalSearchTool.from_settings(settings_path="./settings.yaml")
agent = AssistantAgent(
name="search_assistant",
tools=[global_tool],
model_client=OpenAIChatCompletionClient(model="gpt-4o-mini"),
system_message="Use global_search for broad questions about the dataset.",
)
await Console(agent.run_stream(task="What are the main themes across all community reports?"))
asyncio.run(main())
›Adds ChatCompletionCache to wrap any ChatCompletionClient and transparently cache model completions, with DiskCacheStore and RedisStore backends via a new CacheStore interface.
›Adds LocalSearchTool and GlobalSearchTool for GraphRAG integration, enabling agents to call local and global graph-based retrieval as first-class tools.
›Adds SKChatCompletionAdapter to adapt any Semantic Kernel AI Connector into an AutoGen ChatCompletionClient.
›Adds KernelFunctionFromTool adapter to expose AutoGen tools as Kernel functions inside a Semantic Kernel workflow.
›Adds JupyterCodeExecutor for local Jupyter-based code execution, restoring functionality from the 0.2 lineage.
+3 moreshow less
›Introduces a core Memory interface for agent memory and RAG; AssistantAgent now accepts a memory parameter to enrich context from a memory store.
›Expands declarative config support to termination conditions and base chat agents, moving toward full team-of-agents configuration from a single file.
›Adds sources field to TextMentionTermination for filtering by message source.
PydanticAI v0.0.20 adds Cohere model support, Anthropic streaming, parallel tool calls, and DeepSeek-R1 via Ollama.
└──▷ GET THIS VERSION
$ git clone --branch v0.0.20 https://github.com/pydantic/pydantic-ai.git
# already have the repo? check out this version:$ git checkout v0.0.20
└──▷ USE IT
Disable parallel tool calls when you need strict sequential tool execution, e.g. to avoid race conditions on shared state.
python
from pydantic_ai import Agent
from pydantic_ai.settings import ModelSettings
agent = Agent('openai:gpt-4o', model_settings=ModelSettings(parallel_tool_calls=False))
result = agent.run_sync('Book a flight and then a hotel')
›Adds parallel_tool_calls field to ModelSettings to control whether the model may invoke multiple tools simultaneously.
›Adds model_name field to ModelResponse, exposing which model produced each response.
›Adds support for Cohere models as a new model provider integration.
›Adds 'deepseek-r1' to the recognized Ollama model name list, enabling typed use of DeepSeek-R1 via Ollama.
›Adds Anthropic streaming support, enabling streamed responses from Anthropic models.
+2 moreshow less
›Adds support for user-role system prompts for o1-preview-2024-09-12 to work around that model's system-prompt restrictions.
›Adds direction control for Mermaid state diagram generation.
└──▷ BREAKING ON UPGRADE
!Removes from_text and from_tool_call utilities, which will break any code that imports or calls these methods.
PydanticAI v0.0.19 adds graph support, tool docstring controls, streaming refactor, and phi4 on Ollama.
└──▷ GET THIS VERSION
$ git clone --branch v0.0.19 https://github.com/pydantic/pydantic-ai.git
# already have the repo? check out this version:$ git checkout v0.0.19
›Adds docstring_format and require_parameter_descriptions parameters to tool definitions, giving callers explicit control over how tool schemas are generated from Python docstrings.
›Introduces graph support via pydantic_ai.graph, enabling stateful, multi-step agent workflows modelled as explicit graphs.
›Adds phi4 model support to the Ollama provider.
›Refactors streaming internals, improving the reliability and composability of streamed agent responses.
Override the expected result type for a single run without redefining the agent — useful for multi-step pipelines with varying output schemas.
python
result = await agent.run("Summarise this", result_type=MySummaryModel)
›Adds dynamic parameter to the system_prompt decorator, enabling system prompts to be re-evaluated on each agent run rather than computed once at definition time.
›Supports custom result_type overrides on individual .run() calls, allowing the expected output type to be set per-run without changing the agent definition.
›All model names are now prefixed with their provider (e.g. openai:gpt-4o) for consistency across providers.
└──▷ BREAKING ON UPGRADE
!All models are now prefixed with their provider name for consistency — any hardcoded unprefixed model strings passed to agents may need to be updated to the new provider-prefixed format.
Semantic Kernel Python 1.20.0 adds chat history reducers, prompt template config for agents, and an instruction_role parameter for reasoning models.
└──▷ GET THIS VERSION
$ git clone --branch python-1.20.0 https://github.com/microsoft/semantic-kernel.git
# already have the repo? check out this version:$ git checkout python-1.20.0
└──▷ USE IT
Use instruction_role='developer' when targeting OpenAI reasoning models so that system messages are sent as developer-role messages.
›Adds instruction_role keyword argument to OpenAIChatCompletion and AzureChatCompletion, converting AuthorRole.SYSTEM messages to AuthorRole.DEVELOPER before sending to the model — enabling correct behavior with reasoning models like o1.
›Replaces ChatCompletionAgent's execution_settings constructor parameter with KernelArguments(settings=<execution_settings>), enabling use of the AI Service Selector inside ChatCompletionAgent.
›Adds Chat History Reducer support, allowing agents and chat completion flows to summarize or truncate history, including preservation of FunctionCallContent and FunctionResultContent items.
›Adds prompt template config and KernelArguments support for ChatCompletionAgent and AssistantAgent, aligning Python agent templating with the .NET Agent Framework.
›Adds Deepseek service support in concept samples, demonstrating integration with the Deepseek model provider.
└──▷ BREAKING ON UPGRADE
!The ChatCompletionAgentexecution_settings constructor parameter has been removed; pass execution settings via KernelArguments(settings=<execution_settings>) instead.
5 more releases in this issue
· 2025-01-07 → 2025-01-29
Semantic Kernel dotnet-1.35.0 adds Azure AI Agent support, Ollama/Aspire integration, cloud-event scaffolding, and Gemini cached-content settings.
└──▷ GET THIS VERSION
$ git clone --branch dotnet-1.35.0 https://github.com/microsoft/semantic-kernel.git
# already have the repo? check out this version:$ git checkout dotnet-1.35.0
└──▷ USE IT
Cache a large system prompt with Gemini to avoid re-processing it on every call, reducing latency and token cost.
csharp
var settings = new GeminiPromptExecutionSettings
{
CachedContent = "cachedContents/my-cached-system-prompt"
};
var result = await kernel.InvokePromptAsync(prompt, new KernelArguments(settings));
›Adds CachedContent property to GeminiPromptExecutionSettings for controlling Gemini prompt caching behavior.
›Adds Azure AI Agent support via the Agents package (#10134), enabling Azure AI Foundry-hosted agents alongside existing agent types.
›Adds Ollama extension for improved .NET Aspire integration experience.
›Introduces SK Process Cloud Events publish interface abstractions and scaffolding, enabling cloud-event-driven process orchestration.
›Moves IChatHistoryReducer from the Agents package into core SK packages, broadening its availability across the library.
+2 moreshow less
›Updates ChatPromptParser to support zero-or-more text parts per message instead of a single value, enabling richer multi-part chat prompt construction.
›Adds improved auto-recovery logic for Azure OpenAI models under transient failures.
Semantic Kernel dotnet-1.34.0 adds Base64 image support for MistralAI, structured output schema for Google Gemini, and async streaming for Bedrock Converse.
└──▷ GET THIS VERSION
$ git clone --branch dotnet-1.34.0 https://github.com/microsoft/semantic-kernel.git
# already have the repo? check out this version:$ git checkout dotnet-1.34.0
›Adds support for Base64 encoded images in MistralAI connector, enabling inline image payloads without external URLs.
›Adds structured outputs (response schema) support for Google Gemini, allowing callers to constrain model responses to a defined schema.
›Adds async support for ConverseStreamResponse in the AWS Bedrock connector to avoid thread blocking during streaming.
›Adds a request index to streamed function call update content, enabling callers to correlate parallel streamed tool calls.
Semantic Kernel Python 1.19.0 adds DEVELOPER role support for OpenAI o1 models and agent invocation tracing spans.
└──▷ GET THIS VERSION
$ git clone --branch python-1.19.0 https://github.com/microsoft/semantic-kernel.git
# already have the repo? check out this version:$ git checkout python-1.19.0
›Adds agent invocation spans for observability tracing of agent calls.
›Supports the DEVELOPER role for OpenAI o1 models, enabling o1-compatible message construction.
Semantic Kernel Python 1.18.0 removes the deprecated OpenAI plugin and improves Azure assistant agent settings and retrieval.
└──▷ GET THIS VERSION
$ git clone --branch python-1.18.0 https://github.com/microsoft/semantic-kernel.git
# already have the repo? check out this version:$ git checkout python-1.18.0
›Improves Azure assistant agent settings and retrieval operations.
›Removes the deprecated OpenAI plugin, aligning the Python library with the .NET version.
└──▷ BREAKING ON UPGRADE
!The OpenAI plugin has been removed. Any code that relied on it will break on upgrade.
Semantic Kernel 1.33.0 adds strict mode for OpenAI, a Postgres vector store, OpenAPI response factory, and name-based agent strategies.
└──▷ GET THIS VERSION
$ git clone --branch dotnet-1.33.0 https://github.com/microsoft/semantic-kernel.git
# already have the repo? check out this version:$ git checkout dotnet-1.33.0
└──▷ USE IT
Attach metadata and a store reference to a prompt execution request, useful for tracing or persisting prompt state.
csharp
var settings = new OpenAIPromptExecutionSettings
{
Store = true,
Metadata = new Dictionary<string, string> { { "session", "abc123" } }
};
›Adds store and metadata properties to OpenAIPromptExecutionSettings for controlling prompt execution context.
›Adds strict mode support for OpenAI function calling via OpenAIPromptExecutionSettings.
›Adds a factory for customizing OpenAPI plugin responses, enabling per-operation response transformation.
›Adds PostgresVectorStore memory connector for vector similarity search backed by PostgreSQL.
›Adds support for name-based KernelFunctionSelectionStrategy and KernelFunctionTerminationStrategy in .NET Agents, allowing strategies to be resolved by function name.
+5 moreshow less
›Adds InnerContent metadata support to the Amazon Bedrock connector, exposing raw provider response data.
›Adds support for DateTime parameters in tools used with the Assistants API.
›Adds REST API operation URL, payload, and header customization via RestApiOperationRunner.
›Adds support for media types with parameters in REST API operation handling.
›Enables Mermaid flowchart code generation and image generation from flowcharts in Process framework.
›Adds viewport_expansion setting to control how much of the page is included in context, defaulting to slightly beyond the visible viewport; set it to the full page size to include all content.
›Adds highlight_elements setting (set to False) to suppress element highlight overlays in the browser view.
camel-ai v0.2.15 adds graph sampling via Neo4j, OpenBB and Linkup integrations, new benchmarks, native structured output, and a self-instruct pipeline.
└──▷ GET THIS VERSION
$ git clone --branch v0.2.15 https://github.com/camel-ai/camel.git
# already have the repo? check out this version:$ git checkout v0.2.15
›Adds native structured output property to ChatAgent, enabling schema-enforced responses without post-processing.
›Adds graph sampling support with Neo4j integration for graph-based retrieval workflows.
›Adds time-label support to the NebulaGraph integration.
›Integrates Linkup as a new data-source provider.
›Integrates OpenBB into the library for financial data access within agentic workflows.
+4 moreshow less
›Adds benchmarks API-Bank, APIBench, and Nexus to the benchmarks API.
›Adds a preliminary self-instruct pipeline for automated instruction-data generation.
›Refactors ChatAgent internals (PR #1142).
›Adds the o1datagen (CoTDataGenerator) core pipeline for chain-of-thought data generation.
smolagents v1.7.0 adds smolagent and webagent CLI commands, a persistent memory attribute, and an agent.replay() function.
└──▷ GET THIS VERSION
$ git clone --branch v1.7.0 https://github.com/huggingface/smolagents.git
# already have the repo? check out this version:$ git checkout v1.7.0
└──▷ TRY IT
Quickly kick off a web research task from the terminal without writing any Python.
$ webagent "Find me a cheap train from Paris to Torino before Thursday"
Replay the last agent run to inspect its reasoning steps without triggering new LLM calls.
python
agent.replay()
›Adds smolagent CLI command to run agents directly from the terminal (e.g. smolagent "Your task!").
›Adds webagent CLI command to launch a web browser agent from the terminal (e.g. webagent "Find me a cheap train from Paris to Torino before Thursday").
›Adds a memory attribute to agents for persistent storage of run history across steps.
›Adds agent.replay() method to replay the last agent run from stored memories without making additional LLM calls.
›Code execution outputs are now stored to memory even when an error is raised later, improving CodeAgent performance.
+1 moreshow less
›Supports third-party inference providers in HfApiModel.
6 more releases in this issue
· 2025-01-06 → 2025-01-31
›Adds ddgs_kwargs parameter to the DuckDuckGoSearchTool constructor, allowing callers to pass arbitrary keyword arguments to the underlying DDGS client.
›Adds additional parameters support for the OpenAI client integration.
›Adds kwargs passthrough to gradio launch, enabling full control over Gradio server startup options.
›TransformersModel now auto-detects Vision-Language Models (VLMs), removing the need for manual configuration when loading a VLM.
›Makes transformers an optional dependency, reducing the mandatory install footprint for users who do not need local transformer inference.
+1 moreshow less
›Gradio chatbot now displays step duration, step number, and token counts, and supports rendering nested thoughts.
Allow an agent to import any Python library inside its sandbox — helpful when tool code relies on arbitrary third-party packages.
python
from smolagents import CodeAgent, HfApiModel
agent = CodeAgent(
tools=[],
model=HfApiModel(),
additional_authorized_imports=['*']
)
agent.run('Use the requests library to fetch and parse the NVD feed.')
›Adds verbosity_level=0/1/2 parameter to agent initialization, replacing the old verbose=True/False boolean for finer-grained log control.
›Enables unrestricted code-sandbox imports via additional_authorized_imports=['*'] on agent initialization.
›Adds OpenTelemetry instrumentation support for tracing and inspecting agent runs.
›Adds multi-GPU support for TransformersModel.
›Adds file upload capability to GradioUI.
└──▷ BREAKING ON UPGRADE
!The verbose=True/False agent initialization parameter is replaced by verbosity_level=0/1/2; existing code using verbose= will need to be updated.
Autonomous coding agent as an SDK, IDE extension, or CLI assistant.
Cline v3.2.6 adds per-mode model memory, a context window progress bar, and new Advanced Settings for token/checkpoint control.
└──▷ GET THIS VERSION
$ git clone --branch v3.2.6 https://github.com/cline/cline.git
# already have the repo? check out this version:$ git checkout v3.2.6
›Saves the last used API/model per mode so Plan and Act can each remember their own model selection across switches.
›New context window progress bar in the task header shows token consumption, cost pressure, and when older messages are being dropped to stay within limits.
›New Advanced Settings panel lets users remove MCP prompts from requests to reduce token usage and enable/disable checkpoints independently of git.
2 more releases in this issue
· 2025-01-06 → 2025-01-30
Cline v3.1.0 adds workspace checkpoints with diff/restore, a post-task change summary, and per-task disk-usage tracking.
└──▷ GET THIS VERSION
$ git clone --branch v3.1.0 https://github.com/cline/cline.git
# already have the repo? check out this version:$ git checkout v3.1.0
›Adds workspace checkpoints: every tool use snapshots the workspace so you can Compare (diff vs. current state) or Restore (task+workspace, task only, or workspace only) at any hover point.
›Adds a 'See new changes' button on task completion, giving a consolidated diff overview of all workspace changes since the last 'Task Completed' — useful when Auto-approve is enabled.
›Adds per-task disk-usage display and a delete button so you can manage the git-backed checkpoint storage consumed by each task.
OpenHands 0.21 adds trajectory replay, downloadable trajectories, multi-language UI, and a dedicated draft-editor LLM config.
└──▷ GET THIS VERSION
$ git clone --branch 0.21.0 https://github.com/All-Hands-AI/OpenHands.git
# already have the repo? check out this version:$ git checkout 0.21.0
└──▷ HOW TO FIND IT
Route edit-draft generation to a cheaper or faster model while keeping your primary LLM for reasoning — set the draft_editor custom LLM config and enable the LLM editor in agent options.
📍In Settings, add a custom LLM configuration named draft_editor pointing to your preferred model, then enable codeact_enable_llm_editor in the agent options.
Cap compute cost on o1-family models by setting reasoning_effort to a lower tier for less complex tasks.
📍In Settings › LLM, select an o1-family model and set reasoning_effort to low (or medium/high) to trade off reasoning depth against token cost.
›Adds multi-language UI support, broadening accessibility for non-English practitioners.
›Supports the reasoning_effort parameter for OpenAI o1-family models, giving control over model reasoning depth.
›Introduces a draft_editor named custom LLM config so a separate, dedicated model can handle edit drafts independently of the primary LLM.
›Adds trajectory replay in headless mode, enabling automated re-execution of recorded agent sessions.
›Adds a chat-panel button to download the current agent trajectory for offline review or auditing.
+1 moreshow less
›Agent now explicitly receives the cloned repo name and path when connecting to a GitHub repository, improving context awareness.
└──▷ BREAKING ON UPGRADE
!The trajectories_path config key is renamed to save_trajectory_path; existing configurations using trajectories_path will break on upgrade.
›Adds runtime size configuration, letting users tune the sandbox compute footprint per session.
└──▷ BREAKING ON UPGRADE
!Developer mode now defaults to storing data on the filesystem instead of in-memory, which changes persistence behavior for existing developer-mode deployments.
$ git clone --branch 0.18.0 https://github.com/All-Hands-AI/OpenHands.git
# already have the repo? check out this version:$ git checkout 0.18.0
└──▷ HOW TO FIND IT
Customize the agent's system prompt for a specific repository so it follows project-specific conventions on every run.
📍In your repository root, create a .openhands directory and add your prompt customization files there. OpenHands will automatically detect and apply them when operating on that repo.
›Adds .openhands directory support for customizing agent prompts on a per-repository basis.
›Introduces a resizable and collapsible panel layout in the UI for a more flexible workspace.
›Enables workspace downloads on mobile and browsers lacking the Directory API.
›Migrates settings storage from browser localStorage to the server API, enabling persistent settings across devices and browsers.
›Adds navbar tooltips for improved UI discoverability.
└──▷ BREAKING ON UPGRADE
!File editing functionality has been removed from the OpenHands UI — workflows that relied on in-UI file editing must use an alternative method.
›Adds workspace::OpenFiles action to enable opening individual files on Linux and Windows.
›Adds app_menu::OpenApplicationMenu action with keyboard navigation for menus on Linux, bindable via the user keymap.
›Adds fine-grained control of scrollbar diagnostic indicators.
›Adds support for Google's Gemini 2.0 Flash experimental model.
›Adds support for the Claude 3.5 Haiku model.
+14 moreshow less
›Adds the ability to specify additional beta headers for custom Anthropic models.
›Adds Vim aq/iq 'any quote' text objects (smallest of a", a', or a\).
›Adds Vim g JJoinLines and JoinLinesNoWhitespace commands.
›Adds Emacs keybindings including alt-; Toggle Comments, alt-^ Join Lines, ctrl-/ Undo, alt-. GotoDefinition, alt-, GoBack, alt-</alt-> Goto End/Beginning of Buffer, alt-g g / alt-g alt-g Goto Line Number, ctrl-x h SelectAll, ctrl-x b Switch Tabs, ctrl-g Menu::cancel, ctrl-x 5 0 CloseWindow, and ctrl-x 5 2 workspace::NewWindow.
›Sets TERM to xterm-256color in Zed's built-in terminal.
›Improves debug: open language server logs to display more language server data.
›Improves ExpandExcerpts action (shift+enter) to expand all excerpts that have selected text, not just those containing the end of a selection.
›Supports diagnostic navigation in multibuffers.
›Improves support for file:// URLs with line numbers in the Zed terminal.
›Improves RemoveFromProject action to remove all selected items.
›Adds auto-focus for the docked terminal on load when no other item is focused.
›Adds Python detection for pixi-environments.
›Improves Tree-sitter support with added compatibility for standard injections captures.
›Improves support for Phi4 with Ollama.
└──▷ BREAKING ON UPGRADE
!The OpenFile action is renamed to OpenSelectedFilename; any keybindings or automation referencing OpenFile will break.
!<tab> at the start of a line when an inline completion (Copilot, Supermaven, …) is visible now indents the line instead of accepting the completion when the cursor is before the suggested indentation.
Zed v0.168.2 adds Linux menus, sticky multibuffer headers, OpenAI o1 Copilot support, and new vim/terminal capabilities.
└──▷ GET THIS VERSION
$ git clone --branch v0.168.2 https://github.com/zed-industries/zed.git
# already have the repo? check out this version:$ git checkout v0.168.2
›Adds workspace::ToggleRightDock behavior change: now opens the assistant panel when no right-dock panel has previously been activated.
›Adds terminal::ToggleViMode action (bound by default to ctrl-shift-space) to enable Alacritty vi-mode arrow key movement across more keyboard layouts in the Zed terminal.
›Adds keybinds cmd-k e / cmd-k t (macOS) and ctrl-k e / ctrl-k t (Linux) for 'Close Left' / 'Close Right' tab actions.
›Adds support for OpenAI o1 model (non-preview) in GitHub Copilot Chat.
›Adds block comment syntax <!-- and --> for Markdown files.
+8 moreshow less
›Adds menus on Linux.
›Multibuffer headers now stick to the top of the viewport while scrolling.
›Multibuffer diagnostic excerpts can now be expanded.
›Clicking line numbers in multibuffers jumps the cursor to that location in the file; keybinds for 'jump to file/location' and 'expand excerpt' are now shown.
›Terminal: cmd-n now opens a new terminal instead of a new file.
›Adds support for searching the command palette using keymap-style action names.
›Adds syntax highlighting for the JavaScript using keyword.
›Adds support for find and replace in diagnostics, enabling vim search bindings such as * and # to work in diagnostics.
›Multibuffers now support folding (hiding) results from a given file or buffer.
›Inline completions (Copilot, Supermaven, etc.) are now shown simultaneously with the completion menu; accept inline completion with <shift-tab> and menu entry with <tab>.
›Adds .prettierignore support to the Prettier integration.
›Adds a Restart button to the Inline Assistant when the prompt is unchanged.
›Suggests the Cython extension for syntax highlighting of .pyx, .pxd, and .pxi files.
›Adds OuteTTS text-to-speech via --ttsmodel (OuteTTS GGUF) and --ttswavtokenizer (WavTokenizer GGUF) flags; --ttsgpu offloads models to GPU and --ttsthreads sets a custom thread count.
›Adds --analyze CLI flag (also in the GUI Extras tab) to inspect any GGUF file, displaying metadata, tensor names, dimensions, and types.
›Adds --sdnotile flag to disable VAE tiling for image generation, eliminating bleeding graphical artifacts on some GPUs.
›Adds --usemmap flag to opt in to memory-mapped loading; mmap is no longer enabled by default.
›OuteTTS integration exposes OpenAI Speech API (OpenAiSpeechApi) and XTTS API (XttsApi) compatibility endpoints for hooking KoboldCpp TTS into existing TTS frontends.
+6 moreshow less
›OuteTTS New Speaker Synthesis lets you generate unique voices by entering a random name; supports v0.2 and v0.3 models (500M and 1B).
›Extends TAESD (compressed to fp8, ~3 MB) to SD3 and Flux via --sdvaeauto or 'AutoFix VAE' in the GUI.
›Increases max supported images per API request for Multimodal Vision from the previous limit to 8.
›Enables multilingual Whisper (Voice Recognition) support with specific language codes, selectable via a 2-character code (e.g. ja, fr) in Kobold Lite.
›KoboldCpp now displays all enabled capabilities and API endpoints on launch, listing modules such as TextToSpeech, VoiceRecognition, MultimodalVision and APIs such as OpenAiSpeechApi, XttsApi, WhisperTranscribeApi.
›CLBlast (Older CPU) build no longer requires AVX, extending GPU-assisted inference to very old or low-cost systems.
└──▷ BREAKING ON UPGRADE
!mmap is no longer enabled by default; existing setups relying on memory-mapped model loading must now explicitly pass --usemmap or enable it in the GUI.
1 more release in this issue
· 2025-01-04 → 2025-01-18
KoboldCpp v1.81.1 adds local WebSearch augmentation via DuckDuckGo, a heuristic chat-template guesser, and browser-based RAG via TextDB.
└──▷ GET THIS VERSION
$ git clone --branch v1.81.1 https://github.com/LostRuins/koboldcpp.git
# already have the repo? check out this version:$ git checkout v1.81.1
└──▷ TRY IT
Start KoboldCpp with web-search augmentation enabled so every generation request can be enriched with live DuckDuckGo results.
$ koboldcpp.exe --model mymodel.gguf --websearch
Enable browser-based RAG for a long threat-intelligence document without needing an embedding model.
📍In Kobold Lite, go to Context › TextDB tab, paste your threat-intel document, then send prompts normally — relevant chunks will be injected into context automatically.
›Adds --websearch CLI flag (and GUI toggle) to enable KoboldCpp as a local WebSearch proxy, powered by DuckDuckGo, augmenting model queries with live web results.
›Adds /api/extra/websearch endpoint for submitting web-search-augmented queries directly to the running KoboldCpp instance.
›Adds TextDB Document Lookup in Kobold Lite (Context > TextDB tab), a browser-based RAG layer using lunr/minisearch to chunk, store, and retrieve relevant snippets from a pasted text document at inference time — no embedding model required.
›Switches Kobold Lite autosaves and save slots from localStorage to indexedDb, significantly increasing the maximum supported browser save size; existing localStorage data is auto-migrated on first launch.
›Expands supported resolutions and aspect ratios for generated and uploaded images, and improves multimodal image handling quality for larger, more detailed images.
└──▷ BREAKING ON UPGRADE
!Windows builds now require explicit target flags (e.g. make LLAMA_PORTABLE=1 LLAMA_VULKAN=1 LLAMA_CLBLAST=1) where previously a bare make was sufficient — existing Windows build scripts will break without updating.
!Kobold Lite save data written to indexedDb in v1.81.1 cannot be read by older versions of KoboldAI Lite.
›Exposes cache_type_k and cache_type_v llama.cpp config keys to enable quantization of the KV cache, reducing VRAM usage for large models.
›Supports reading Jinja templates directly from GGUF model files, eliminating the need for separate template configuration.
›Streams token usage statistics alongside generated tokens during inference.
›Adds UI path prefix support via HTTP header, enabling reverse-proxy deployments at non-root paths.
›Allows skipping driver installation in the Dockerfile build process.
+2 moreshow less
›Enables resuming partial downloads when fetching models, avoiding full re-downloads on interrupted transfers.
›Adds a large batch of new models to the model gallery, including phi-4, phi-3.5-moe-instruct, llama-3.3-70b-instruct, qwen2-vl-72b-instruct, qvq-72b-preview, falcon3 series (1b/3b/7b/10b), dolphin3.0 series, and many others.
Adds 'Continue' and 'Remove' chat buttons, strftime_now in JINJA, and smarter installer caching in v2.4
└──▷ GET THIS VERSION
$ git clone --branch v2.4 https://github.com/oobabooga/textgen.git
# already have the repo? check out this version:$ git checkout v2.4
›Adds 'Continue' and 'Remove' buttons below the last chat message in the UI for quick in-place edits.
›Adds strftime_now to JINJA template support, enabling LLAMA 3.1, 3.2, and Granite model chat templates to render correctly.
›Installer now skips re-downloading .whl requirements during updates unless the files or local repo commit have changed, speeding up updates after manual branch switches.
›Adds a descriptive error message when llama.cpp fails to load a model, prompting users to lower the context length.
›Extends OpenAI-compatible leniency to SillyTavern API clients.
2 more releases in this issue
· 2025-01-09 → 2025-01-29
oobabooga text-gen v2.3 cuts Chat tab CPU usage via morphdom incremental rendering and adds per-message copy/regenerate buttons.
└──▷ GET THIS VERSION
$ git clone --branch v2.3 https://github.com/oobabooga/textgen.git
# already have the repo? check out this version:$ git checkout v2.3
›Adopts the morphdom library for incremental DOM updates in the Chat tab during streaming, drastically reducing CPU usage on long contexts or high token throughput and keeping the UI responsive.
›Enables text and code selection/copying from previous chat messages while a reply is still streaming, since only changed elements are updated.
›Adds a 'copy raw message content' button below each chat message.
›Adds a 'regenerate reply' button below the last chat message.
›Activates auto_max_new_tokens by default, removing the need to manually continue replies every 512 tokens.
vLLM v0.7.0 ships a rewritten V1 engine, torch.compile by default, new LLM methods, Flash Attention 3, and a Rerank API
└──▷ GET THIS VERSION
$ git clone --branch v0.7.0 https://github.com/vllm-project/vllm.git
# already have the repo? check out this version:$ git checkout v0.7.0
└──▷ TRY IT
Enable torch.compile optimizations on the V0 engine when V1 is not yet suitable for your deployment.
$ vllm serve meta-llama/Llama-3.1-8B-Instruct -O3
Use the new LLM lifecycle methods to pause a model during post-training, free GPU memory, then resume — useful in RLHF or fine-tuning loops.
python
from vllm import LLM
llm = LLM(model='meta-llama/Llama-3.1-8B-Instruct')
llm.sleep() # release GPU resources between training steps
# ... run optimizer step ...
llm.wake_up() # restore model for next inference pass
llm.reset_prefix_cache() # clear stale KV cache after weight update
›Enables the new V1 engine by setting the VLLM_USE_V1=1 environment variable — a fully rewritten engine focused on performance and architectural simplicity.
›Adds torch.compile integration, enabled by default in V1 and toggleable via the -O3 engine parameter in the existing engine.
›Adds LLM.sleep, LLM.wake_up, LLM.collective_rpc, and LLM.reset_prefix_cache methods to the LLM class for post-training framework integration.
›Adds a new collective_rpc distributed abstraction for coordinating across workers.
›Adds Jina- and Cohere-compatible Rerank API to the API server.
+15 moreshow less
›Adds Flash Attention 3 kernel support.
›Adds native macOS Apple Silicon support.
›Adds TPU support for W8A8 quantization format.
›Adds x86 Multi-LoRA and MoE support.
›Adds AMD MI300 FP8 format for block quantization, tuned MoE configurations, and a block size heuristic delivering an average 2.8x speedup for int8 models.
›Adds support for torchrun and SPMD-style offline inference.
›Adds Punica prefill kernel fusion.
›Adds new generative model support: CogAgent, Deepseek-VL2, fairseq2 Llama, InternLM3, and Whisper.
›Adds new pooling model support: Qwen2 PRM and InternLM2 reward models.
›Adds merged multi-modal processor for VLMs, automatically supported by the V1 engine for any model implementing get_*_embeddings methods.
Ollama v0.5.5 adds 8 new models including DeepSeek-V3 and Phi-4, plus a faster /api/create endpoint that now accepts JSON.
└──▷ GET THIS VERSION
$ git clone --branch v0.5.5 https://github.com/ollama/ollama.git
# already have the repo? check out this version:$ git checkout v0.5.5
›Adds Phi-4 (14B, Microsoft) to the model library.
›Adds Command R7B (Cohere) for efficient inference on commodity GPUs and edge devices.
›Adds DeepSeek-V3, a 671B MoE model with 37B parameters activated per token.
›Adds OLMo 2 (7B and 13B) trained on up to 5T tokens.
›Adds Dolphin 3, a general-purpose instruct-tuned model supporting coding, math, agentic, and function-calling use cases.
+4 moreshow less
›Adds SmallThinker, a small reasoning model fine-tuned from Qwen 2.5 3B Instruct.
›Adds Granite 3.1 Dense (2B and 8B) from IBM, trained on over 12 trillion tokens.
›Adds Granite 3.1 MoE (1B and 3B) from IBM, designed for low-latency long-context inference.
›Updates the /api/create endpoint to improve model conversion speed and accept a JSON object body.
└──▷ BREAKING ON UPGRADE
!The /api/create API endpoint (used by ollama create) is not backwards compatible: both the Ollama server and the ollama CLI must be version 0.5.5 or later, and the Python/JavaScript ollama library must be updated to the latest version when calling ollama.create.
Triton v2.54.0 adds Blackwell GPU support, vLLM ZMQ engine comms, and major GenAI-Perf expansions including a new 'analyze' subcommand.
└──▷ GET THIS VERSION
$ git clone --branch v2.54.0 https://github.com/triton-inference-server/server.git
# already have the repo? check out this version:$ git checkout v2.54.0
└──▷ TRY IT
Send a fixed number of requests with a custom auth header to a secured inference endpoint during CI load testing.
›GenAI-Perf gains --num-system-prompts and --system-prompt-length flags to create a prefix pool that emulates system prompts in benchmarking runs.
›GenAI-Perf gains --request-count to send a specific number of requests and --header to attach custom headers to every request.
›GenAI-Perf gains a new analyze subcommand (migrated from Model Analyzer) to sweep configurations and find the optimal model setup.
›GenAI-Perf gains a compare subcommand that accepts a custom tokenizer for comparing multiple benchmark profiles.
›GenAI-Perf now reports time-to-second-token and request count as first-class metrics.
+6 moreshow less
›GenAI-Perf now surfaces more detailed errors when OpenAI frontends return an error or metric generation fails.
›GenAI-Perf now provides the exact input sequence length requested for synthetic text generation.
›vLLM backend can now communicate with the vLLM engine via ZMQ, enabling vLLM v0.6 performance improvements.
›Supports Blackwell GPU architectures starting with this release.
›The vLLM container shipped with Triton is now NVIDIA-optimized; users who prefer the public vLLM build can continue to construct their own Triton-vLLM container.
›Triton Windows beta release now includes CUDA context sharing support in the TensorRT Backend.
phoenix.otel gains automatic gRPC port inference from environment and an explicit OTEL protocol override.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-otel-v0.7.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-otel-v0.7.0
›Adds explicit OTEL protocol override support to phoenix.otel, letting callers force a specific transport protocol rather than relying on defaults.
›phoenix.otel now infers the gRPC port from the environment automatically, removing the need to hard-code port values when a relevant env var is set.
6 more releases in this issue
· 2025-01-03 → 2025-01-22
Phoenix v7.9.0 adds support for OpenAI o1 developer messages and the reasoning parameter.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v7.9.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v7.9.0
›Adds support for o1 developer messages and the reasoning parameter in OpenAI o1 model integrations.
$ git clone --branch arize-phoenix-v7.8.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v7.8.0
›Improves user-facing error display for GraphQL mutations, making error messages more readable in the UI.
Phoenix Evals 0.19.0 adds audio evaluation support to llm_classify().
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-evals-v0.19.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-evals-v0.19.0
›Adds audio evals and a data processor to llm_classify(), enabling evaluation of audio-based LLM inputs.
Arize Phoenix 7.7.0 adds experiment run filtering on the compare experiments page.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v7.7.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v7.7.0
›Adds experiment run filter to the compare experiments page, enabling side-by-side comparison of specific runs across experiments.
Phoenix playground now supports anyOf JSON schema for structured output definitions.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v7.6.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v7.6.0
›Adds anyOf JSON schema support in the playground for defining structured LLM outputs.
Phoenix v7.4.0 adds a token breakdown view in the project header UI.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v7.4.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v7.4.0
›Shows a breakdown of tokens in the project header for at-a-glance token usage visibility.
LanceDB v0.15.1-beta.1 adds distance_type() and metric() alias to Python sync query builders
└──▷ GET THIS VERSION
$ git clone --branch v0.15.1-beta.1 https://github.com/lancedb/lancedb.git
# already have the repo? check out this version:$ git checkout v0.15.1-beta.1
›Adds distance_type() parameter to Python sync query builders, plus metric() as an alias, for specifying vector distance metrics at query time.
9 more releases in this issue
· 2025-01-06 → 2025-01-28
LanceDB python-v0.18.1-beta.2 adds distance_type() and metric() alias to sync query builders.
└──▷ GET THIS VERSION
$ git clone --branch python-v0.18.1-beta.2 https://github.com/lancedb/lancedb.git
# already have the repo? check out this version:$ git checkout python-v0.18.1-beta.2
└──▷ USE IT
Set the distance metric on a synchronous vector query to use cosine similarity instead of the index default.
›Adds distance_type() parameter to Python sync query builders, plus metric() as an alias, for controlling vector distance calculations inline with query construction.
LanceDB python-v0.18.1-beta.1 adds a drop_index() method for programmatic index removal.
└──▷ GET THIS VERSION
$ git clone --branch python-v0.18.1-beta.1 https://github.com/lancedb/lancedb.git
# already have the repo? check out this version:$ git checkout python-v0.18.1-beta.1
└──▷ USE IT
Remove a vector index from a table when you want to rebuild it with different parameters or free resources.
python
table.drop_index("index_name")
›Adds drop_index() method to tables, enabling programmatic removal of vector indexes.
LanceDB v0.15.1-beta.0 adds a drop_index() method and upgrades the Lance storage engine to v0.23.0-beta.2.
└──▷ GET THIS VERSION
$ git clone --branch v0.15.1-beta.0 https://github.com/lancedb/lancedb.git
# already have the repo? check out this version:$ git checkout v0.15.1-beta.0
└──▷ USE IT
Remove a vector index from a table when you want to rebuild it with different parameters or free resources.
python
table.drop_index("vector_idx")
›Adds drop_index() method to tables, enabling programmatic removal of vector indexes.
›Upgrades the underlying Lance storage engine to v0.23.0-beta.2, incorporating the latest storage improvements.
LanceDB v0.15.0 adds hybrid search to Node/Rust SDKs, distance thresholds and ranges, multivector type, and flips default filtering to prefiltering.
└──▷ GET THIS VERSION
$ git clone --branch v0.15.0 https://github.com/lancedb/lancedb.git
# already have the repo? check out this version:$ git checkout v0.15.0
└──▷ USE IT
Stream query results directly into a Polars DataFrame in the Python async API for downstream analysis.
python
result = await table.query().nearest_to(vector).to_polars()
›Adds to_polars method to AsyncQueryBase in Python, returning query results as a Polars DataFrame.
›Adds flatten method to AsyncQuery in Python for flattening nested query results.
›Supports .rerank() on non-hybrid queries in the Python Async API.
›Adds hybrid search to Node and Rust SDKs.
›Supports vector search with distance thresholds, enabling results to be filtered by a maximum distance value.
+6 moreshow less
›Supports distance range filtering in queries, allowing minimum and maximum distance bounds.
›Supports inserting and upserting subschemas in Python, allowing partial-schema writes without providing all columns.
›Adds IVF_FLAT index creation on remote tables (Python and Rust SDKs).
›Exposes dataset config for inspection and configuration of underlying Lance datasets.
›Supports multivector type, enabling columns that store multiple vectors per row.
›Upgrades underlying Lance dependency to v0.22.0.
└──▷ BREAKING ON UPGRADE
!The default filtering mode for sync Python changed from postfiltering to prefiltering; existing queries that relied on postfiltering behavior will now behave differently without explicit configuration.
LanceDB python-v0.18.0 adds distance thresholds, multivector support, hybrid search in Node/Rust, and to_polars for async queries.
└──▷ GET THIS VERSION
$ git clone --branch python-v0.18.0 https://github.com/lancedb/lancedb.git
# already have the repo? check out this version:$ git checkout python-v0.18.0
└──▷ USE IT
Return async vector search results directly as a Polars DataFrame for downstream analysis.
›Adds .to_polars() method to AsyncQueryBase for returning async query results as Polars DataFrames.
›Adds .flatten() method to AsyncQuery for flattening nested struct columns in async query results.
›Adds .rerank() support on non-hybrid queries in the Async API.
›Supports vector search with distance thresholds, letting queries filter results by a maximum distance value.
›Supports distance range filtering in queries, enabling min/max distance bounds on vector search results.
+6 moreshow less
›Supports inserting and upserting subschemas, allowing partial-schema writes without specifying all columns.
›Adds IVF_FLAT index creation support on remote tables (Python and Rust SDKs).
›Adds hybrid search to the Node and Rust SDKs.
›Supports multivector type for indexing and querying multi-vector embeddings.
›Exposes dataset config via the API, making underlying Lance dataset configuration accessible.
›Default filtering mode for sync Python changes from postfiltering to prefiltering.
└──▷ BREAKING ON UPGRADE
!The default filtering mode for sync Python changed from postfiltering to prefiltering; existing queries that relied on postfiltering behavior will now produce different result counts.
!Insert and upsert operations now support subschemas — callers passing full schemas where column sets no longer match may see changed behavior.
LanceDB python-v0.18.0-beta.0 adds distance-range queries, subschema upserts, reranking on non-hybrid queries, and switches sync Python to prefiltering by default.
└──▷ GET THIS VERSION
$ git clone --branch python-v0.18.0-beta.0 https://github.com/lancedb/lancedb.git
# already have the repo? check out this version:$ git checkout python-v0.18.0-beta.0
›Adds to_polars() method to AsyncQueryBase, enabling direct Polars DataFrame output from async queries.
›Adds flatten to AsyncQuery, allowing nested struct columns to be flattened in async query results.
›Adds .rerank() support on non-hybrid queries in the Async API, extending reranking beyond hybrid search.
›Supports distance range filtering in queries, letting callers bound results by minimum and maximum vector distances.
›Supports inserting and upserting subschemas, so partial-schema data can be written without supplying all columns.
+1 moreshow less
›Exposes dataset config, making underlying dataset configuration accessible from the Python API.
└──▷ BREAKING ON UPGRADE
!The default filtering mode for sync Python queries has changed from postfiltering to prefiltering; existing queries that relied on postfiltering behavior will now produce different results unless prefilter is explicitly set.
!Inserting and upserting subschemas changes how partial-schema writes are handled; existing insert/upsert code that depended on strict full-schema enforcement may need review.
LanceDB v0.15.0-beta.0 adds distance range queries, subschema upserts, reranking on non-hybrid queries, and switches default filtering to prefiltering.
└──▷ GET THIS VERSION
$ git clone --branch v0.15.0-beta.0 https://github.com/lancedb/lancedb.git
# already have the repo? check out this version:$ git checkout v0.15.0-beta.0
└──▷ USE IT
Return async vector search results directly as a Polars DataFrame instead of Arrow or Pandas.
›Adds to_polars() method to AsyncQueryBase for returning async query results as Polars DataFrames.
›Adds flatten support to AsyncQuery for flattening nested struct columns in async query results.
›Adds .rerank() support on non-hybrid queries in the Async API, extending reranking beyond hybrid search.
›Adds support for distance range filtering in vector queries, enabling min/max distance bounds on ANN results.
›Adds support for inserting and upserting subschemas, allowing partial-schema writes without specifying all columns.
+1 moreshow less
›Exposes dataset config through the LanceDB API.
└──▷ BREAKING ON UPGRADE
!The default filtering mode for sync Python API changes from postfiltering to prefiltering; existing queries that relied on postfiltering behavior will now behave differently without explicit configuration.
!Inserting and upserting subschemas changes how partial-schema inserts are handled in the Python API; existing code that inserted data with mismatched schemas may behave differently.
LanceDB v0.14.2-beta.0 adds hybrid search to Node and Rust SDKs, IVF_FLAT on remote tables, and vector search distance thresholds.
└──▷ GET THIS VERSION
$ git clone --branch v0.14.2-beta.0 https://github.com/lancedb/lancedb.git
# already have the repo? check out this version:$ git checkout v0.14.2-beta.0
›Supports vector search with distance thresholds, allowing searches to filter results beyond a maximum distance cutoff.
›Adds IVF_FLAT index creation on remote tables, available in both the primary SDK and the Rust SDK.
›Adds hybrid search capability to the Node and Rust SDKs, combining vector and full-text search in a single query.
LanceDB python-v0.17.2-beta.2 adds distance threshold filtering for vector search queries.
└──▷ GET THIS VERSION
$ git clone --branch python-v0.17.2-beta.2 https://github.com/lancedb/lancedb.git
# already have the repo? check out this version:$ git checkout python-v0.17.2-beta.2
›Supports distance thresholds in vector search, letting queries filter out results beyond a maximum distance from the query vector.
Qdrant v1.13.2 adds GPU support for devices without half-float capability, falling back to full floats.
└──▷ GET THIS VERSION
$ git clone --branch v1.13.2 https://github.com/qdrant/qdrant.git
# already have the repo? check out this version:$ git checkout v1.13.2
›Adds support for GPUs that do not feature half floats, automatically falling back to full floats to enable indexing on a broader range of GPU hardware.
2 more releases in this issue
· 2025-01-08 → 2025-01-28
Qdrant v1.13.0 adds GPU-accelerated HNSW indexing, runtime resharding, strict mode, and a new Has Vector filter condition.
└──▷ GET THIS VERSION
$ git clone --branch v1.13.0 https://github.com/qdrant/qdrant.git
# already have the repo? check out this version:$ git checkout v1.13.0
›Adds has vector filtering condition to check whether a named vector is present on a point, enabling queries that target only partially-vectorized records.
›Adds strict mode to collections to restrict certain categories of operations, giving operators tighter control over collection behaviour.
›Allows max_optimization_threads to be set back to automatic after being manually configured.
›Adds GPU support for HNSW indexing, dramatically accelerating index build times.
›Adds runtime resharding in Qdrant Cloud, allowing the number of shards on a collection to be changed without downtime.
+4 moreshow less
›Switches payload storage to mmap by default, reducing unexpected latency spikes.
›Switches sparse vector storage to mmap, improving resource management.
›Compresses HNSW graph links to reduce memory footprint.
›Streams snapshots during snapshot transfer instead of writing them to disk first, reducing I/O overhead.
└──▷ BREAKING ON UPGRADE
!Payload storage now defaults to mmap; existing deployments will use the new default on upgrade, which may change memory and disk I/O behaviour.
!Sparse vector storage now defaults to mmap; existing deployments will use the new default on upgrade.
›Adds getTriggerInfo and getTriggerConfig methods to the trigger interface for querying trigger metadata.
›Exposes .apps, .actions, .triggers, and .connectedAccounts directly on toolset classes.
›Exposes ComposioToolset from index.ts for top-level imports.
›Adds a new typed API client with full type definitions.
›All errors are now instances of ComposioError, each carrying an error.error_code property for programmatic debugging.
+4 moreshow less
›Adds support for frontend frameworks including React server components.
›Reduces bundle size from 10 MB to 400 KB, enabling use in browser and edge environments.
›Adds improved format for PreProcessor, PostProcessor, and SchemaProcessor types.
›Adds Zod-based early validation and improved type safety across the SDK.
└──▷ BREAKING ON UPGRADE
!Support for local and Docker workspaces has been removed; any code referencing workspace configurations will break.
!In toolset.createAction, the params argument is renamed to inputParams, and the callback signature now receives params as its argument and must return { successful: boolean, data: object } instead of a plain string. Callers using the old params key or returning plain strings must migrate.