agno 2.1.2__py3-none-any.whl → 2.3.13__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. agno/agent/agent.py +5540 -2273
  2. agno/api/api.py +2 -0
  3. agno/api/os.py +1 -1
  4. agno/compression/__init__.py +3 -0
  5. agno/compression/manager.py +247 -0
  6. agno/culture/__init__.py +3 -0
  7. agno/culture/manager.py +956 -0
  8. agno/db/async_postgres/__init__.py +3 -0
  9. agno/db/base.py +689 -6
  10. agno/db/dynamo/dynamo.py +933 -37
  11. agno/db/dynamo/schemas.py +174 -10
  12. agno/db/dynamo/utils.py +63 -4
  13. agno/db/firestore/firestore.py +831 -9
  14. agno/db/firestore/schemas.py +51 -0
  15. agno/db/firestore/utils.py +102 -4
  16. agno/db/gcs_json/gcs_json_db.py +660 -12
  17. agno/db/gcs_json/utils.py +60 -26
  18. agno/db/in_memory/in_memory_db.py +287 -14
  19. agno/db/in_memory/utils.py +60 -2
  20. agno/db/json/json_db.py +590 -14
  21. agno/db/json/utils.py +60 -26
  22. agno/db/migrations/manager.py +199 -0
  23. agno/db/migrations/v1_to_v2.py +43 -13
  24. agno/db/migrations/versions/__init__.py +0 -0
  25. agno/db/migrations/versions/v2_3_0.py +938 -0
  26. agno/db/mongo/__init__.py +15 -1
  27. agno/db/mongo/async_mongo.py +2760 -0
  28. agno/db/mongo/mongo.py +879 -11
  29. agno/db/mongo/schemas.py +42 -0
  30. agno/db/mongo/utils.py +80 -8
  31. agno/db/mysql/__init__.py +2 -1
  32. agno/db/mysql/async_mysql.py +2912 -0
  33. agno/db/mysql/mysql.py +946 -68
  34. agno/db/mysql/schemas.py +72 -10
  35. agno/db/mysql/utils.py +198 -7
  36. agno/db/postgres/__init__.py +2 -1
  37. agno/db/postgres/async_postgres.py +2579 -0
  38. agno/db/postgres/postgres.py +942 -57
  39. agno/db/postgres/schemas.py +81 -18
  40. agno/db/postgres/utils.py +164 -2
  41. agno/db/redis/redis.py +671 -7
  42. agno/db/redis/schemas.py +50 -0
  43. agno/db/redis/utils.py +65 -7
  44. agno/db/schemas/__init__.py +2 -1
  45. agno/db/schemas/culture.py +120 -0
  46. agno/db/schemas/evals.py +1 -0
  47. agno/db/schemas/memory.py +17 -2
  48. agno/db/singlestore/schemas.py +63 -0
  49. agno/db/singlestore/singlestore.py +949 -83
  50. agno/db/singlestore/utils.py +60 -2
  51. agno/db/sqlite/__init__.py +2 -1
  52. agno/db/sqlite/async_sqlite.py +2911 -0
  53. agno/db/sqlite/schemas.py +62 -0
  54. agno/db/sqlite/sqlite.py +965 -46
  55. agno/db/sqlite/utils.py +169 -8
  56. agno/db/surrealdb/__init__.py +3 -0
  57. agno/db/surrealdb/metrics.py +292 -0
  58. agno/db/surrealdb/models.py +334 -0
  59. agno/db/surrealdb/queries.py +71 -0
  60. agno/db/surrealdb/surrealdb.py +1908 -0
  61. agno/db/surrealdb/utils.py +147 -0
  62. agno/db/utils.py +2 -0
  63. agno/eval/__init__.py +10 -0
  64. agno/eval/accuracy.py +75 -55
  65. agno/eval/agent_as_judge.py +861 -0
  66. agno/eval/base.py +29 -0
  67. agno/eval/performance.py +16 -7
  68. agno/eval/reliability.py +28 -16
  69. agno/eval/utils.py +35 -17
  70. agno/exceptions.py +27 -2
  71. agno/filters.py +354 -0
  72. agno/guardrails/prompt_injection.py +1 -0
  73. agno/hooks/__init__.py +3 -0
  74. agno/hooks/decorator.py +164 -0
  75. agno/integrations/discord/client.py +1 -1
  76. agno/knowledge/chunking/agentic.py +13 -10
  77. agno/knowledge/chunking/fixed.py +4 -1
  78. agno/knowledge/chunking/semantic.py +9 -4
  79. agno/knowledge/chunking/strategy.py +59 -15
  80. agno/knowledge/embedder/fastembed.py +1 -1
  81. agno/knowledge/embedder/nebius.py +1 -1
  82. agno/knowledge/embedder/ollama.py +8 -0
  83. agno/knowledge/embedder/openai.py +8 -8
  84. agno/knowledge/embedder/sentence_transformer.py +6 -2
  85. agno/knowledge/embedder/vllm.py +262 -0
  86. agno/knowledge/knowledge.py +1618 -318
  87. agno/knowledge/reader/base.py +6 -2
  88. agno/knowledge/reader/csv_reader.py +8 -10
  89. agno/knowledge/reader/docx_reader.py +5 -6
  90. agno/knowledge/reader/field_labeled_csv_reader.py +16 -20
  91. agno/knowledge/reader/json_reader.py +5 -4
  92. agno/knowledge/reader/markdown_reader.py +8 -8
  93. agno/knowledge/reader/pdf_reader.py +17 -19
  94. agno/knowledge/reader/pptx_reader.py +101 -0
  95. agno/knowledge/reader/reader_factory.py +32 -3
  96. agno/knowledge/reader/s3_reader.py +3 -3
  97. agno/knowledge/reader/tavily_reader.py +193 -0
  98. agno/knowledge/reader/text_reader.py +22 -10
  99. agno/knowledge/reader/web_search_reader.py +1 -48
  100. agno/knowledge/reader/website_reader.py +10 -10
  101. agno/knowledge/reader/wikipedia_reader.py +33 -1
  102. agno/knowledge/types.py +1 -0
  103. agno/knowledge/utils.py +72 -7
  104. agno/media.py +22 -6
  105. agno/memory/__init__.py +14 -1
  106. agno/memory/manager.py +544 -83
  107. agno/memory/strategies/__init__.py +15 -0
  108. agno/memory/strategies/base.py +66 -0
  109. agno/memory/strategies/summarize.py +196 -0
  110. agno/memory/strategies/types.py +37 -0
  111. agno/models/aimlapi/aimlapi.py +17 -0
  112. agno/models/anthropic/claude.py +515 -40
  113. agno/models/aws/bedrock.py +102 -21
  114. agno/models/aws/claude.py +131 -274
  115. agno/models/azure/ai_foundry.py +41 -19
  116. agno/models/azure/openai_chat.py +39 -8
  117. agno/models/base.py +1249 -525
  118. agno/models/cerebras/cerebras.py +91 -21
  119. agno/models/cerebras/cerebras_openai.py +21 -2
  120. agno/models/cohere/chat.py +40 -6
  121. agno/models/cometapi/cometapi.py +18 -1
  122. agno/models/dashscope/dashscope.py +2 -3
  123. agno/models/deepinfra/deepinfra.py +18 -1
  124. agno/models/deepseek/deepseek.py +69 -3
  125. agno/models/fireworks/fireworks.py +18 -1
  126. agno/models/google/gemini.py +877 -80
  127. agno/models/google/utils.py +22 -0
  128. agno/models/groq/groq.py +51 -18
  129. agno/models/huggingface/huggingface.py +17 -6
  130. agno/models/ibm/watsonx.py +16 -6
  131. agno/models/internlm/internlm.py +18 -1
  132. agno/models/langdb/langdb.py +13 -1
  133. agno/models/litellm/chat.py +44 -9
  134. agno/models/litellm/litellm_openai.py +18 -1
  135. agno/models/message.py +28 -5
  136. agno/models/meta/llama.py +47 -14
  137. agno/models/meta/llama_openai.py +22 -17
  138. agno/models/mistral/mistral.py +8 -4
  139. agno/models/nebius/nebius.py +6 -7
  140. agno/models/nvidia/nvidia.py +20 -3
  141. agno/models/ollama/chat.py +24 -8
  142. agno/models/openai/chat.py +104 -29
  143. agno/models/openai/responses.py +101 -81
  144. agno/models/openrouter/openrouter.py +60 -3
  145. agno/models/perplexity/perplexity.py +17 -1
  146. agno/models/portkey/portkey.py +7 -6
  147. agno/models/requesty/requesty.py +24 -4
  148. agno/models/response.py +73 -2
  149. agno/models/sambanova/sambanova.py +20 -3
  150. agno/models/siliconflow/siliconflow.py +19 -2
  151. agno/models/together/together.py +20 -3
  152. agno/models/utils.py +254 -8
  153. agno/models/vercel/v0.py +20 -3
  154. agno/models/vertexai/__init__.py +0 -0
  155. agno/models/vertexai/claude.py +190 -0
  156. agno/models/vllm/vllm.py +19 -14
  157. agno/models/xai/xai.py +19 -2
  158. agno/os/app.py +549 -152
  159. agno/os/auth.py +190 -3
  160. agno/os/config.py +23 -0
  161. agno/os/interfaces/a2a/router.py +8 -11
  162. agno/os/interfaces/a2a/utils.py +1 -1
  163. agno/os/interfaces/agui/router.py +18 -3
  164. agno/os/interfaces/agui/utils.py +152 -39
  165. agno/os/interfaces/slack/router.py +55 -37
  166. agno/os/interfaces/slack/slack.py +9 -1
  167. agno/os/interfaces/whatsapp/router.py +0 -1
  168. agno/os/interfaces/whatsapp/security.py +3 -1
  169. agno/os/mcp.py +110 -52
  170. agno/os/middleware/__init__.py +2 -0
  171. agno/os/middleware/jwt.py +676 -112
  172. agno/os/router.py +40 -1478
  173. agno/os/routers/agents/__init__.py +3 -0
  174. agno/os/routers/agents/router.py +599 -0
  175. agno/os/routers/agents/schema.py +261 -0
  176. agno/os/routers/evals/evals.py +96 -39
  177. agno/os/routers/evals/schemas.py +65 -33
  178. agno/os/routers/evals/utils.py +80 -10
  179. agno/os/routers/health.py +10 -4
  180. agno/os/routers/knowledge/knowledge.py +196 -38
  181. agno/os/routers/knowledge/schemas.py +82 -22
  182. agno/os/routers/memory/memory.py +279 -52
  183. agno/os/routers/memory/schemas.py +46 -17
  184. agno/os/routers/metrics/metrics.py +20 -8
  185. agno/os/routers/metrics/schemas.py +16 -16
  186. agno/os/routers/session/session.py +462 -34
  187. agno/os/routers/teams/__init__.py +3 -0
  188. agno/os/routers/teams/router.py +512 -0
  189. agno/os/routers/teams/schema.py +257 -0
  190. agno/os/routers/traces/__init__.py +3 -0
  191. agno/os/routers/traces/schemas.py +414 -0
  192. agno/os/routers/traces/traces.py +499 -0
  193. agno/os/routers/workflows/__init__.py +3 -0
  194. agno/os/routers/workflows/router.py +624 -0
  195. agno/os/routers/workflows/schema.py +75 -0
  196. agno/os/schema.py +256 -693
  197. agno/os/scopes.py +469 -0
  198. agno/os/utils.py +514 -36
  199. agno/reasoning/anthropic.py +80 -0
  200. agno/reasoning/gemini.py +73 -0
  201. agno/reasoning/openai.py +5 -0
  202. agno/reasoning/vertexai.py +76 -0
  203. agno/run/__init__.py +6 -0
  204. agno/run/agent.py +155 -32
  205. agno/run/base.py +55 -3
  206. agno/run/requirement.py +181 -0
  207. agno/run/team.py +125 -38
  208. agno/run/workflow.py +72 -18
  209. agno/session/agent.py +102 -89
  210. agno/session/summary.py +56 -15
  211. agno/session/team.py +164 -90
  212. agno/session/workflow.py +405 -40
  213. agno/table.py +10 -0
  214. agno/team/team.py +3974 -1903
  215. agno/tools/dalle.py +2 -4
  216. agno/tools/eleven_labs.py +23 -25
  217. agno/tools/exa.py +21 -16
  218. agno/tools/file.py +153 -23
  219. agno/tools/file_generation.py +16 -10
  220. agno/tools/firecrawl.py +15 -7
  221. agno/tools/function.py +193 -38
  222. agno/tools/gmail.py +238 -14
  223. agno/tools/google_drive.py +271 -0
  224. agno/tools/googlecalendar.py +36 -8
  225. agno/tools/googlesheets.py +20 -5
  226. agno/tools/jira.py +20 -0
  227. agno/tools/mcp/__init__.py +10 -0
  228. agno/tools/mcp/mcp.py +331 -0
  229. agno/tools/mcp/multi_mcp.py +347 -0
  230. agno/tools/mcp/params.py +24 -0
  231. agno/tools/mcp_toolbox.py +3 -3
  232. agno/tools/models/nebius.py +5 -5
  233. agno/tools/models_labs.py +20 -10
  234. agno/tools/nano_banana.py +151 -0
  235. agno/tools/notion.py +204 -0
  236. agno/tools/parallel.py +314 -0
  237. agno/tools/postgres.py +76 -36
  238. agno/tools/redshift.py +406 -0
  239. agno/tools/scrapegraph.py +1 -1
  240. agno/tools/shopify.py +1519 -0
  241. agno/tools/slack.py +18 -3
  242. agno/tools/spotify.py +919 -0
  243. agno/tools/tavily.py +146 -0
  244. agno/tools/toolkit.py +25 -0
  245. agno/tools/workflow.py +8 -1
  246. agno/tools/yfinance.py +12 -11
  247. agno/tracing/__init__.py +12 -0
  248. agno/tracing/exporter.py +157 -0
  249. agno/tracing/schemas.py +276 -0
  250. agno/tracing/setup.py +111 -0
  251. agno/utils/agent.py +938 -0
  252. agno/utils/cryptography.py +22 -0
  253. agno/utils/dttm.py +33 -0
  254. agno/utils/events.py +151 -3
  255. agno/utils/gemini.py +15 -5
  256. agno/utils/hooks.py +118 -4
  257. agno/utils/http.py +113 -2
  258. agno/utils/knowledge.py +12 -5
  259. agno/utils/log.py +1 -0
  260. agno/utils/mcp.py +92 -2
  261. agno/utils/media.py +187 -1
  262. agno/utils/merge_dict.py +3 -3
  263. agno/utils/message.py +60 -0
  264. agno/utils/models/ai_foundry.py +9 -2
  265. agno/utils/models/claude.py +49 -14
  266. agno/utils/models/cohere.py +9 -2
  267. agno/utils/models/llama.py +9 -2
  268. agno/utils/models/mistral.py +4 -2
  269. agno/utils/print_response/agent.py +109 -16
  270. agno/utils/print_response/team.py +223 -30
  271. agno/utils/print_response/workflow.py +251 -34
  272. agno/utils/streamlit.py +1 -1
  273. agno/utils/team.py +98 -9
  274. agno/utils/tokens.py +657 -0
  275. agno/vectordb/base.py +39 -7
  276. agno/vectordb/cassandra/cassandra.py +21 -5
  277. agno/vectordb/chroma/chromadb.py +43 -12
  278. agno/vectordb/clickhouse/clickhousedb.py +21 -5
  279. agno/vectordb/couchbase/couchbase.py +29 -5
  280. agno/vectordb/lancedb/lance_db.py +92 -181
  281. agno/vectordb/langchaindb/langchaindb.py +24 -4
  282. agno/vectordb/lightrag/lightrag.py +17 -3
  283. agno/vectordb/llamaindex/llamaindexdb.py +25 -5
  284. agno/vectordb/milvus/milvus.py +50 -37
  285. agno/vectordb/mongodb/__init__.py +7 -1
  286. agno/vectordb/mongodb/mongodb.py +36 -30
  287. agno/vectordb/pgvector/pgvector.py +201 -77
  288. agno/vectordb/pineconedb/pineconedb.py +41 -23
  289. agno/vectordb/qdrant/qdrant.py +67 -54
  290. agno/vectordb/redis/__init__.py +9 -0
  291. agno/vectordb/redis/redisdb.py +682 -0
  292. agno/vectordb/singlestore/singlestore.py +50 -29
  293. agno/vectordb/surrealdb/surrealdb.py +31 -41
  294. agno/vectordb/upstashdb/upstashdb.py +34 -6
  295. agno/vectordb/weaviate/weaviate.py +53 -14
  296. agno/workflow/__init__.py +2 -0
  297. agno/workflow/agent.py +299 -0
  298. agno/workflow/condition.py +120 -18
  299. agno/workflow/loop.py +77 -10
  300. agno/workflow/parallel.py +231 -143
  301. agno/workflow/router.py +118 -17
  302. agno/workflow/step.py +609 -170
  303. agno/workflow/steps.py +73 -6
  304. agno/workflow/types.py +96 -21
  305. agno/workflow/workflow.py +2039 -262
  306. {agno-2.1.2.dist-info → agno-2.3.13.dist-info}/METADATA +201 -66
  307. agno-2.3.13.dist-info/RECORD +613 -0
  308. agno/tools/googlesearch.py +0 -98
  309. agno/tools/mcp.py +0 -679
  310. agno/tools/memori.py +0 -339
  311. agno-2.1.2.dist-info/RECORD +0 -543
  312. {agno-2.1.2.dist-info → agno-2.3.13.dist-info}/WHEEL +0 -0
  313. {agno-2.1.2.dist-info → agno-2.3.13.dist-info}/licenses/LICENSE +0 -0
  314. {agno-2.1.2.dist-info → agno-2.3.13.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.1.2
3
+ Version: 2.3.13
4
4
  Summary: Agno: a lightweight library for building Multi-Agent Systems
5
5
  Author-email: Ashpreet Bedi <ashpreet@agno.com>
6
6
  Project-URL: homepage, https://agno.com
@@ -24,7 +24,7 @@ License-File: LICENSE
24
24
  Requires-Dist: docstring-parser
25
25
  Requires-Dist: gitpython
26
26
  Requires-Dist: h11>=0.16.0
27
- Requires-Dist: httpx
27
+ Requires-Dist: httpx[http2]
28
28
  Requires-Dist: packaging
29
29
  Requires-Dist: pydantic-settings
30
30
  Requires-Dist: pydantic
@@ -35,27 +35,24 @@ Requires-Dist: rich
35
35
  Requires-Dist: typer
36
36
  Requires-Dist: typing-extensions
37
37
  Provides-Extra: dev
38
- Requires-Dist: mypy; extra == "dev"
38
+ Requires-Dist: mypy==1.18.2; extra == "dev"
39
+ Requires-Dist: ruff==0.14.3; extra == "dev"
39
40
  Requires-Dist: pytest; extra == "dev"
40
41
  Requires-Dist: pytest-asyncio; extra == "dev"
41
42
  Requires-Dist: pytest-cov; extra == "dev"
42
43
  Requires-Dist: pytest-mock; extra == "dev"
43
- Requires-Dist: ruff; extra == "dev"
44
44
  Requires-Dist: timeout-decorator; extra == "dev"
45
45
  Requires-Dist: types-pyyaml; extra == "dev"
46
46
  Requires-Dist: types-aiofiles; extra == "dev"
47
47
  Requires-Dist: fastapi; extra == "dev"
48
48
  Requires-Dist: uvicorn; extra == "dev"
49
+ Requires-Dist: PyJWT; extra == "dev"
50
+ Requires-Dist: mcp; extra == "dev"
51
+ Requires-Dist: openai; extra == "dev"
49
52
  Provides-Extra: os
50
53
  Requires-Dist: fastapi; extra == "os"
51
54
  Requires-Dist: uvicorn; extra == "os"
52
55
  Requires-Dist: PyJWT; extra == "os"
53
- Provides-Extra: integration-tests
54
- Requires-Dist: exa_py; extra == "integration-tests"
55
- Requires-Dist: ddgs; extra == "integration-tests"
56
- Requires-Dist: yfinance; extra == "integration-tests"
57
- Requires-Dist: sqlalchemy; extra == "integration-tests"
58
- Requires-Dist: Pillow; extra == "integration-tests"
59
56
  Provides-Extra: opentelemetry
60
57
  Requires-Dist: opentelemetry-sdk; extra == "opentelemetry"
61
58
  Requires-Dist: opentelemetry-exporter-otlp; extra == "opentelemetry"
@@ -86,7 +83,7 @@ Requires-Dist: cohere; extra == "cohere"
86
83
  Provides-Extra: infinity
87
84
  Requires-Dist: infinity_client; extra == "infinity"
88
85
  Provides-Extra: google
89
- Requires-Dist: google-genai; extra == "google"
86
+ Requires-Dist: google-genai>=1.52.0; extra == "google"
90
87
  Provides-Extra: groq
91
88
  Requires-Dist: groq; extra == "groq"
92
89
  Provides-Extra: ibm
@@ -105,6 +102,9 @@ Provides-Extra: openai
105
102
  Requires-Dist: openai; extra == "openai"
106
103
  Provides-Extra: portkey
107
104
  Requires-Dist: portkey-ai; extra == "portkey"
105
+ Provides-Extra: tokenizers
106
+ Requires-Dist: tiktoken; extra == "tokenizers"
107
+ Requires-Dist: tokenizers; extra == "tokenizers"
108
108
  Provides-Extra: agentql
109
109
  Requires-Dist: agentql; extra == "agentql"
110
110
  Provides-Extra: apify
@@ -133,9 +133,11 @@ Requires-Dist: exa_py; extra == "exa"
133
133
  Provides-Extra: fal
134
134
  Requires-Dist: fal_client; extra == "fal"
135
135
  Provides-Extra: firecrawl
136
- Requires-Dist: firecrawl-py; extra == "firecrawl"
136
+ Requires-Dist: firecrawl-py==3.4.0; extra == "firecrawl"
137
+ Provides-Extra: tavily
138
+ Requires-Dist: tavily-python; extra == "tavily"
137
139
  Provides-Extra: crawl4ai
138
- Requires-Dist: crawl4ai; extra == "crawl4ai"
140
+ Requires-Dist: crawl4ai>=0.6.3; extra == "crawl4ai"
139
141
  Provides-Extra: github
140
142
  Requires-Dist: PyGithub; extra == "github"
141
143
  Provides-Extra: gmail
@@ -150,19 +152,25 @@ Requires-Dist: google-maps-places; extra == "googlemaps"
150
152
  Provides-Extra: matplotlib
151
153
  Requires-Dist: matplotlib; extra == "matplotlib"
152
154
  Provides-Extra: mcp
153
- Requires-Dist: mcp; extra == "mcp"
155
+ Requires-Dist: mcp>=1.9.2; extra == "mcp"
154
156
  Provides-Extra: mem0
155
157
  Requires-Dist: mem0ai; extra == "mem0"
156
158
  Provides-Extra: memori
157
- Requires-Dist: memorisdk; extra == "memori"
159
+ Requires-Dist: memorisdk==3.0.5; extra == "memori"
158
160
  Provides-Extra: newspaper
159
161
  Requires-Dist: newspaper4k; extra == "newspaper"
160
162
  Requires-Dist: lxml_html_clean; extra == "newspaper"
163
+ Provides-Extra: notion
164
+ Requires-Dist: notion-client; extra == "notion"
161
165
  Provides-Extra: opencv
162
166
  Requires-Dist: opencv-python; extra == "opencv"
167
+ Provides-Extra: parallel
168
+ Requires-Dist: parallel-web; extra == "parallel"
163
169
  Provides-Extra: psycopg
164
170
  Requires-Dist: psycopg-binary; extra == "psycopg"
165
171
  Requires-Dist: psycopg; extra == "psycopg"
172
+ Provides-Extra: redshift
173
+ Requires-Dist: redshift-connector; extra == "redshift"
166
174
  Provides-Extra: reportlab
167
175
  Requires-Dist: reportlab; extra == "reportlab"
168
176
  Provides-Extra: scrapegraph
@@ -191,6 +199,11 @@ Provides-Extra: sql
191
199
  Requires-Dist: sqlalchemy; extra == "sql"
192
200
  Provides-Extra: postgres
193
201
  Requires-Dist: psycopg-binary; extra == "postgres"
202
+ Provides-Extra: async-postgres
203
+ Requires-Dist: asyncpg; extra == "async-postgres"
204
+ Provides-Extra: async-mongo
205
+ Requires-Dist: pymongo>=4.9; extra == "async-mongo"
206
+ Requires-Dist: motor; extra == "async-mongo"
194
207
  Provides-Extra: sqlite
195
208
  Requires-Dist: sqlalchemy; extra == "sqlite"
196
209
  Provides-Extra: gcs
@@ -199,12 +212,16 @@ Provides-Extra: firestore
199
212
  Requires-Dist: google-cloud-firestore; extra == "firestore"
200
213
  Provides-Extra: redis
201
214
  Requires-Dist: redis; extra == "redis"
215
+ Requires-Dist: redisvl; extra == "redis"
216
+ Provides-Extra: mysql
217
+ Requires-Dist: pymysql; extra == "mysql"
218
+ Requires-Dist: asyncmy; extra == "mysql"
202
219
  Provides-Extra: pgvector
203
220
  Requires-Dist: pgvector; extra == "pgvector"
204
221
  Provides-Extra: chromadb
205
222
  Requires-Dist: chromadb; extra == "chromadb"
206
223
  Provides-Extra: lancedb
207
- Requires-Dist: lancedb>=0.24.0; extra == "lancedb"
224
+ Requires-Dist: lancedb==0.24.0; extra == "lancedb"
208
225
  Requires-Dist: tantivy; extra == "lancedb"
209
226
  Provides-Extra: pylance
210
227
  Requires-Dist: pylance; extra == "pylance"
@@ -235,6 +252,8 @@ Requires-Dist: pypdf; extra == "pdf"
235
252
  Requires-Dist: rapidocr_onnxruntime; extra == "pdf"
236
253
  Provides-Extra: docx
237
254
  Requires-Dist: python-docx; extra == "docx"
255
+ Provides-Extra: pptx
256
+ Requires-Dist: python-pptx; extra == "pptx"
238
257
  Provides-Extra: text
239
258
  Requires-Dist: aiofiles; extra == "text"
240
259
  Provides-Extra: csv
@@ -273,7 +292,6 @@ Requires-Dist: agno[cohere]; extra == "models"
273
292
  Requires-Dist: agno[google]; extra == "models"
274
293
  Requires-Dist: agno[groq]; extra == "models"
275
294
  Requires-Dist: agno[ibm]; extra == "models"
276
- Requires-Dist: agno[infinity]; extra == "models"
277
295
  Requires-Dist: agno[litellm]; extra == "models"
278
296
  Requires-Dist: agno[meta]; extra == "models"
279
297
  Requires-Dist: agno[mistral]; extra == "models"
@@ -283,7 +301,6 @@ Requires-Dist: agno[portkey]; extra == "models"
283
301
  Provides-Extra: tools
284
302
  Requires-Dist: agno[apify]; extra == "tools"
285
303
  Requires-Dist: agno[arxiv]; extra == "tools"
286
- Requires-Dist: agno[brave]; extra == "tools"
287
304
  Requires-Dist: agno[exa]; extra == "tools"
288
305
  Requires-Dist: agno[cartesia]; extra == "tools"
289
306
  Requires-Dist: agno[ddg]; extra == "tools"
@@ -291,6 +308,7 @@ Requires-Dist: agno[duckdb]; extra == "tools"
291
308
  Requires-Dist: agno[newspaper]; extra == "tools"
292
309
  Requires-Dist: agno[youtube]; extra == "tools"
293
310
  Requires-Dist: agno[firecrawl]; extra == "tools"
311
+ Requires-Dist: agno[tavily]; extra == "tools"
294
312
  Requires-Dist: agno[crawl4ai]; extra == "tools"
295
313
  Requires-Dist: agno[github]; extra == "tools"
296
314
  Requires-Dist: agno[gmail]; extra == "tools"
@@ -305,21 +323,27 @@ Requires-Dist: agno[mcp]; extra == "tools"
305
323
  Requires-Dist: agno[browserbase]; extra == "tools"
306
324
  Requires-Dist: agno[agentql]; extra == "tools"
307
325
  Requires-Dist: agno[opencv]; extra == "tools"
326
+ Requires-Dist: agno[parallel]; extra == "tools"
308
327
  Requires-Dist: agno[scrapegraph]; extra == "tools"
309
328
  Requires-Dist: agno[valyu]; extra == "tools"
329
+ Requires-Dist: agno[yfinance]; extra == "tools"
310
330
  Requires-Dist: agno[confluence]; extra == "tools"
331
+ Requires-Dist: agno[notion]; extra == "tools"
311
332
  Requires-Dist: agno[oxylabs]; extra == "tools"
312
333
  Requires-Dist: agno[zep]; extra == "tools"
313
334
  Requires-Dist: agno[mem0]; extra == "tools"
314
335
  Requires-Dist: agno[memori]; extra == "tools"
315
336
  Requires-Dist: agno[google_bigquery]; extra == "tools"
316
337
  Requires-Dist: agno[psycopg]; extra == "tools"
338
+ Requires-Dist: agno[redshift]; extra == "tools"
317
339
  Requires-Dist: agno[reportlab]; extra == "tools"
318
340
  Requires-Dist: agno[trafilatura]; extra == "tools"
319
341
  Requires-Dist: agno[neo4j]; extra == "tools"
320
342
  Provides-Extra: storage
321
343
  Requires-Dist: agno[sql]; extra == "storage"
322
344
  Requires-Dist: agno[postgres]; extra == "storage"
345
+ Requires-Dist: agno[async_postgres]; extra == "storage"
346
+ Requires-Dist: agno[async_mongo]; extra == "storage"
323
347
  Requires-Dist: agno[sqlite]; extra == "storage"
324
348
  Requires-Dist: agno[gcs]; extra == "storage"
325
349
  Requires-Dist: agno[firestore]; extra == "storage"
@@ -339,16 +363,20 @@ Requires-Dist: agno[clickhouse]; extra == "vectordbs"
339
363
  Requires-Dist: agno[pinecone]; extra == "vectordbs"
340
364
  Requires-Dist: agno[surrealdb]; extra == "vectordbs"
341
365
  Requires-Dist: agno[upstash]; extra == "vectordbs"
366
+ Requires-Dist: agno[pylance]; extra == "vectordbs"
342
367
  Provides-Extra: knowledge
343
368
  Requires-Dist: agno[pdf]; extra == "knowledge"
344
369
  Requires-Dist: agno[docx]; extra == "knowledge"
370
+ Requires-Dist: agno[pptx]; extra == "knowledge"
345
371
  Requires-Dist: agno[text]; extra == "knowledge"
346
372
  Requires-Dist: agno[csv]; extra == "knowledge"
347
373
  Requires-Dist: agno[markdown]; extra == "knowledge"
348
374
  Requires-Dist: agno[chonkie]; extra == "knowledge"
349
375
  Provides-Extra: embedders
350
376
  Requires-Dist: agno[huggingface]; extra == "embedders"
377
+ Requires-Dist: agno[vllm]; extra == "embedders"
351
378
  Provides-Extra: tests
379
+ Requires-Dist: agno[a2a]; extra == "tests"
352
380
  Requires-Dist: agno[dev]; extra == "tests"
353
381
  Requires-Dist: agno[models]; extra == "tests"
354
382
  Requires-Dist: agno[tools]; extra == "tests"
@@ -359,12 +387,21 @@ Requires-Dist: agno[embedders]; extra == "tests"
359
387
  Requires-Dist: agno[performance]; extra == "tests"
360
388
  Requires-Dist: agno[cookbooks]; extra == "tests"
361
389
  Requires-Dist: agno[agui]; extra == "tests"
390
+ Requires-Dist: agno[integration-tests]; extra == "tests"
362
391
  Requires-Dist: twine; extra == "tests"
363
392
  Requires-Dist: build; extra == "tests"
393
+ Requires-Dist: grpcio==1.74.0; extra == "tests"
394
+ Provides-Extra: integration-tests
395
+ Requires-Dist: exa_py; extra == "integration-tests"
396
+ Requires-Dist: ddgs; extra == "integration-tests"
397
+ Requires-Dist: yfinance; extra == "integration-tests"
398
+ Requires-Dist: sqlalchemy; extra == "integration-tests"
399
+ Requires-Dist: Pillow; extra == "integration-tests"
400
+ Requires-Dist: fastmcp; extra == "integration-tests"
364
401
  Dynamic: license-file
365
402
 
366
403
  <div align="center" id="top">
367
- <a href="https://docs.agno.com">
404
+ <a href="https://agno.com">
368
405
  <picture>
369
406
  <source media="(prefers-color-scheme: dark)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-dark.svg">
370
407
  <source media="(prefers-color-scheme: light)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg">
@@ -372,62 +409,137 @@ Dynamic: license-file
372
409
  </picture>
373
410
  </a>
374
411
  </div>
412
+
375
413
  <div align="center">
376
- <a href="https://docs.agno.com">📚 Documentation</a> &nbsp;|&nbsp;
377
- <a href="https://docs.agno.com/examples/introduction">💡 Examples</a> &nbsp;|&nbsp;
378
- <a href="https://www.agno.com/?utm_source=github&utm_medium=readme&utm_campaign=agno-github&utm_content=header">🏠 Website</a> &nbsp;|&nbsp;
379
- <a href="https://github.com/agno-agi/agno/stargazers">🌟 Star Us</a>
414
+ <a href="https://docs.agno.com">Documentation</a>
415
+ <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
416
+ <a href="https://docs.agno.com/examples/use-cases/agents/overview">Examples</a>
417
+ <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
418
+ <a href="https://www.agno.com/?utm_source=github&utm_medium=readme&utm_campaign=agno-github">Website</a>
419
+ <br />
380
420
  </div>
381
421
 
382
422
  ## What is Agno?
383
423
 
384
- [Agno](https://docs.agno.com) is a high-performance SDK and runtime for multi-agent systems. Use it to build, run and manage multi-agent systems in your cloud.
424
+ Agno is an incredibly fast multi-agent framework, runtime and control plane.
425
+
426
+ Companies want to build AI products, run them as a secure containerized service in their cloud, and monitor, test, and manage their agentic system with a beautiful UI. Doing this takes far more than calling an LLM API in a loop, it requires a thoughtfully designed agentic platform.
385
427
 
386
- Agno is the fastest framework for building agents with built-in memory, knowledge, session management, human in the loop and best-in-class MCP support. You can put agents together as multi-agent teams or step-based agentic workflows.
428
+ Agno provides the unified stack for building, running and managing multi-agent systems:
429
+
430
+ - **Framework**: Build agents, multi-agent teams and workflows with memory, knowledge, state, guardrails, HITL, context compression, MCP, A2A and 100+ toolkits.
431
+ - **AgentOS Runtime**: Run your multi-agent system in production with a secure, stateless runtime and ready to use integration endpoints.
432
+ - **AgentOS Control Plane**: Test, monitor and manage AgentOS deployments across environments with full operational visibility.
433
+
434
+ Checkout the full list of features [here](#features).
435
+
436
+ ## Getting started
437
+
438
+ If you're new to Agno, follow our [quickstart](https://docs.agno.com/get-started/quickstart) to build your first Agent and chat with it using the AgentOS UI.
439
+
440
+ After that, checkout the [examples gallery](https://docs.agno.com/examples/use-cases/agents/overview) and build real-world applications with Agno.
441
+
442
+ ## Documentation, Community & More Examples
443
+
444
+ - Docs: <a href="https://docs.agno.com" target="_blank" rel="noopener noreferrer">docs.agno.com</a>
445
+ - Cookbook: <a href="https://github.com/agno-agi/agno/tree/main/cookbook" target="_blank" rel="noopener noreferrer">Cookbook</a>
446
+ - Community forum: <a href="https://community.agno.com/" target="_blank" rel="noopener noreferrer">community.agno.com</a>
447
+ - Discord: <a href="https://discord.gg/4MtYHHrgA8" target="_blank" rel="noopener noreferrer">discord</a>
387
448
 
388
- In 10 lines of code, we can build an Agent that uses tools to achieve a task.
449
+ ## Example
389
450
 
390
- ```python hackernews_agent.py
451
+ Here's an example of an Agent that connects to an MCP server, manages conversation state in a database, is served using a FastAPI application that you can chat with using the [AgentOS UI](https://os.agno.com).
452
+
453
+ ```python agno_agent.py
391
454
  from agno.agent import Agent
455
+ from agno.db.sqlite import SqliteDb
392
456
  from agno.models.anthropic import Claude
393
- from agno.tools.hackernews import HackerNewsTools
457
+ from agno.os import AgentOS
458
+ from agno.tools.mcp import MCPTools
394
459
 
395
- agent = Agent(
460
+ # ************* Create Agent *************
461
+ agno_agent = Agent(
462
+ name="Agno Agent",
396
463
  model=Claude(id="claude-sonnet-4-5"),
397
- tools=[HackerNewsTools()],
464
+ # Add a database to the Agent
465
+ db=SqliteDb(db_file="agno.db"),
466
+ # Add the Agno MCP server to the Agent
467
+ tools=[MCPTools(transport="streamable-http", url="https://docs.agno.com/mcp")],
468
+ # Add the previous session history to the context
469
+ add_history_to_context=True,
398
470
  markdown=True,
399
471
  )
400
- agent.print_response("Write a report on trending startups and products.", stream=True)
472
+
473
+
474
+ # ************* Create AgentOS *************
475
+ agent_os = AgentOS(agents=[agno_agent])
476
+ # Get the FastAPI app for the AgentOS
477
+ app = agent_os.get_app()
478
+
479
+ # ************* Run AgentOS *************
480
+ if __name__ == "__main__":
481
+ agent_os.serve(app="agno_agent:app", reload=True)
401
482
  ```
402
483
 
403
- But the real advantage of Agno is its [AgentOS](https://docs.agno.com/agent-os/introduction) runtime:
484
+ ## AgentOS - Production Runtime for Multi-Agent Systems
404
485
 
405
- 1. You get a pre-built FastAPI app for serving your agents, teams and workflows, meaning you start building your AI product on day one. This is a remarkable advantage over other solutions.
406
- 2. You also get a UI that connects directly to the pre-built FastAPI app. Use it to test, monitor and manage your system. This gives you unmatched visibility and control.
407
- 3. Your AgentOS runs in your cloud and you get complete privacy because no data ever leaves your system. This is incredible for security conscious enterprises that can't send data to external services.
486
+ Building Agents is easy, running them as a secure, scalable service is hard. AgentOS solves this by providing a high performance runtime for serving multi-agent systems in production. Key features include:
408
487
 
409
- For organizations building agents, Agno provides the complete solution. You get the fastest framework for building agents (speed of development and execution), a pre-built FastAPI app that get you building product on day one, and a control plane for managing your system.
488
+ 1. **Pre-built FastAPI app**: AgentOS includes a ready-to-use FastAPI app for running your agents, teams and workflows. This gives you a significant head start when building an AI product.
410
489
 
411
- We bring a novel architecture that no other framework provides, your AgentOS runs securely in your cloud, and the control plane connects directly to it from your browser. You don't need to send data to any external services or pay retention costs, you get complete privacy and control.
490
+ 2. **Integrated Control Plane**: The [AgentOS UI](https://os.agno.com) connects directly to your runtime, so you can test, monitor and manage your system in real time with full operational visibility.
412
491
 
413
- ## Getting started
492
+ 3. **Private by Design**: AgentOS runs entirely in your cloud, ensuring complete data privacy. No data leaves your environment, making it ideal for security conscious enterprises..
414
493
 
415
- If you're new to Agno, follow our [quickstart](https://docs.agno.com/introduction/quickstart) to build your first Agent and run it using the AgentOS.
494
+ When you run the example script shared above, you get a FastAPI app that you can connect to the [AgentOS UI](https://os.agno.com). Here's what it looks like in action:
416
495
 
417
- After that, checkout the [examples gallery](https://docs.agno.com/examples/introduction) and build real-world applications with Agno.
496
+ https://github.com/user-attachments/assets/feb23db8-15cc-4e88-be7c-01a21a03ebf6
418
497
 
419
- ## Documentation, Community & More Examples
498
+ ## The Complete Agentic Solution
420
499
 
421
- - Docs: <a href="https://docs.agno.com" target="_blank" rel="noopener noreferrer">docs.agno.com</a>
422
- - Cookbook: <a href="https://github.com/agno-agi/agno/tree/main/cookbook" target="_blank" rel="noopener noreferrer">Cookbook</a>
423
- - Community forum: <a href="https://community.agno.com/" target="_blank" rel="noopener noreferrer">community.agno.com</a>
424
- - Discord: <a href="https://discord.gg/4MtYHHrgA8" target="_blank" rel="noopener noreferrer">discord</a>
500
+ Agno provides the complete solution for companies building agentic systems:
425
501
 
426
- ## Setup Your Coding Agent to Use Agno
502
+ - The fastest framework for building agents, multi-agent teams and agentic workflows.
503
+ - A ready-to-use FastAPI app that gets you building AI products on day one.
504
+ - A control plane for testing, monitoring and managing your system.
505
+
506
+ Agno brings a novel architecture that no other framework provides, your AgentOS runs securely in your cloud, and the control plane connects directly to it from your browser. You don't need to send data to any external services or pay retention costs, you get complete privacy and control.
507
+
508
+ ## Features
427
509
 
428
- For LLMs and AI assistants to understand and navigate Agno's documentation, we provide an [llms.txt](https://docs.agno.com/llms.txt) or [llms-full.txt](https://docs.agno.com/llms-full.txt) file.
510
+ Agno is an incredibly feature-rich framework purpose-built for Agent Engineering. Here are some key features:
429
511
 
430
- This file is built for AI systems to efficiently parse and reference our documentation.
512
+ | **Category** | **Feature** | **Description** |
513
+ | -------------------------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
514
+ | **Foundational Principles** | **Model Agnostic** | Supports all model providers so you can choose the best model for your use case |
515
+ | | **Type Safe** | Enforces structured I/O through input_schema and output_schema for predictable and composable agent behavior. |
516
+ | | **Dynamic Context** | Inject variables, state, and retrieved data at runtime into context. Compress, summarize and filter context to keep your Agents focused and efficient. |
517
+ | | **Designed for Scale** | Designed around async execution and long-running tasks for high throughput agent workloads. |
518
+ | **Memory, Knowledge, and Persistence** | **Persistent Storage** | Give your Agents, Teams, and Workflows a database to persist session history, state, and messages. |
519
+ | | **User Memory** | Built in memory layer that helps agents recall user specific context across sessions. |
520
+ | | **Agentic RAG** | Connect to 20+ vector stores (called **Knowledge**) with hybrid search, reranking, and chunking out of the box. |
521
+ | | **Culture** | Shared long term collective memory that compounds across agents and time. |
522
+ | | **Ephemeral Context** | In memory scratchpad for short lived reasoning without polluting long term state. |
523
+ | **Execution & Control** | **Human-in-the-Loop** | Native support for confirmations, approvals, manual overrides, and external actions. |
524
+ | | **Guardrails** | Built-in safeguards for validation, security, and prompt protection. |
525
+ | | **Agent Lifecycle Hooks** | Pre and post hooks to validate, enrich, or transform inputs and outputs. |
526
+ | | **MCP Integration** | First-class support for the Model Context Protocol (MCP) to connect Agents with external systems. |
527
+ | | **A2A Integration** | First-class support for the Agent to Agent communication protocol (A2A). |
528
+ | | **Toolkits** | 100+ built in toolkits with thousands of tools covering data, code, web, and enterprise APIs. |
529
+ | **Runtime & Evaluation** | **Runtime** | Prebuilt FastAPI runtime with SSE compatible endpoints. Production ready from day one. |
530
+ | | **Control Plane (UI)** | Integrated interface to test, observe, and debug your agents, teams, and workflows in real time. |
531
+ | | **Natively Multimodal** | Agents can process and generate text, images, audio, video, and files. |
532
+ | | **Evals** | Measure Accuracy, Performance, Latency, and Reliability across agents and workflows. |
533
+ | | **Durable Execution** | Built in support for long running, resumable workflows. |
534
+ | **Security & Privacy** | **Private by Design** | Runs entirely in your cloud. The UI connects directly to your AgentOS from your browser, no data is ever sent externally. |
535
+ | | **Data Governance** | Your data lives securely in your Agent database, no external data sharing or vendor lock-in. |
536
+ | | **Access Control** | Role-based access (RBAC) and per-agent permissions to protect sensitive contexts and tools. |
537
+
538
+ Every part of Agno is built for real-world deployment — where developer experience meets production performance.
539
+
540
+ ## Setup Your Coding Agent to Use Agno
541
+
542
+ For LLMs and AI assistants to understand and navigate Agno's documentation, we provide an [llms.txt](https://docs.agno.com/llms.txt) or [llms-full.txt](https://docs.agno.com/llms-full.txt) file. This file is built for AI systems to efficiently parse and reference our documentation.
431
543
 
432
544
  ### IDE Integration
433
545
 
@@ -442,42 +554,52 @@ Now, Cursor will have access to the Agno documentation. You can do the same with
442
554
 
443
555
  ## Performance
444
556
 
445
- At Agno, we're obsessed with performance. Why? because even simple AI workflows can spawn thousands of Agents. Scale that to a modest number of users and performance becomes a bottleneck. Agno is designed for building highly performant agentic systems:
557
+ If you're building with Agno, you're guaranteed best-in-class performance by default. Our obsession with performance is necessary because even simple AI workflows can spawn hundreds of Agents and because many tasks are long-running -- stateless, horizontal scalability is key for success.
558
+
559
+ At Agno, we optimize performance across 3 dimensions:
560
+
561
+ 1. **Agent performance:** We optimize static operations (instantiation, memory footprint) and runtime operations (tool calls, memory updates, history management).
562
+ 2. **System performance:** The AgentOS API is async by default and has a minimal memory footprint. The system is stateless and horizontally scalable, with a focus on preventing memory leaks. It handles parallel and batch embedding generation during knowledge ingestion, metrics collection in background tasks, and other system-level optimizations.
563
+ 3. **Agent reliability and accuracy:** Monitored through evals, which we'll explore later.
564
+
565
+ ### Agent Performance
446
566
 
447
- - Agent instantiation: ~3μs on average
448
- - Memory footprint: ~6.5Kib on average
567
+ Let's measure the time it takes to instantiate an Agent and the memory footprint of an Agent. Here are the numbers (last measured in Oct 2025, on an Apple M4 MacBook Pro):
449
568
 
450
- > Tested on an Apple M4 MacBook Pro.
569
+ - **Agent instantiation:** ~3μs on average
570
+ - **Memory footprint:** ~6.6Kib on average
451
571
 
452
- While an Agent's run-time is bottlenecked by inference, we must do everything possible to minimize execution time, reduce memory usage, and parallelize tool calls. These numbers may seem trivial at first, but our experience shows that they add up even at a reasonably small scale.
572
+ We'll show below that Agno Agents instantiate **529× faster than Langgraph**, **57× faster than PydanticAI**, and **70× faster than CrewAI**. Agno Agents also use **24× lower memory than Langgraph**, **4× lower than PydanticAI**, and **10× lower than CrewAI**.
573
+
574
+ > [!NOTE]
575
+ > Run time performance is bottlenecked by inference and hard to benchmark accurately, so we focus on minimizing overhead, reducing memory usage, and parallelizing tool calls.
453
576
 
454
577
  ### Instantiation Time
455
578
 
456
- Let's measure the time it takes for an Agent with 1 tool to start up. We'll run the evaluation 1000 times to get a baseline measurement.
579
+ Let's measure instantiation time for an Agent with 1 tool. We'll run the evaluation 1000 times to get a baseline measurement. We'll compare Agno to LangGraph, CrewAI and Pydantic AI.
457
580
 
458
- You should run the evaluation yourself on your own machine, please, do not take these results at face value.
581
+ > [!NOTE]
582
+ > The code for this benchmark is available [here](https://github.com/agno-agi/agno/tree/main/cookbook/evals/performance). You should run the evaluation yourself on your own machine, please, do not take these results at face value.
459
583
 
460
584
  ```shell
461
585
  # Setup virtual environment
462
586
  ./scripts/perf_setup.sh
463
587
  source .venvs/perfenv/bin/activate
464
- # OR Install dependencies manually
465
- # pip install openai agno langgraph langchain_openai
466
588
 
467
589
  # Agno
468
590
  python cookbook/evals/performance/instantiate_agent_with_tool.py
469
591
 
470
592
  # LangGraph
471
593
  python cookbook/evals/performance/comparison/langgraph_instantiation.py
594
+ # CrewAI
595
+ python cookbook/evals/performance/comparison/crewai_instantiation.py
596
+ # Pydantic AI
597
+ python cookbook/evals/performance/comparison/pydantic_ai_instantiation.py
472
598
  ```
473
599
 
474
- > The following evaluation is run on an Apple M4 MacBook Pro. It also runs as a Github action on this repo.
475
-
476
- LangGraph is on the right, **let's start it first and give it a head start**.
477
-
478
- Agno is on the left, notice how it finishes before LangGraph gets 1/2 way through the runtime measurement, and hasn't even started the memory measurement. That's how fast Agno is.
600
+ LangGraph is on the right, **let's start it first and give it a head start**. Then CrewAI and Pydantic AI follow, and finally Agno. Agno obviously finishes first, but let's see by how much.
479
601
 
480
- https://github.com/user-attachments/assets/ba466d45-75dd-45ac-917b-0a56c5742e23
602
+ https://github.com/user-attachments/assets/54b98576-1859-4880-9f2d-15e1a426719d
481
603
 
482
604
  ### Memory Usage
483
605
 
@@ -485,11 +607,24 @@ To measure memory usage, we use the `tracemalloc` library. We first calculate a
485
607
 
486
608
  We recommend running the evaluation yourself on your own machine, and digging into the code to see how it works. If we've made a mistake, please let us know.
487
609
 
488
- ### Conclusion
610
+ ### Results
611
+
612
+ Taking Agno as the baseline, we can see that:
613
+
614
+ | Metric | Agno | Langgraph | PydanticAI | CrewAI |
615
+ | ------------------ | ---- | ----------- | ---------- | ---------- |
616
+ | **Time (seconds)** | 1× | 529× slower | 57× slower | 70× slower |
617
+ | **Memory (MiB)** | 1× | 24× higher | 4× higher | 10× higher |
618
+
619
+ Exact numbers from the benchmark:
489
620
 
490
- Agno agents are designed for performance and while we do share some benchmarks against other frameworks, we should be mindful that accuracy and reliability are more important than speed.
621
+ | Metric | Agno | Langgraph | PydanticAI | CrewAI |
622
+ | ------------------ | -------- | --------- | ---------- | -------- |
623
+ | **Time (seconds)** | 0.000003 | 0.001587 | 0.000170 | 0.000210 |
624
+ | **Memory (MiB)** | 0.006642 | 0.161435 | 0.028712 | 0.065652 |
491
625
 
492
- Given that each framework is different and we won't be able to tune their performance like we do with Agno, for future benchmarks we'll only be comparing against ourselves.
626
+ > [!NOTE]
627
+ > Agno agents are designed for performance and while we share benchmarks against other frameworks, we should be mindful that accuracy and reliability are more important than speed.
493
628
 
494
629
  ## Contributions
495
630