Observed since 20 Oct, 22:22 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
agentic-swarm
Plug-and-play SDK for building immortal, self-healing multi-agent AI systems
Build immortal, self-healing multi-agent AI systems
Features • Installation • Quick Start • Documentation • Contributing
Agentic Swarm is a production-grade SDK for building multi-agent AI systems where agents:
| Feature | Description |
|---|---|
| Immortal Agents | Auto-heal on failure with state recovery |
| Dynamic Spawning | Create sub-agents at runtime |
| 7 LLM Providers | OpenAI, Anthropic, Bedrock, Gemini, Groq, Ollama, vLLM |
| Smart Routing | Cost/speed/quality optimized model selection |
| Tiered Memory | Core + Recall + Archival (vector-indexed) |
| Never-Forget Memory | Compress, store, search, inject memories across sessions |
| RAG Pipeline | Chunk → Embed → Retrieve (dense+BM25+RRF) → Rerank |
| Hybrid Search | Dense vectors + BM25 sparse + Reciprocal Rank Fusion |
| Sandbox Isolation | CPU/memory limits, data isolation per agent |
| Security | Audit logs, AES-256 encryption, RBAC |
pip install agentic-swarm
With optional providers:
pip install agentic-swarm[openai] # OpenAI
pip install agentic-swarm[anthropic] # Anthropic
pip install agentic-swarm[bedrock] # AWS Bedrock
pip install agentic-swarm[all] # Everything
import asyncio
from agentic_swarm import Agent, Swarm, tool
@tool
def search_web(query: str) -> str:
"""Search the web for information."""
return f"Results for: {query}"
agent = Agent(
name="researcher",
role="Research and gather information",
tools=[search_web],
)
swarm = Swarm(agents=[agent])
async def main():
result = await swarm.run("Find information about AI agents")
print(result)
asyncio.run(main())
from agentic_swarm import Agent
from agentic_swarm.llm import LLMRouter, OpenAIProvider
router = LLMRouter(strategy="quality_optimized")
router.register_provider("openai", OpenAIProvider(model="gpt-4o"))
agent = Agent(
name="assistant",
role="Helpful AI assistant",
llm_router=router,
)
result = await agent.run("Explain quantum computing")
from agentic_swarm import Agent
from agentic_swarm.vectordb import InMemoryVectorDB
from agentic_swarm.rag.embedder import Embedder
# Agent that remembers across sessions
agent = Agent(
name="assistant",
role="Helpful assistant",
vectordb=InMemoryVectorDB(),
embedder=Embedder(),
auto_archive=True,
auto_inject_memories=True,
)
# Store memories
await agent.remember("User prefers dark mode")
# Search memories
memories = await agent.recall("user preferences")
# Run task - automatically injects relevant memories
result = await agent.run("What are my preferences?")
| Document | Description |
|---|---|
| Getting Started | Installation and first steps |
| Configuration | All configurable parameters |
| API Reference | Complete API documentation |
| Examples | Code examples and tutorials |
| Architecture | System design |
# Full SDK showcase
python examples/full_showcase.py --provider openai
# With AWS Bedrock
python examples/full_showcase.py --provider bedrock
# Demo mode (no LLM)
python examples/full_showcase.py --skip-llm
See examples/ for working examples covering all features.
We welcome contributions! Please see our contributing guidelines.
| Resource | Link |
|---|---|
| 📖 README | README.md |
| 🤝 Code of Conduct | CODE_OF_CONDUCT.md |
| 👥 Contributing | CONTRIBUTING.md |
| 📜 License | Apache 2.0 |
| 🔒 Security | SECURITY.md |
git clone https://github.com/nik0811/agentic-swarm.git
cd agentic-swarm
python -m venv env && source env/bin/activate
pip install -e ".[dev,all]"
pytest tests/ -v
Apache License 2.0 — see LICENSE for details.
Built with ❤️ for the AI community
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
httpxEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | httpx>=0.25 | runtime |
pydanticEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pydantic>=2.0 | runtime |
tiktokenEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | tiktoken>=0.5 | runtime |
anthropicEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | anthropic>=0.18; extra == "all" | runtime |
boto3Environment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | boto3>=1.34; extra == "all" | runtime |
cryptographyEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | cryptography>=41.0; extra == "all" | runtime |
google-genaiEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | google-genai>=1.0; extra == "all" | runtime |
groqEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | groq>=0.4; extra == "all" | runtime |
openaiEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | openai>=1.0; extra == "all" | runtime |
qdrant-clientEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | qdrant-client>=1.7; extra == "all" | runtime |
redisEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | redis>=5.0; extra == "all" | runtime |
anthropicEnvironment{
"extras": "",
"marker": "extra == \"anthropic\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | anthropic>=0.18; extra == "anthropic" | runtime |
boto3Environment{
"extras": "",
"marker": "extra == \"bedrock\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | boto3>=1.34; extra == "bedrock" | runtime |
cryptographyEnvironment{
"extras": "",
"marker": "extra == \"crypto\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | cryptography>=41.0; extra == "crypto" | runtime |
banditEnvironment{
"extras": "toml",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | bandit[toml]>=1.7; extra == "dev" | runtime |
cryptographyEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | cryptography>=41.0; extra == "dev" | runtime |
mypyEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | mypy>=1.8; extra == "dev" | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.23; extra == "dev" | runtime |
pytest-covEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest-cov>=4.0; extra == "dev" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest>=8.0; extra == "dev" | runtime |
ruffEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | ruff>=0.3; extra == "dev" | runtime |
google-genaiEnvironment{
"extras": "",
"marker": "extra == \"gemini\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | google-genai>=1.0; extra == "gemini" | runtime |
groqEnvironment{
"extras": "",
"marker": "extra == \"groq\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | groq>=0.4; extra == "groq" | runtime |
openaiEnvironment{
"extras": "",
"marker": "extra == \"openai\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | openai>=1.0; extra == "openai" | runtime |
qdrant-clientEnvironment{
"extras": "",
"marker": "extra == \"qdrant\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | qdrant-client>=1.7; extra == "qdrant" | runtime |
redisEnvironment{
"extras": "",
"marker": "extra == \"redis\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | redis>=5.0; extra == "redis" | runtime |
bdist_wheel · 118.56 KB · Python py3
sdist · 3,786.74 KB · Python source
Observed since 20 Oct, 22:22 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:d981d455d65449980abb23d5716cabbe3bdb3d7d912739ddfcd4aebddcdd29bb