Documentation Index
Fetch the complete documentation index at: https://docs.swarms.world/llms.txt
Use this file to discover all available pages before exploring further.
Overview
TheSwarmRouter class dispatches tasks to any supported multi-agent architecture through a single, uniform interface. Set swarm_type to choose the architecture; pass the same agent list and call run(task) regardless of which architecture you select.
It also handles:
- Validated construction of the underlying swarm (
reliability_check) - Optional autosave of config / state / metadata to the workspace
- Multi-agent collaboration prompt injection
- Optional rules / shared-memory injection
- O(1) factory dispatch with internal caching
Import
SwarmType
SwarmType is a typing.Literal enumerating every accepted swarm_type string. Any value outside this set raises SwarmRouterConfigError at construction time.
"auto" and "AutoSwarmBuilder" are listed in the Literal but are not dispatched by the current factory (it handles 15 of the 17 values). Selecting either passes construction validation, then raises ValueError during run(). Use one of the other 15 values.Constructor
Core parameters
Unique identifier for the router instance. Used for autosave directory naming and telemetry.
Human-readable name. Used for autosave directory naming.
Free-form description of the router’s purpose.
Agents the router will pass to the selected swarm. Some swarm types require a specific minimum count (e.g.
DebateWithJudge needs at least three).Which architecture to instantiate. See the
SwarmType Literal above.Maximum execution loops where supported by the underlying swarm (e.g.
HierarchicalSwarm, GroupChat).Output formatter applied to the conversation. One of
'str', 'string', 'list', 'json', 'dict', 'dict-all-except-first', 'yaml', 'xml'.When
True, results are returned as JSON regardless of output_type. Useful for downstream parsing.Whether the underlying swarm returns the full conversation history or only the final step.
Behavior modifiers
String injected into every agent’s system prompt before execution. Useful for global guardrails (citation requirements, tone, format).
Inject the built-in collaboration prompt into each agent so they understand they are part of a multi-agent team.
Automatically generate / refine each agent’s system prompt before the first run.
Shared memory backend (e.g. a vector store) made available to all agents.
File paths to documents the router can attach to agent context.
When
True, embed a manifest of every agent (name + description) into the conversation so each agent can see its peers.Pre-existing
Conversation instance to reuse instead of starting fresh.Per-agent configuration overrides applied during swarm setup.
When
True, agents are loaded from csv_file_path instead of from the agents list.Path used when
load_agents_from_csv=True.Emit detailed logs during construction and execution.
Forward telemetry events about this router’s runs.
Autosave
When enabled, persist
config.json on construction and state.json + metadata.json after each run to {workspace_dir}/swarms/SwarmRouter/{swarm-name}-{stamp}/.Use an ISO timestamp in the directory name when
True; use a UUID when False.Per-architecture parameters
These are only consulted when the correspondingswarm_type is selected.
AgentRearrange
Flow DSL string, e.g.
"researcher -> writer, editor". Required for swarm_type="AgentRearrange".GroupChat
Speaker-selection function for
GroupChat. Receives state and returns the next speaker’s name.Named speaker function (e.g.
"round_robin", "expertise_based").HeavySwarm
Number of reasoning loops per worker agent.
Model used by the question-generation captain.
Model used by every worker agent.
Whether to render the live dashboard during execution.
When
True, instantiate the 4-agent Grok variant (Captain / Harper / Benjamin / Lucas) instead of the default 5-agent set.Tools made available to every worker agent in
HeavySwarm.CouncilAsAJudge
Model used by the judge agent.
LLMCouncil
How council member responses are combined into the chairman’s final decision.
Model used by the chairman.
Additional kwargs
The constructor accepts arbitrary*args / **kwargs for forward-compatibility, but they are not stored on the router or forwarded to the underlying swarm — extra constructor kwargs are effectively ignored. Configure the underlying swarm through the router’s explicit parameters listed above.
For MixtureOfAgents, the aggregator is not passed as a kwarg; the last agent in agents is used as the aggregator automatically:
Exceptions
Raised by
reliability_check() when construction inputs are invalid: unknown swarm_type, missing required parameter for the chosen type (e.g. rearrange_flow for AgentRearrange), max_loops <= 0, etc.Raised by
run() / batch_run() / concurrent_run() when task execution fails inside the underlying swarm. Wraps the original traceback.Methods
run(task=None, img=None, tasks=None, *args, **kwargs)
Execute a single task using the configured swarm.
The task to be executed. Required for most
swarm_type values.Optional image input forwarded to vision-capable agents.
List of tasks. Consumed by
BatchedGridWorkflow.Any — shape depends on output_type and the underlying swarm.
Raises: SwarmRouterRunError on execution failure.
__call__(task, *args, **kwargs)
Alias for run. Lets you treat a router as a callable.
batch_run(tasks, img=None, imgs=None, *args, **kwargs)
Execute many tasks sequentially. Each task gets a fresh execution against the same router instance.
Tasks to process.
Single image applied to every task.
Per-task images aligned to
tasks by index.List[Any] — results in the same order as tasks.
concurrent_run(task, img=None, imgs=None, *args, **kwargs)
Execute one task in a separate thread using a ThreadPoolExecutor. Useful when calling the router from synchronous code that should not block.
reliability_check()
Validates the configuration (swarm type, per-type required parameters, max_loops) and then runs setup(). Called automatically at the end of __init__; you do not normally call it yourself. Raises SwarmRouterConfigError on invalid input.
setup()
Applies pre-run configuration to the agents: auto-prompt-engineering (auto_generate_prompts), shared-memory activation (shared_memory_system), rules injection (rules), and the multi-agent collaboration prompt (multi_agent_collab_prompt). Called automatically during construction via reliability_check(). The underlying swarm itself is created lazily on the first run().
to_dict()
Serialize the router’s configuration and current state to a dictionary suitable for logging or persistence.
Returns: Dict[str, Any].
fetch_message_history_as_string()
Return the underlying conversation as a single formatted string.
activate_shared_memory() · handle_rules() · activate_ape()
Internal helpers used during setup() for shared-memory activation, rules injection, and auto-prompt-engineering. Rarely called directly.
Required parameters by swarm_type
swarm_type | Additional required parameters |
|---|---|
SequentialWorkflow | agents (≥1) |
ConcurrentWorkflow | agents (≥1) |
AgentRearrange | agents, rearrange_flow |
MixtureOfAgents | agents (workers + aggregator as the last element) |
HierarchicalSwarm | agents (workers); director is created automatically |
GroupChat | agents, speaker_fn or speaker_function |
MajorityVoting | agents (≥3 recommended) |
CouncilAsAJudge | council_judge_model_name (builds its own agents) |
LLMCouncil | agents, chairman_model, aggregation_strategy |
DebateWithJudge | agents (≥3: pro, con, judge) |
HeavySwarm | heavy_swarm_worker_model_name, heavy_swarm_question_agent_model_name |
BatchedGridWorkflow | agents, tasks passed to run |
RoundRobin | agents (≥2) |
MultiAgentRouter | agents |
PlannerWorkerSwarm | agents (workers); planner is created automatically |
AutoSwarmBuilder | Reserved — not dispatched by the current factory (raises ValueError at run) |
auto | Reserved — not dispatched by the current factory (raises ValueError at run) |
Autosave layout
Whenautosave=True, the router writes to:
workspace_dir resolves to the SWARMS_WORKSPACE_DIR env var if set, otherwise to the configured Swarms workspace.
Usage Example
Related Pages
- SwarmRouter architecture overview
- SwarmRouter example walkthrough
- MultiAgentRouter API reference — task-aware routing to one of N agents
- AutoSwarmBuilder API reference — LLM-driven swarm construction
Source
swarms/structs/swarm_router.py on GitHub