CHANGELOG.md on GitHub. The library follows Semantic Versioning.
gwenflow 1.6.0
Durable execution with Temporal.
pip install "gwenflow[temporal]", then Agent(..., durability=TemporalDurability()) or Flow.from_file(..., durability=TemporalDurability()): inside a Temporal workflow, model requests, tool calls, compaction and flow nodes run as activities, and a run survives crashes and restarts. AgentWorkflow waits durably for tool approvals, DurableFlow runs a flow definition with its progress as a query, ClaimCheckCodec keeps large payloads out of the history, and worker_options() configures the worker. Outside a workflow nothing changes. See Durable execution.Flows return their results and run in parallel. Flow.run(), Flow.arun() and FlowRunner.run() return every node’s result, keyed by node name; independent branches run in parallel; nodes take settings (timeout, retries) and credentials (environment variables resolved only when the node runs). Flows are validated when loaded. Flow.from_dict() / to_dict() build and serialize a definition, and AutoFlow.plan() returns the planned flow without running it. See Flows.Agent nodes use their provider. The gwenflow.Agent node uses the provider of its model prefix (anthropic/..., mistral/...), accepts tools by name, and passes every parent’s output to the agent. gwenflow.registry exposes the names shared by flows and the command line.Breaking. FlowRunner.run() raises FlowNodeError instead of printing and exiting with SystemExit(1). Slash commands are removed: Agent(commands=...) is ignored with a DeprecationWarning; use agent.history.compact(), agent.history.reset() and agent.total_usage. Identifiers are UUIDv7.gwenflow 1.5.1
Sub-agents.
Agent(subagents=True) adds a spawn_agent tool with which the model launches fresh agents for self-contained tasks, in parallel, with the tools, skills and model it picks, and an optional JSON schema for the report. subagent_llm, subagent_max_turns, subagent_max_concurrency and subagent_timeout bound them; their events are streamed live, their spend is reported in delegation_usage, and they may use tools that require approval. See Sub-agents.Parallel delegations. run and run_stream run the team handoffs and sub-agents of one turn in parallel, as arun already did.Interrupted streams. A stream closed before the end gets finish_reason="interrupted", and its spend still counts.Tracing fixes. Tool calls have their span again (lost since 1.4.0), delegated agents nest under the call that launched them, and stream spans hold the answer only.gwenflow 1.5.0
Skills scripts registered automatically. The tools defined in a skill’s
scripts/ directory are added to the agent without passing them by hand; script files are imported once per skill. See Skills.Reranker fix. GwenlakeReranker assigns scores to the right documents and no longer modifies the caller’s documents.gwenflow 1.4.0
Context management. The history is measured on the provider’s own token counts and compacted in tiers, cheapest first: deduplicated file reads, clamped oversized parts, cleared old tool results, a summary, a sliding window. Compaction runs in batches so the prompt cache stays valid; the task, the first user message and pinned messages always survive.
Agent(summarizer=...) picks a cheaper model for summaries, max_tool_output_tokens pages long tool results, warn_near_limits tells the model when a limit is close, and context_usage() / on_context_usage report where the history stands. See Context management.Context windows. context_window (an int, or "auto" to ask the server) and fallback_context_window on every model; model names served under another name (Qwen/Qwen3.6-27B-AWQ) are recognized. The table of known models is refreshed. See Models.gwenflow 1.3.0
Long-term memory. Markdown files under
/memories, in a local, S3 or in-memory store: MemoryToolset renders them in the prompt and gives the agent editing tools, recalls the topic files a request is about, and persists the edits; MemoryConsolidator updates them after a conversation and MemoryCurator tidies them. See Long-term memory.gwenflow 1.2.5
Structured output with tools on any server. With tools on offer, the
response_model is exposed as a final_result tool instead of a JSON grammar, so OpenAI-compatible servers (vLLM, DeepSeek, Ollama…) can still call tools. See Structured output.gwenflow 1.2.4
Lighter imports.
import gwenflow no longer loads every vendor SDK: resident memory drops from about 148 MiB to 56 MiB. Names are unchanged.Streamed tool calls on vLLM. Tool-call fragments are matched by index, fixing streamed tool calls against vLLM and other OpenAI-compatible servers.gwenflow 1.0.0
First stable release. Multi-modal input (images, audio, PDFs) and output (audio, images) across providers; reasoning exposed the same way for OpenAI, Anthropic, Google, Mistral, DeepSeek and local models; native SDKs for Mistral and Google.Breaking.
ChatGemini is renamed ChatGoogle; Message.reasoning_content is replaced by thinking_parts; ModelResponse.to_openai() moves to response_to_openai_dict().