Overview
Swarms v14, codenamed “Zena”, covers everything merged between 13.0.0 and 14.0.2. It also folds in the 13.0.1 and 13.0.2 patch work: configurableHierarchicalSwarm director settings, worker recovery, and the turn-based GroupChat.
The headline is observability. OpenTelemetry tracing now runs across agents and swarms, on by default with a single opt-out switch. Alongside it, MCP moved behind one MCPManager with OAuth support, and two new structures landed: AutoAgentBuilder and AuctionSwarm. The 14.0.1 patch then carried a long correctness pass on the autonomous loop and on how context flows between agents, plus a large dead-code cleanup.
Highlights
- OpenTelemetry tracing: agent and swarm runs emit nested spans. Turn it off with
SWARMS_TELEMETRY_ON=false. - Unified MCP manager: one
MCPManagerhandles connections, tool discovery, headers, timeouts and OAuth. - AutoAgentBuilder: generate a task-specific roster of agents, then run it in any structure.
- AuctionSwarm: agents bid confidence and cost for a task, and the best bid wins the work.
- Turn-based GroupChat: one speaker per turn, with a recency penalty against monologues.
- HierarchicalSwarm recovery: retry failing workers, reassign their tasks, and override the director without subclassing.
- Faster GraphWorkflow: native rustworkx algorithms, one thread pool per run, and a single-pass compile.
- Honest autonomous loop (14.0.1): real message transcripts, a mutable plan, and five correctness fixes.
New features
OpenTelemetry tracing
Swarms now ships OpenTelemetry tracing.Agent and the multi-agent structures record an init span when they are built and a run span when they run. Spans nest, so a workflow and every agent run underneath it form one trace. Errors that the LLM retry loop would otherwise swallow are recorded too.
Telemetry is on by default and fail-safe: if the exporter cannot start, tracing goes inert and your agents keep running. To opt out, set one variable:
ContextThreadPoolExecutor instead of a plain ThreadPoolExecutor, or child spans detach from the caller’s trace.
Unified MCP manager
The standaloneswarms.tools.mcp_client_tools module is gone. Connections, tool discovery and auth now live behind MCPManager, which you reach through Agent parameters. You can set a bearer token, extra headers, a timeout, or OAuth 2.1 settings (mcp_oauth) once for every server. The OAuth token cache is written atomically with 0600 permissions.
Agent: LLMManager, SkillsManager and AgentMarketplaceHandler. See MCP integration for the full guide.
AutoAgentBuilder
AutoAgentBuilder designs a team for a task. A builder agent is forced to call one function, build_agents, and each generated agent carries a name, description, system prompt and model. max_agents is a ceiling, and the builder prefers the smallest roster that covers the task. Use num_agents when you need an exact count.
In the 14.x line, passing any
agent_kwargs raised a TypeError. This was fixed in 15.0.0.AuctionSwarm
AuctionSwarm inverts the boss-picks-the-worker model. Each agent bids its confidence and estimated cost through a forced tool call, the bids are scored, and the top_k winners run the task. The default scoring is "confidence_per_cost", and you can pass your own function. It is not exported from the top-level package, so import it from its module.
Turn-based GroupChat
GroupChat now runs one speaker per turn. Every agent privately bids through a forced respond(score, message) call, and the highest bid above threshold takes the floor. recency_penalty lowers the bid of an agent that spoke within the last recency_window turns, so no one monologues. auto_equip=True (the default) attaches the bidding tool for you. See GroupChat.
HierarchicalSwarm recovery and director settings
A failing worker is now retried up tomax_agent_retries times. If it stays down, the director can reassign its task up to max_reassignment_attempts times instead of dropping the work. planning_enabled adds a planning pass, agent_as_judge scores worker output, and parallel_execution with max_workers runs orders concurrently. You can configure the built-in director through director_model_name, director_temperature, and a director_settings dict of extra Agent arguments. See HierarchicalSwarm.
director_settings configures the director the swarm builds. If you pass your own director agent, it is used as is.Pydantic models from a class signature
class_init_to_pydantic_model turns a constructor’s parameters, types and Google-style Args: descriptions into a Pydantic model class. You can use it for validation or structured output without keeping a second definition in sync.
ConcurrentWorkflow failure policy and pool sizing
ConcurrentWorkflow gained on_error. With "store" (the default), a failing agent’s error is recorded as its output and the other agents finish. With "raise", the exception aborts the run. Thread pools are now sized for network-bound work: max_workers defaults to the number of agents, capped at 32. MixtureOfAgents and HierarchicalSwarm expose max_workers too. See ConcurrentWorkflow.
Smaller additions
CronJobsurvives failed executions and retries on the next tick.max_consecutive_errorssets an error budget, andrun_many()/stop_many()run several agents on different schedules. See CronJob.SequentialWorkflowbounds drift-detection reruns withdrift_max_retries(default3).AgentLoader.load_agents_from_csv()replaces the standalone CSV-to-agent module. See AgentLoader.Agent.max_tokensnow defaults to the model’s own output limit when you leave it unset, falling back to 16,000 for unmapped models.MixtureOfAgentsworkers now receive the task plus the previous layer’s synthesis, not the full transcript.
Improvements
Autonomous loop and context (14.0.1). Themax_loops="auto" loop moved out of agent.py into AutonomousAgentLoop. It now sends the model a real message list with assistant tool calls and tool results, rather than one flattened string. The same change applies to the integer max_loops path. The plan is mutable, tool errors reach the model, and a failed dependency now blocks its dependents. The think guard works, and a stuck subtask is contained (one reproduction dropped from 2,002 LLM turns to 22). In multi-agent structures, agents receive only what is new to them and contribute their answer rather than their whole transcript. Context now grows linearly instead of exponentially. With dynamic tools enabled, schemas sit behind tool_search and MCP schemas join that catalog. See Autonomous mode and Dynamic tools.
Workspace and logging (14.0.1). One WorkspaceManager now owns autosave for SequentialWorkflow, ConcurrentWorkflow, HierarchicalSwarm, SwarmRouter and Agent. Autosave never makes a run fail. All logs go under {WORKSPACE_DIR}/logs, one file per module plus a combined daily log. WORKSPACE_DIR is honored at import. If it cannot be created, Swarms warns and falls back to ./agent_workspace.
Performance. GraphWorkflow’s rustworkx backend calls native rustworkx algorithms instead of Python reimplementations. Each run uses one thread pool, single-node layers run inline, and compile builds its maps in one pass (200-node compile: about 150 ms down to 0.3 ms). Remote image URLs are fetched once per process, and multiple images go to the provider in one request instead of one agent run per image.
API cleanup. SwarmRouter dropped the dead shared_memory_system and telemetry_enabled parameters. Its output_type now defaults to "dict" and multi_agent_collab_prompt to False. AutoSwarmBuilder replaced execution_type with swarm_type. Component IDs are unique per instance from one generator built on secrets.token_hex. Thirty hand-written batch methods now share one batch runner.
Bug fixes
Agentforwardsllm_base_urlandllm_api_keyto the provider call.context_lengthandmax_tokenspassed toAgentwere silently overwritten. Both now take effect.tool_execution_retryactually retriestool_retry_attemptstimes and surfaces the final failure.- Each
Agentgets its owntools_list_dictionaryinstead of sharing one list. - An unmapped model ID falls back to defaults instead of raising at construction.
Agent.load(),run_batchedwithoutimgs,run_concurrent_tasks, andarunpositional arguments all work again.- The autonomous loop no longer hands the loop object to built-in tools, which had broken every file and shell tool.
Conversationcan load the file it just saved.SequentialWorkflow.run,PlannerWorkerSwarm.run, parallelAgentRearrangesteps andHeavySwarmworkers now pass images through.planning_enabledno longer strips the director’sSwarmSpecschema.- Concurrent helpers and
MajorityVoting/MixtureOfAgentsrun_concurrentlyreturn results in input order. create_agent_maprejects duplicate agent names.GraphWorkflowJSON round trips work, andvisualizesanitizes the workflow name.- Pydantic tool schemas are named after the model, and two validators disabled under
pydantic.v1work again. - Image URL fetches resolve hostnames and block private, loopback and cloud-metadata addresses.
- 14.0.0 pinned
mcpbelow 2.0 soimport swarmskept working, and 14.0.1 added the OpenTelemetry packages a clean install needs. - 14.0.2 fixed
MixtureOfAgentsfailing at construction without anaggregator_agent, becauseaggegrator_argswas never stored.
Removals and breaking changes
Agent.persistent_memorynow defaults toFalse. Passpersistent_memory=Trueto keepMEMORY.mdacross restarts. See Agent memory.swarms.tools.mcp_client_toolswas removed. UseMCPManageror themcp_*parameters onAgent.AOPwas removed from the top-level exports in 14.0.0. The module itself was deleted in 15.0.0."AutoSwarmBuilder"is no longer aSwarmRouterswarm_type. UseAutoSwarmBuilderdirectly.BaseSwarmandBaseStructurewere deleted. Write custom structures as plain classes.RoundTableDiscussionwas deleted. Eight scripted conversation patterns, such asCouncilMeetingandNegotiationSession, moved toexamples/multi_agent/alternate_debates/.SkillOrchestramoved toexamples/multi_agent/.- Ten unused math-sequence swarms (
FibonacciSwarm,PrimeSwarmand others) and a dozen dead schema and tool modules were removed. These includecreate_agent_tool,openai_tool_creator_decoratorandswarms_api_schemas. Agentlost methods with no callers:run_multiple_images,undo_last,set_system_prompt,enable_autosave/disable_autosaveand others. Userun(imgs=[...])for several images. The unreadretry_intervalandtokenizerarguments are now ignored.- The computer-use toolkit added during this cycle was removed again in 14.0.1 as a duplicate.
Two v14 defaults changed again in 15.0.0.
reasoning_effort defaulted to "medium" in v14 and is None again from 15.0.0. The HierarchicalSwarm live dashboard was removed in 15.0.0. See Swarms v15.Conclusion
v14 makes Swarms observable and easier to trust. Tracing shows what every agent and swarm did.MCPManager gives tools one consistent connection layer, and AutoAgentBuilder and AuctionSwarm let a task shape its own team. The 14.0.1 patch made the autonomous loop and multi-agent context honest and removed a large amount of dead code. When you upgrade, check that you set persistent_memory=True wherever you rely on memory, and move any mcp_client_tools imports to MCPManager.