agno 2.2.13__py3-none-any.whl → 2.4.3__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 (383) hide show
  1. agno/agent/__init__.py +6 -0
  2. agno/agent/agent.py +5252 -3145
  3. agno/agent/remote.py +525 -0
  4. agno/api/api.py +2 -0
  5. agno/client/__init__.py +3 -0
  6. agno/client/a2a/__init__.py +10 -0
  7. agno/client/a2a/client.py +554 -0
  8. agno/client/a2a/schemas.py +112 -0
  9. agno/client/a2a/utils.py +369 -0
  10. agno/client/os.py +2669 -0
  11. agno/compression/__init__.py +3 -0
  12. agno/compression/manager.py +247 -0
  13. agno/culture/manager.py +2 -2
  14. agno/db/base.py +927 -6
  15. agno/db/dynamo/dynamo.py +788 -2
  16. agno/db/dynamo/schemas.py +128 -0
  17. agno/db/dynamo/utils.py +26 -3
  18. agno/db/firestore/firestore.py +674 -50
  19. agno/db/firestore/schemas.py +41 -0
  20. agno/db/firestore/utils.py +25 -10
  21. agno/db/gcs_json/gcs_json_db.py +506 -3
  22. agno/db/gcs_json/utils.py +14 -2
  23. agno/db/in_memory/in_memory_db.py +203 -4
  24. agno/db/in_memory/utils.py +14 -2
  25. agno/db/json/json_db.py +498 -2
  26. agno/db/json/utils.py +14 -2
  27. agno/db/migrations/manager.py +199 -0
  28. agno/db/migrations/utils.py +19 -0
  29. agno/db/migrations/v1_to_v2.py +54 -16
  30. agno/db/migrations/versions/__init__.py +0 -0
  31. agno/db/migrations/versions/v2_3_0.py +977 -0
  32. agno/db/mongo/async_mongo.py +1013 -39
  33. agno/db/mongo/mongo.py +684 -4
  34. agno/db/mongo/schemas.py +48 -0
  35. agno/db/mongo/utils.py +17 -0
  36. agno/db/mysql/__init__.py +2 -1
  37. agno/db/mysql/async_mysql.py +2958 -0
  38. agno/db/mysql/mysql.py +722 -53
  39. agno/db/mysql/schemas.py +77 -11
  40. agno/db/mysql/utils.py +151 -8
  41. agno/db/postgres/async_postgres.py +1254 -137
  42. agno/db/postgres/postgres.py +2316 -93
  43. agno/db/postgres/schemas.py +153 -21
  44. agno/db/postgres/utils.py +22 -7
  45. agno/db/redis/redis.py +531 -3
  46. agno/db/redis/schemas.py +36 -0
  47. agno/db/redis/utils.py +31 -15
  48. agno/db/schemas/evals.py +1 -0
  49. agno/db/schemas/memory.py +20 -9
  50. agno/db/singlestore/schemas.py +70 -1
  51. agno/db/singlestore/singlestore.py +737 -74
  52. agno/db/singlestore/utils.py +13 -3
  53. agno/db/sqlite/async_sqlite.py +1069 -89
  54. agno/db/sqlite/schemas.py +133 -1
  55. agno/db/sqlite/sqlite.py +2203 -165
  56. agno/db/sqlite/utils.py +21 -11
  57. agno/db/surrealdb/models.py +25 -0
  58. agno/db/surrealdb/surrealdb.py +603 -1
  59. agno/db/utils.py +60 -0
  60. agno/eval/__init__.py +26 -3
  61. agno/eval/accuracy.py +25 -12
  62. agno/eval/agent_as_judge.py +871 -0
  63. agno/eval/base.py +29 -0
  64. agno/eval/performance.py +10 -4
  65. agno/eval/reliability.py +22 -13
  66. agno/eval/utils.py +2 -1
  67. agno/exceptions.py +42 -0
  68. agno/hooks/__init__.py +3 -0
  69. agno/hooks/decorator.py +164 -0
  70. agno/integrations/discord/client.py +13 -2
  71. agno/knowledge/__init__.py +4 -0
  72. agno/knowledge/chunking/code.py +90 -0
  73. agno/knowledge/chunking/document.py +65 -4
  74. agno/knowledge/chunking/fixed.py +4 -1
  75. agno/knowledge/chunking/markdown.py +102 -11
  76. agno/knowledge/chunking/recursive.py +2 -2
  77. agno/knowledge/chunking/semantic.py +130 -48
  78. agno/knowledge/chunking/strategy.py +18 -0
  79. agno/knowledge/embedder/azure_openai.py +0 -1
  80. agno/knowledge/embedder/google.py +1 -1
  81. agno/knowledge/embedder/mistral.py +1 -1
  82. agno/knowledge/embedder/nebius.py +1 -1
  83. agno/knowledge/embedder/openai.py +16 -12
  84. agno/knowledge/filesystem.py +412 -0
  85. agno/knowledge/knowledge.py +4261 -1199
  86. agno/knowledge/protocol.py +134 -0
  87. agno/knowledge/reader/arxiv_reader.py +3 -2
  88. agno/knowledge/reader/base.py +9 -7
  89. agno/knowledge/reader/csv_reader.py +91 -42
  90. agno/knowledge/reader/docx_reader.py +9 -10
  91. agno/knowledge/reader/excel_reader.py +225 -0
  92. agno/knowledge/reader/field_labeled_csv_reader.py +38 -48
  93. agno/knowledge/reader/firecrawl_reader.py +3 -2
  94. agno/knowledge/reader/json_reader.py +16 -22
  95. agno/knowledge/reader/markdown_reader.py +15 -14
  96. agno/knowledge/reader/pdf_reader.py +33 -28
  97. agno/knowledge/reader/pptx_reader.py +9 -10
  98. agno/knowledge/reader/reader_factory.py +135 -1
  99. agno/knowledge/reader/s3_reader.py +8 -16
  100. agno/knowledge/reader/tavily_reader.py +3 -3
  101. agno/knowledge/reader/text_reader.py +15 -14
  102. agno/knowledge/reader/utils/__init__.py +17 -0
  103. agno/knowledge/reader/utils/spreadsheet.py +114 -0
  104. agno/knowledge/reader/web_search_reader.py +8 -65
  105. agno/knowledge/reader/website_reader.py +16 -13
  106. agno/knowledge/reader/wikipedia_reader.py +36 -3
  107. agno/knowledge/reader/youtube_reader.py +3 -2
  108. agno/knowledge/remote_content/__init__.py +33 -0
  109. agno/knowledge/remote_content/config.py +266 -0
  110. agno/knowledge/remote_content/remote_content.py +105 -17
  111. agno/knowledge/utils.py +76 -22
  112. agno/learn/__init__.py +71 -0
  113. agno/learn/config.py +463 -0
  114. agno/learn/curate.py +185 -0
  115. agno/learn/machine.py +725 -0
  116. agno/learn/schemas.py +1114 -0
  117. agno/learn/stores/__init__.py +38 -0
  118. agno/learn/stores/decision_log.py +1156 -0
  119. agno/learn/stores/entity_memory.py +3275 -0
  120. agno/learn/stores/learned_knowledge.py +1583 -0
  121. agno/learn/stores/protocol.py +117 -0
  122. agno/learn/stores/session_context.py +1217 -0
  123. agno/learn/stores/user_memory.py +1495 -0
  124. agno/learn/stores/user_profile.py +1220 -0
  125. agno/learn/utils.py +209 -0
  126. agno/media.py +22 -6
  127. agno/memory/__init__.py +14 -1
  128. agno/memory/manager.py +223 -8
  129. agno/memory/strategies/__init__.py +15 -0
  130. agno/memory/strategies/base.py +66 -0
  131. agno/memory/strategies/summarize.py +196 -0
  132. agno/memory/strategies/types.py +37 -0
  133. agno/models/aimlapi/aimlapi.py +17 -0
  134. agno/models/anthropic/claude.py +434 -59
  135. agno/models/aws/bedrock.py +121 -20
  136. agno/models/aws/claude.py +131 -274
  137. agno/models/azure/ai_foundry.py +10 -6
  138. agno/models/azure/openai_chat.py +33 -10
  139. agno/models/base.py +1162 -561
  140. agno/models/cerebras/cerebras.py +120 -24
  141. agno/models/cerebras/cerebras_openai.py +21 -2
  142. agno/models/cohere/chat.py +65 -6
  143. agno/models/cometapi/cometapi.py +18 -1
  144. agno/models/dashscope/dashscope.py +2 -3
  145. agno/models/deepinfra/deepinfra.py +18 -1
  146. agno/models/deepseek/deepseek.py +69 -3
  147. agno/models/fireworks/fireworks.py +18 -1
  148. agno/models/google/gemini.py +959 -89
  149. agno/models/google/utils.py +22 -0
  150. agno/models/groq/groq.py +48 -18
  151. agno/models/huggingface/huggingface.py +17 -6
  152. agno/models/ibm/watsonx.py +16 -6
  153. agno/models/internlm/internlm.py +18 -1
  154. agno/models/langdb/langdb.py +13 -1
  155. agno/models/litellm/chat.py +88 -9
  156. agno/models/litellm/litellm_openai.py +18 -1
  157. agno/models/message.py +24 -5
  158. agno/models/meta/llama.py +40 -13
  159. agno/models/meta/llama_openai.py +22 -21
  160. agno/models/metrics.py +12 -0
  161. agno/models/mistral/mistral.py +8 -4
  162. agno/models/n1n/__init__.py +3 -0
  163. agno/models/n1n/n1n.py +57 -0
  164. agno/models/nebius/nebius.py +6 -7
  165. agno/models/nvidia/nvidia.py +20 -3
  166. agno/models/ollama/__init__.py +2 -0
  167. agno/models/ollama/chat.py +17 -6
  168. agno/models/ollama/responses.py +100 -0
  169. agno/models/openai/__init__.py +2 -0
  170. agno/models/openai/chat.py +117 -26
  171. agno/models/openai/open_responses.py +46 -0
  172. agno/models/openai/responses.py +110 -32
  173. agno/models/openrouter/__init__.py +2 -0
  174. agno/models/openrouter/openrouter.py +67 -2
  175. agno/models/openrouter/responses.py +146 -0
  176. agno/models/perplexity/perplexity.py +19 -1
  177. agno/models/portkey/portkey.py +7 -6
  178. agno/models/requesty/requesty.py +19 -2
  179. agno/models/response.py +20 -2
  180. agno/models/sambanova/sambanova.py +20 -3
  181. agno/models/siliconflow/siliconflow.py +19 -2
  182. agno/models/together/together.py +20 -3
  183. agno/models/vercel/v0.py +20 -3
  184. agno/models/vertexai/claude.py +124 -4
  185. agno/models/vllm/vllm.py +19 -14
  186. agno/models/xai/xai.py +19 -2
  187. agno/os/app.py +467 -137
  188. agno/os/auth.py +253 -5
  189. agno/os/config.py +22 -0
  190. agno/os/interfaces/a2a/a2a.py +7 -6
  191. agno/os/interfaces/a2a/router.py +635 -26
  192. agno/os/interfaces/a2a/utils.py +32 -33
  193. agno/os/interfaces/agui/agui.py +5 -3
  194. agno/os/interfaces/agui/router.py +26 -16
  195. agno/os/interfaces/agui/utils.py +97 -57
  196. agno/os/interfaces/base.py +7 -7
  197. agno/os/interfaces/slack/router.py +16 -7
  198. agno/os/interfaces/slack/slack.py +7 -7
  199. agno/os/interfaces/whatsapp/router.py +35 -7
  200. agno/os/interfaces/whatsapp/security.py +3 -1
  201. agno/os/interfaces/whatsapp/whatsapp.py +11 -8
  202. agno/os/managers.py +326 -0
  203. agno/os/mcp.py +652 -79
  204. agno/os/middleware/__init__.py +4 -0
  205. agno/os/middleware/jwt.py +718 -115
  206. agno/os/middleware/trailing_slash.py +27 -0
  207. agno/os/router.py +105 -1558
  208. agno/os/routers/agents/__init__.py +3 -0
  209. agno/os/routers/agents/router.py +655 -0
  210. agno/os/routers/agents/schema.py +288 -0
  211. agno/os/routers/components/__init__.py +3 -0
  212. agno/os/routers/components/components.py +475 -0
  213. agno/os/routers/database.py +155 -0
  214. agno/os/routers/evals/evals.py +111 -18
  215. agno/os/routers/evals/schemas.py +38 -5
  216. agno/os/routers/evals/utils.py +80 -11
  217. agno/os/routers/health.py +3 -3
  218. agno/os/routers/knowledge/knowledge.py +284 -35
  219. agno/os/routers/knowledge/schemas.py +14 -2
  220. agno/os/routers/memory/memory.py +274 -11
  221. agno/os/routers/memory/schemas.py +44 -3
  222. agno/os/routers/metrics/metrics.py +30 -15
  223. agno/os/routers/metrics/schemas.py +10 -6
  224. agno/os/routers/registry/__init__.py +3 -0
  225. agno/os/routers/registry/registry.py +337 -0
  226. agno/os/routers/session/session.py +143 -14
  227. agno/os/routers/teams/__init__.py +3 -0
  228. agno/os/routers/teams/router.py +550 -0
  229. agno/os/routers/teams/schema.py +280 -0
  230. agno/os/routers/traces/__init__.py +3 -0
  231. agno/os/routers/traces/schemas.py +414 -0
  232. agno/os/routers/traces/traces.py +549 -0
  233. agno/os/routers/workflows/__init__.py +3 -0
  234. agno/os/routers/workflows/router.py +757 -0
  235. agno/os/routers/workflows/schema.py +139 -0
  236. agno/os/schema.py +157 -584
  237. agno/os/scopes.py +469 -0
  238. agno/os/settings.py +3 -0
  239. agno/os/utils.py +574 -185
  240. agno/reasoning/anthropic.py +85 -1
  241. agno/reasoning/azure_ai_foundry.py +93 -1
  242. agno/reasoning/deepseek.py +102 -2
  243. agno/reasoning/default.py +6 -7
  244. agno/reasoning/gemini.py +87 -3
  245. agno/reasoning/groq.py +109 -2
  246. agno/reasoning/helpers.py +6 -7
  247. agno/reasoning/manager.py +1238 -0
  248. agno/reasoning/ollama.py +93 -1
  249. agno/reasoning/openai.py +115 -1
  250. agno/reasoning/vertexai.py +85 -1
  251. agno/registry/__init__.py +3 -0
  252. agno/registry/registry.py +68 -0
  253. agno/remote/__init__.py +3 -0
  254. agno/remote/base.py +581 -0
  255. agno/run/__init__.py +2 -4
  256. agno/run/agent.py +134 -19
  257. agno/run/base.py +49 -1
  258. agno/run/cancel.py +65 -52
  259. agno/run/cancellation_management/__init__.py +9 -0
  260. agno/run/cancellation_management/base.py +78 -0
  261. agno/run/cancellation_management/in_memory_cancellation_manager.py +100 -0
  262. agno/run/cancellation_management/redis_cancellation_manager.py +236 -0
  263. agno/run/requirement.py +181 -0
  264. agno/run/team.py +111 -19
  265. agno/run/workflow.py +2 -1
  266. agno/session/agent.py +57 -92
  267. agno/session/summary.py +1 -1
  268. agno/session/team.py +62 -115
  269. agno/session/workflow.py +353 -57
  270. agno/skills/__init__.py +17 -0
  271. agno/skills/agent_skills.py +377 -0
  272. agno/skills/errors.py +32 -0
  273. agno/skills/loaders/__init__.py +4 -0
  274. agno/skills/loaders/base.py +27 -0
  275. agno/skills/loaders/local.py +216 -0
  276. agno/skills/skill.py +65 -0
  277. agno/skills/utils.py +107 -0
  278. agno/skills/validator.py +277 -0
  279. agno/table.py +10 -0
  280. agno/team/__init__.py +5 -1
  281. agno/team/remote.py +447 -0
  282. agno/team/team.py +3769 -2202
  283. agno/tools/brandfetch.py +27 -18
  284. agno/tools/browserbase.py +225 -16
  285. agno/tools/crawl4ai.py +3 -0
  286. agno/tools/duckduckgo.py +25 -71
  287. agno/tools/exa.py +0 -21
  288. agno/tools/file.py +14 -13
  289. agno/tools/file_generation.py +12 -6
  290. agno/tools/firecrawl.py +15 -7
  291. agno/tools/function.py +94 -113
  292. agno/tools/google_bigquery.py +11 -2
  293. agno/tools/google_drive.py +4 -3
  294. agno/tools/knowledge.py +9 -4
  295. agno/tools/mcp/mcp.py +301 -18
  296. agno/tools/mcp/multi_mcp.py +269 -14
  297. agno/tools/mem0.py +11 -10
  298. agno/tools/memory.py +47 -46
  299. agno/tools/mlx_transcribe.py +10 -7
  300. agno/tools/models/nebius.py +5 -5
  301. agno/tools/models_labs.py +20 -10
  302. agno/tools/nano_banana.py +151 -0
  303. agno/tools/parallel.py +0 -7
  304. agno/tools/postgres.py +76 -36
  305. agno/tools/python.py +14 -6
  306. agno/tools/reasoning.py +30 -23
  307. agno/tools/redshift.py +406 -0
  308. agno/tools/shopify.py +1519 -0
  309. agno/tools/spotify.py +919 -0
  310. agno/tools/tavily.py +4 -1
  311. agno/tools/toolkit.py +253 -18
  312. agno/tools/websearch.py +93 -0
  313. agno/tools/website.py +1 -1
  314. agno/tools/wikipedia.py +1 -1
  315. agno/tools/workflow.py +56 -48
  316. agno/tools/yfinance.py +12 -11
  317. agno/tracing/__init__.py +12 -0
  318. agno/tracing/exporter.py +161 -0
  319. agno/tracing/schemas.py +276 -0
  320. agno/tracing/setup.py +112 -0
  321. agno/utils/agent.py +251 -10
  322. agno/utils/cryptography.py +22 -0
  323. agno/utils/dttm.py +33 -0
  324. agno/utils/events.py +264 -7
  325. agno/utils/hooks.py +111 -3
  326. agno/utils/http.py +161 -2
  327. agno/utils/mcp.py +49 -8
  328. agno/utils/media.py +22 -1
  329. agno/utils/models/ai_foundry.py +9 -2
  330. agno/utils/models/claude.py +20 -5
  331. agno/utils/models/cohere.py +9 -2
  332. agno/utils/models/llama.py +9 -2
  333. agno/utils/models/mistral.py +4 -2
  334. agno/utils/os.py +0 -0
  335. agno/utils/print_response/agent.py +99 -16
  336. agno/utils/print_response/team.py +223 -24
  337. agno/utils/print_response/workflow.py +0 -2
  338. agno/utils/prompts.py +8 -6
  339. agno/utils/remote.py +23 -0
  340. agno/utils/response.py +1 -13
  341. agno/utils/string.py +91 -2
  342. agno/utils/team.py +62 -12
  343. agno/utils/tokens.py +657 -0
  344. agno/vectordb/base.py +15 -2
  345. agno/vectordb/cassandra/cassandra.py +1 -1
  346. agno/vectordb/chroma/__init__.py +2 -1
  347. agno/vectordb/chroma/chromadb.py +468 -23
  348. agno/vectordb/clickhouse/clickhousedb.py +1 -1
  349. agno/vectordb/couchbase/couchbase.py +6 -2
  350. agno/vectordb/lancedb/lance_db.py +7 -38
  351. agno/vectordb/lightrag/lightrag.py +7 -6
  352. agno/vectordb/milvus/milvus.py +118 -84
  353. agno/vectordb/mongodb/__init__.py +2 -1
  354. agno/vectordb/mongodb/mongodb.py +14 -31
  355. agno/vectordb/pgvector/pgvector.py +120 -66
  356. agno/vectordb/pineconedb/pineconedb.py +2 -19
  357. agno/vectordb/qdrant/__init__.py +2 -1
  358. agno/vectordb/qdrant/qdrant.py +33 -56
  359. agno/vectordb/redis/__init__.py +2 -1
  360. agno/vectordb/redis/redisdb.py +19 -31
  361. agno/vectordb/singlestore/singlestore.py +17 -9
  362. agno/vectordb/surrealdb/surrealdb.py +2 -38
  363. agno/vectordb/weaviate/__init__.py +2 -1
  364. agno/vectordb/weaviate/weaviate.py +7 -3
  365. agno/workflow/__init__.py +5 -1
  366. agno/workflow/agent.py +2 -2
  367. agno/workflow/condition.py +12 -10
  368. agno/workflow/loop.py +28 -9
  369. agno/workflow/parallel.py +21 -13
  370. agno/workflow/remote.py +362 -0
  371. agno/workflow/router.py +12 -9
  372. agno/workflow/step.py +261 -36
  373. agno/workflow/steps.py +12 -8
  374. agno/workflow/types.py +40 -77
  375. agno/workflow/workflow.py +939 -213
  376. {agno-2.2.13.dist-info → agno-2.4.3.dist-info}/METADATA +134 -181
  377. agno-2.4.3.dist-info/RECORD +677 -0
  378. {agno-2.2.13.dist-info → agno-2.4.3.dist-info}/WHEEL +1 -1
  379. agno/tools/googlesearch.py +0 -98
  380. agno/tools/memori.py +0 -339
  381. agno-2.2.13.dist-info/RECORD +0 -575
  382. {agno-2.2.13.dist-info → agno-2.4.3.dist-info}/licenses/LICENSE +0 -0
  383. {agno-2.2.13.dist-info → agno-2.4.3.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.2.13
3
+ Version: 2.4.3
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
@@ -46,17 +46,15 @@ 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"
52
+ Requires-Dist: fakeredis; extra == "dev"
53
+ Requires-Dist: xlwt; extra == "dev"
49
54
  Provides-Extra: os
50
55
  Requires-Dist: fastapi; extra == "os"
51
56
  Requires-Dist: uvicorn; extra == "os"
52
57
  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
- Requires-Dist: fastmcp; extra == "integration-tests"
60
58
  Provides-Extra: opentelemetry
61
59
  Requires-Dist: opentelemetry-sdk; extra == "opentelemetry"
62
60
  Requires-Dist: opentelemetry-exporter-otlp; extra == "opentelemetry"
@@ -87,7 +85,7 @@ Requires-Dist: cohere; extra == "cohere"
87
85
  Provides-Extra: infinity
88
86
  Requires-Dist: infinity_client; extra == "infinity"
89
87
  Provides-Extra: google
90
- Requires-Dist: google-genai; extra == "google"
88
+ Requires-Dist: google-genai>=1.52.0; extra == "google"
91
89
  Provides-Extra: groq
92
90
  Requires-Dist: groq; extra == "groq"
93
91
  Provides-Extra: ibm
@@ -106,6 +104,9 @@ Provides-Extra: openai
106
104
  Requires-Dist: openai; extra == "openai"
107
105
  Provides-Extra: portkey
108
106
  Requires-Dist: portkey-ai; extra == "portkey"
107
+ Provides-Extra: tokenizers
108
+ Requires-Dist: tiktoken; extra == "tokenizers"
109
+ Requires-Dist: tokenizers; extra == "tokenizers"
109
110
  Provides-Extra: agentql
110
111
  Requires-Dist: agentql; extra == "agentql"
111
112
  Provides-Extra: apify
@@ -134,11 +135,11 @@ Requires-Dist: exa_py; extra == "exa"
134
135
  Provides-Extra: fal
135
136
  Requires-Dist: fal_client; extra == "fal"
136
137
  Provides-Extra: firecrawl
137
- Requires-Dist: firecrawl-py; extra == "firecrawl"
138
+ Requires-Dist: firecrawl-py==3.4.0; extra == "firecrawl"
138
139
  Provides-Extra: tavily
139
140
  Requires-Dist: tavily-python; extra == "tavily"
140
141
  Provides-Extra: crawl4ai
141
- Requires-Dist: crawl4ai; extra == "crawl4ai"
142
+ Requires-Dist: crawl4ai>=0.6.3; extra == "crawl4ai"
142
143
  Provides-Extra: github
143
144
  Requires-Dist: PyGithub; extra == "github"
144
145
  Provides-Extra: gmail
@@ -153,11 +154,11 @@ Requires-Dist: google-maps-places; extra == "googlemaps"
153
154
  Provides-Extra: matplotlib
154
155
  Requires-Dist: matplotlib; extra == "matplotlib"
155
156
  Provides-Extra: mcp
156
- Requires-Dist: mcp; extra == "mcp"
157
+ Requires-Dist: mcp>=1.9.2; extra == "mcp"
157
158
  Provides-Extra: mem0
158
159
  Requires-Dist: mem0ai; extra == "mem0"
159
160
  Provides-Extra: memori
160
- Requires-Dist: memorisdk; extra == "memori"
161
+ Requires-Dist: memori>=3.0.5; extra == "memori"
161
162
  Provides-Extra: newspaper
162
163
  Requires-Dist: newspaper4k; extra == "newspaper"
163
164
  Requires-Dist: lxml_html_clean; extra == "newspaper"
@@ -170,6 +171,8 @@ Requires-Dist: parallel-web; extra == "parallel"
170
171
  Provides-Extra: psycopg
171
172
  Requires-Dist: psycopg-binary; extra == "psycopg"
172
173
  Requires-Dist: psycopg; extra == "psycopg"
174
+ Provides-Extra: redshift
175
+ Requires-Dist: redshift-connector; extra == "redshift"
173
176
  Provides-Extra: reportlab
174
177
  Requires-Dist: reportlab; extra == "reportlab"
175
178
  Provides-Extra: scrapegraph
@@ -200,6 +203,9 @@ Provides-Extra: postgres
200
203
  Requires-Dist: psycopg-binary; extra == "postgres"
201
204
  Provides-Extra: async-postgres
202
205
  Requires-Dist: asyncpg; extra == "async-postgres"
206
+ Provides-Extra: async-mongo
207
+ Requires-Dist: pymongo>=4.9; extra == "async-mongo"
208
+ Requires-Dist: motor; extra == "async-mongo"
203
209
  Provides-Extra: sqlite
204
210
  Requires-Dist: sqlalchemy; extra == "sqlite"
205
211
  Provides-Extra: gcs
@@ -208,13 +214,16 @@ Provides-Extra: firestore
208
214
  Requires-Dist: google-cloud-firestore; extra == "firestore"
209
215
  Provides-Extra: redis
210
216
  Requires-Dist: redis; extra == "redis"
211
- Requires-Dist: redisvl; extra == "redis"
217
+ Requires-Dist: redisvl>=0.12.1; extra == "redis"
218
+ Provides-Extra: mysql
219
+ Requires-Dist: pymysql; extra == "mysql"
220
+ Requires-Dist: asyncmy; extra == "mysql"
212
221
  Provides-Extra: pgvector
213
222
  Requires-Dist: pgvector; extra == "pgvector"
214
223
  Provides-Extra: chromadb
215
224
  Requires-Dist: chromadb; extra == "chromadb"
216
225
  Provides-Extra: lancedb
217
- Requires-Dist: lancedb>=0.24.0; extra == "lancedb"
226
+ Requires-Dist: lancedb==0.24.0; extra == "lancedb"
218
227
  Requires-Dist: tantivy; extra == "lancedb"
219
228
  Provides-Extra: pylance
220
229
  Requires-Dist: pylance; extra == "pylance"
@@ -251,12 +260,16 @@ Provides-Extra: text
251
260
  Requires-Dist: aiofiles; extra == "text"
252
261
  Provides-Extra: csv
253
262
  Requires-Dist: aiofiles; extra == "csv"
263
+ Provides-Extra: excel
264
+ Requires-Dist: openpyxl; extra == "excel"
265
+ Requires-Dist: xlrd; extra == "excel"
254
266
  Provides-Extra: markdown
255
267
  Requires-Dist: unstructured; extra == "markdown"
256
268
  Requires-Dist: markdown; extra == "markdown"
257
269
  Requires-Dist: aiofiles; extra == "markdown"
258
270
  Provides-Extra: chonkie
259
- Requires-Dist: chonkie[st]; extra == "chonkie"
271
+ Requires-Dist: chonkie[semantic]; extra == "chonkie"
272
+ Requires-Dist: chonkie[code]; extra == "chonkie"
260
273
  Requires-Dist: chonkie; extra == "chonkie"
261
274
  Provides-Extra: agui
262
275
  Requires-Dist: ag-ui-protocol; extra == "agui"
@@ -285,7 +298,6 @@ Requires-Dist: agno[cohere]; extra == "models"
285
298
  Requires-Dist: agno[google]; extra == "models"
286
299
  Requires-Dist: agno[groq]; extra == "models"
287
300
  Requires-Dist: agno[ibm]; extra == "models"
288
- Requires-Dist: agno[infinity]; extra == "models"
289
301
  Requires-Dist: agno[litellm]; extra == "models"
290
302
  Requires-Dist: agno[meta]; extra == "models"
291
303
  Requires-Dist: agno[mistral]; extra == "models"
@@ -295,7 +307,6 @@ Requires-Dist: agno[portkey]; extra == "models"
295
307
  Provides-Extra: tools
296
308
  Requires-Dist: agno[apify]; extra == "tools"
297
309
  Requires-Dist: agno[arxiv]; extra == "tools"
298
- Requires-Dist: agno[brave]; extra == "tools"
299
310
  Requires-Dist: agno[exa]; extra == "tools"
300
311
  Requires-Dist: agno[cartesia]; extra == "tools"
301
312
  Requires-Dist: agno[ddg]; extra == "tools"
@@ -321,6 +332,7 @@ Requires-Dist: agno[opencv]; extra == "tools"
321
332
  Requires-Dist: agno[parallel]; extra == "tools"
322
333
  Requires-Dist: agno[scrapegraph]; extra == "tools"
323
334
  Requires-Dist: agno[valyu]; extra == "tools"
335
+ Requires-Dist: agno[yfinance]; extra == "tools"
324
336
  Requires-Dist: agno[confluence]; extra == "tools"
325
337
  Requires-Dist: agno[notion]; extra == "tools"
326
338
  Requires-Dist: agno[oxylabs]; extra == "tools"
@@ -329,6 +341,7 @@ Requires-Dist: agno[mem0]; extra == "tools"
329
341
  Requires-Dist: agno[memori]; extra == "tools"
330
342
  Requires-Dist: agno[google_bigquery]; extra == "tools"
331
343
  Requires-Dist: agno[psycopg]; extra == "tools"
344
+ Requires-Dist: agno[redshift]; extra == "tools"
332
345
  Requires-Dist: agno[reportlab]; extra == "tools"
333
346
  Requires-Dist: agno[trafilatura]; extra == "tools"
334
347
  Requires-Dist: agno[neo4j]; extra == "tools"
@@ -336,6 +349,7 @@ Provides-Extra: storage
336
349
  Requires-Dist: agno[sql]; extra == "storage"
337
350
  Requires-Dist: agno[postgres]; extra == "storage"
338
351
  Requires-Dist: agno[async_postgres]; extra == "storage"
352
+ Requires-Dist: agno[async_mongo]; extra == "storage"
339
353
  Requires-Dist: agno[sqlite]; extra == "storage"
340
354
  Requires-Dist: agno[gcs]; extra == "storage"
341
355
  Requires-Dist: agno[firestore]; extra == "storage"
@@ -355,18 +369,22 @@ Requires-Dist: agno[clickhouse]; extra == "vectordbs"
355
369
  Requires-Dist: agno[pinecone]; extra == "vectordbs"
356
370
  Requires-Dist: agno[surrealdb]; extra == "vectordbs"
357
371
  Requires-Dist: agno[upstash]; extra == "vectordbs"
372
+ Requires-Dist: agno[pylance]; extra == "vectordbs"
373
+ Requires-Dist: agno[redis]; extra == "vectordbs"
358
374
  Provides-Extra: knowledge
359
375
  Requires-Dist: agno[pdf]; extra == "knowledge"
360
376
  Requires-Dist: agno[docx]; extra == "knowledge"
361
377
  Requires-Dist: agno[pptx]; extra == "knowledge"
362
378
  Requires-Dist: agno[text]; extra == "knowledge"
363
379
  Requires-Dist: agno[csv]; extra == "knowledge"
380
+ Requires-Dist: agno[excel]; extra == "knowledge"
364
381
  Requires-Dist: agno[markdown]; extra == "knowledge"
365
382
  Requires-Dist: agno[chonkie]; extra == "knowledge"
366
383
  Provides-Extra: embedders
367
384
  Requires-Dist: agno[huggingface]; extra == "embedders"
368
385
  Requires-Dist: agno[vllm]; extra == "embedders"
369
386
  Provides-Extra: tests
387
+ Requires-Dist: agno[a2a]; extra == "tests"
370
388
  Requires-Dist: agno[dev]; extra == "tests"
371
389
  Requires-Dist: agno[models]; extra == "tests"
372
390
  Requires-Dist: agno[tools]; extra == "tests"
@@ -377,8 +395,40 @@ Requires-Dist: agno[embedders]; extra == "tests"
377
395
  Requires-Dist: agno[performance]; extra == "tests"
378
396
  Requires-Dist: agno[cookbooks]; extra == "tests"
379
397
  Requires-Dist: agno[agui]; extra == "tests"
398
+ Requires-Dist: agno[integration-tests]; extra == "tests"
380
399
  Requires-Dist: twine; extra == "tests"
381
400
  Requires-Dist: build; extra == "tests"
401
+ Requires-Dist: grpcio==1.74.0; extra == "tests"
402
+ Provides-Extra: integration-tests
403
+ Requires-Dist: exa_py; extra == "integration-tests"
404
+ Requires-Dist: ddgs; extra == "integration-tests"
405
+ Requires-Dist: yfinance; extra == "integration-tests"
406
+ Requires-Dist: sqlalchemy; extra == "integration-tests"
407
+ Requires-Dist: Pillow; extra == "integration-tests"
408
+ Requires-Dist: fastmcp; extra == "integration-tests"
409
+ Provides-Extra: demo
410
+ Requires-Dist: agno[dev]; extra == "demo"
411
+ Requires-Dist: anthropic; extra == "demo"
412
+ Requires-Dist: chromadb; extra == "demo"
413
+ Requires-Dist: ddgs; extra == "demo"
414
+ Requires-Dist: fastapi[standard]; extra == "demo"
415
+ Requires-Dist: google-genai; extra == "demo"
416
+ Requires-Dist: matplotlib; extra == "demo"
417
+ Requires-Dist: mcp; extra == "demo"
418
+ Requires-Dist: nest_asyncio; extra == "demo"
419
+ Requires-Dist: openai; extra == "demo"
420
+ Requires-Dist: openinference-instrumentation-agno; extra == "demo"
421
+ Requires-Dist: opentelemetry-api; extra == "demo"
422
+ Requires-Dist: opentelemetry-sdk; extra == "demo"
423
+ Requires-Dist: pandas; extra == "demo"
424
+ Requires-Dist: parallel-web; extra == "demo"
425
+ Requires-Dist: pgvector; extra == "demo"
426
+ Requires-Dist: pillow; extra == "demo"
427
+ Requires-Dist: psycopg[binary]; extra == "demo"
428
+ Requires-Dist: pypdf; extra == "demo"
429
+ Requires-Dist: sqlalchemy; extra == "demo"
430
+ Requires-Dist: yfinance; extra == "demo"
431
+ Requires-Dist: youtube-transcript-api; extra == "demo"
382
432
  Dynamic: license-file
383
433
 
384
434
  <div align="center" id="top">
@@ -391,224 +441,127 @@ Dynamic: license-file
391
441
  </a>
392
442
  </div>
393
443
 
444
+ <p align="center">
445
+ Build, run, manage multi-agent systems.
446
+ </p>
447
+
394
448
  <div align="center">
395
- <a href="https://docs.agno.com">Documentation</a>
396
- <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
397
- <a href="https://docs.agno.com/examples/introduction">Examples</a>
398
- <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
399
- <a href="https://www.agno.com/?utm_source=github&utm_medium=readme&utm_campaign=agno-github">Website</a>
400
- <br />
449
+ <a href="https://docs.agno.com">Docs</a>
450
+ <span>&nbsp;•&nbsp;</span>
451
+ <a href="https://github.com/agno-agi/agno/tree/main/cookbook">Cookbook</a>
452
+ <span>&nbsp;•&nbsp;</span>
453
+ <a href="https://community.agno.com/">Community</a>
454
+ <span>&nbsp;•&nbsp;</span>
455
+ <a href="https://www.agno.com/discord">Discord</a>
401
456
  </div>
402
457
 
403
458
  ## What is Agno?
404
459
 
405
- Agno is a multi-agent framework, runtime and control plane. Built for speed, privacy, and scale.
406
-
407
- It provides a rich set of tools for building:
408
-
409
- - **Agents** with memory, knowledge, session management, and advanced features like human-in-the-loop, guardrails, dynamic context management and best-in-class MCP support.
410
- - **Multi-Agent Teams** that operate autonomously under a team leader that maintains shared state and context. Perfect for use cases where the scope exceeds beyond a single agent.
411
- - **Step-based Workflows** for controlled, deterministic execution. Steps can be Agents, Teams, or regular python functions that run sequentially, in parallel, in loops, branches, or conditionally.
412
-
413
- Agno also provides a ready-to-use FastAPI app (called the AgentOS) for serving your agents, teams and workflows in production. Stateless, horizontally scalable and designed for scale, the AgentOS gives you major head start in building your AI product.
414
-
415
- ## Getting started
416
-
417
- If you're new to Agno, follow our [quickstart](https://docs.agno.com/introduction/quickstart) to build your first Agent and chat with it using the AgentOS UI.
460
+ Agno is a framework, runtime, and control plane for multi-agent systems.
418
461
 
419
- After that, checkout the [examples gallery](https://docs.agno.com/examples/introduction) and build real-world applications with Agno.
462
+ | Layer | What it does |
463
+ |-------|--------------|
464
+ | **Framework** | Build agents, teams, and workflows with memory, knowledge, guardrails, and 100+ integrations |
465
+ | **AgentOS Runtime** | Run your system in production with a stateless, secure FastAPI backend |
466
+ | **Control Plane** | Test, monitor, and manage your system using the [AgentOS UI](https://os.agno.com) |
420
467
 
421
- ## Documentation, Community & More Examples
468
+ ## Why Agno?
422
469
 
423
- - Docs: <a href="https://docs.agno.com" target="_blank" rel="noopener noreferrer">docs.agno.com</a>
424
- - Cookbook: <a href="https://github.com/agno-agi/agno/tree/main/cookbook" target="_blank" rel="noopener noreferrer">Cookbook</a>
425
- - Community forum: <a href="https://community.agno.com/" target="_blank" rel="noopener noreferrer">community.agno.com</a>
426
- - Discord: <a href="https://discord.gg/4MtYHHrgA8" target="_blank" rel="noopener noreferrer">discord</a>
470
+ - **Private by design.** AgentOS runs in your cloud. The control plane connects directly to your runtime from your browser. No retention costs, no vendor lock-in, no compliance headaches.
471
+ - **Production-ready on day one.** Pre-built FastAPI runtime with SSE endpoints, ready to deploy.
472
+ - **Fast.** 529× faster instantiation than LangGraph. 24× lower memory. [See benchmarks →](#performance)
427
473
 
428
474
  ## Example
429
475
 
430
- 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).
431
-
432
- ```python agno_agent.py
476
+ An agent with MCP tools, persistent state, served via FastAPI:
477
+ ```python
433
478
  from agno.agent import Agent
434
479
  from agno.db.sqlite import SqliteDb
435
480
  from agno.models.anthropic import Claude
436
481
  from agno.os import AgentOS
437
482
  from agno.tools.mcp import MCPTools
438
483
 
439
- # ************* Create Agent *************
440
484
  agno_agent = Agent(
441
485
  name="Agno Agent",
442
486
  model=Claude(id="claude-sonnet-4-5"),
443
- # Add a database to the Agent
444
487
  db=SqliteDb(db_file="agno.db"),
445
- # Add the Agno MCP server to the Agent
446
488
  tools=[MCPTools(transport="streamable-http", url="https://docs.agno.com/mcp")],
447
- # Add the previous session history to the context
448
489
  add_history_to_context=True,
449
490
  markdown=True,
450
491
  )
451
492
 
452
-
453
- # ************* Create AgentOS *************
454
493
  agent_os = AgentOS(agents=[agno_agent])
455
- # Get the FastAPI app for the AgentOS
456
494
  app = agent_os.get_app()
457
495
 
458
- # ************* Run AgentOS *************
459
496
  if __name__ == "__main__":
460
497
  agent_os.serve(app="agno_agent:app", reload=True)
461
498
  ```
462
499
 
463
- ## AgentOS - Production Runtime for Multi-Agent Systems
464
-
465
- Building Agents is easy, running them is hard, and that's where the AgentOS comes in. AgentOS is a high-performance runtime for serving multi-agent systems in production. Key features include:
466
-
467
- 1. **Pre-built FastAPI app**: AgentOS ships with a ready-to-use FastAPI app for orchestrating your agents, teams, and workflows. This gives you a major head start in building your AI product.
468
-
469
- 2. **Integrated Control Plane**: The [AgentOS UI](https://os.agno.com) connects directly to your runtime, letting you test, monitor, and manage your system in real time, giving you unmatched control over your system.
470
-
471
- 3. **Private by Design**: AgentOS runs entirely in your cloud, ensuring complete data privacy. No data ever leaves your system. This is ideal for security-conscious enterprises.
472
-
473
- Here's what the [AgentOS UI](https://os.agno.com) looks like in action:
500
+ Run this and connect to the [AgentOS UI](https://os.agno.com):
474
501
 
475
502
  https://github.com/user-attachments/assets/feb23db8-15cc-4e88-be7c-01a21a03ebf6
476
503
 
477
- ## The Complete Agentic Solution
478
-
479
- For companies building agents, Agno provides the complete agentic solution:
480
-
481
- - The fastest framework for building agents, multi-agent teams and agentic workflows.
482
- - A ready-to-use FastAPI app that gets you building AI products on day one.
483
- - A control plane for testing, monitoring and managing your system.
484
-
485
- 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.
486
-
487
- ## Designed for Agent Engineering
488
-
489
- Agno is an incredibly feature-rich framework, designed for Agent Engineering. Here are some key features:
490
-
491
- | **Category** | **Feature** | **Description** |
492
- |---------------|-------------|-----------------|
493
- | **Core Intelligence** | **Model Agnostic** | Works with any model provider so you can use your favorite LLMs. |
494
- | | **Type Safe** | Enforce structured I/O through `input_schema` and `output_schema` for predictable, composable behavior. |
495
- | | **Dynamic Context Engineering** | Inject variables, state, and retrieved data on the fly into context. Perfect for dependency-driven agents. |
496
- | **Memory, Knowledge, and Persistence** | **Persistent Storage** | Give your Agents, Teams, and Workflows a database to persist session history, state, and messages. |
497
- | | **User Memory** | Built-in memory system that allows Agents to recall user-specific context across sessions. |
498
- | | **Agentic RAG** | Connect to 20+ vector stores (called **Knowledge** in Agno) with hybrid search + reranking out of the box. |
499
- | | **Culture (Collective Memory)** | Shared knowledge that compounds across agents and time. |
500
- | **Execution & Control** | **Human-in-the-Loop** | Native support for confirmations, manual overrides, and external tool execution. |
501
- | | **Guardrails** | Built-in safeguards for validation, security, and prompt protection. |
502
- | | **Agent Lifecycle Hooks** | Pre- and post-hooks to validate or transform inputs and outputs. |
503
- | | **MCP Integration** | First-class support for the Model Context Protocol (MCP) to connect Agents with external systems. |
504
- | | **Toolkits** | 100+ built-in toolkits with thousands of tools, ready for use across data, code, web, and enterprise APIs. |
505
- | **Runtime & Evaluation** | **Runtime** | Pre-built FastAPI based runtime with SSE compatible endpoints, ready for production on day 1. |
506
- | | **Control Plane (UI)** | Integrated interface to visualize, monitor, and debug agent activity in real time. |
507
- | | **Natively Multimodal** | Agents can process and generate text, images, audio, video, and files. |
508
- | | **Evals** | Measure your Agents' Accuracy, Performance, and Reliability. |
509
- | **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. |
510
- | | **Data Governance** | Your data lives securely in your Agent database, no external data sharing or vendor lock-in. |
511
- | | **Access Control** | Role-based access (RBAC) and per-agent permissions to protect sensitive contexts and tools. |
504
+ ## Features
512
505
 
513
- Every part of Agno is built for real-world deployment — where developer experience meets production performance.
506
+ **Core**
507
+ - Model-agnostic: OpenAI, Anthropic, Google, local models
508
+ - Type-safe I/O with `input_schema` and `output_schema`
509
+ - Async-first, built for long-running tasks
510
+ - Natively multimodal (text, images, audio, video, files)
514
511
 
515
- ## Setup Your Coding Agent to Use Agno
512
+ **Memory & Knowledge**
513
+ - Persistent storage for session history and state
514
+ - User memory across sessions
515
+ - Agentic RAG with 20+ vector stores, hybrid search, reranking
516
+ - Culture: shared long-term memory across agents
516
517
 
517
- 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.
518
+ **Orchestration**
519
+ - Human-in-the-loop (confirmations, approvals, overrides)
520
+ - Guardrails for validation and security
521
+ - Pre/post hooks for the agent lifecycle
522
+ - First-class MCP and A2A support
523
+ - 100+ built-in toolkits
518
524
 
519
- ### IDE Integration
525
+ **Production**
526
+ - Ready-to-use FastAPI runtime
527
+ - Integrated control plane UI
528
+ - Evals for accuracy, performance, latency
529
+ - Durable execution for resumable workflows
530
+ - RBAC and per-agent permissions
520
531
 
521
- When building Agno agents, using Agno documentation as a source in your IDE is a great way to speed up your development. Here's how to integrate with Cursor:
532
+ ## Getting Started
522
533
 
523
- 1. In Cursor, go to the "Cursor Settings" menu.
524
- 2. Find the "Indexing & Docs" section.
525
- 3. Add `https://docs.agno.com/llms-full.txt` to the list of documentation URLs.
526
- 4. Save the changes.
527
-
528
- Now, Cursor will have access to the Agno documentation. You can do the same with other IDEs like VSCode, Windsurf etc.
534
+ 1. Follow the [getting started guide](https://github.com/agno-agi/agno/tree/main/cookbook/00_getting_started)
535
+ 2. Browse the [cookbook](https://github.com/agno-agi/agno/tree/main/cookbook) for real-world examples
536
+ 3. Read the [docs](https://docs.agno.com) to go deeper
529
537
 
530
538
  ## Performance
531
539
 
532
- 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.
533
-
534
- At Agno, we optimize performance across 3 dimensions:
535
-
536
- 1. **Agent performance:** We optimize static operations (instantiation, memory footprint) and runtime operations (tool calls, memory updates, history management).
537
- 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.
538
- 3. **Agent reliability and accuracy:** Monitored through evals, which we’ll explore later.
539
-
540
- ### Agent Performance
541
-
542
- 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):
543
-
544
- - **Agent instantiation:** ~3μs on average
545
- - **Memory footprint:** ~6.6Kib on average
546
-
547
- 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**.
540
+ Agent workloads spawn hundreds of instances. Stateless, horizontal scalability isn't optional.
548
541
 
549
- > [!NOTE]
550
- > 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.
542
+ | Metric | Agno | LangGraph | PydanticAI | CrewAI |
543
+ |--------|------|-----------|------------|--------|
544
+ | Instantiation | **3μs** | 1,587μs (529×) | 170μs (57×) | 210μs (70×) |
545
+ | Memory | **6.6 KiB** | 161 KiB (24×) | 29 KiB (4×) | 66 KiB (10×) |
551
546
 
552
- ### Instantiation Time
553
-
554
- 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.
555
-
556
- > [!NOTE]
557
- > 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.
558
-
559
- ```shell
560
- # Setup virtual environment
561
- ./scripts/perf_setup.sh
562
- source .venvs/perfenv/bin/activate
563
-
564
- # Agno
565
- python cookbook/evals/performance/instantiate_agent_with_tool.py
566
-
567
- # LangGraph
568
- python cookbook/evals/performance/comparison/langgraph_instantiation.py
569
- # CrewAI
570
- python cookbook/evals/performance/comparison/crewai_instantiation.py
571
- # Pydantic AI
572
- python cookbook/evals/performance/comparison/pydantic_ai_instantiation.py
573
- ```
574
-
575
- 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.
547
+ <sub>Apple M4 MacBook Pro, Oct 2025. [Run benchmarks yourself →](https://github.com/agno-agi/agno/tree/main/cookbook/12_evals/performance)</sub>
576
548
 
577
549
  https://github.com/user-attachments/assets/54b98576-1859-4880-9f2d-15e1a426719d
578
550
 
579
- ### Memory Usage
551
+ ## IDE Integration
580
552
 
581
- To measure memory usage, we use the `tracemalloc` library. We first calculate a baseline memory usage by running an empty function, then run the Agent 1000x times and calculate the difference. This gives a (reasonably) isolated measurement of the memory usage of the Agent.
553
+ Add our docs to your AI-enabled editor:
582
554
 
583
- 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.
555
+ **Cursor:** Settings Indexing & Docs Add `https://docs.agno.com/llms-full.txt`
584
556
 
585
- ### Results
557
+ Also works with VSCode, Windsurf, and similar tools.
586
558
 
587
- Taking Agno as the baseline, we can see that:
559
+ ## Contributing
588
560
 
589
- | Metric | Agno | Langgraph | PydanticAI | CrewAI |
590
- | ------------------ | ---- | ----------- | ---------- | ---------- |
591
- | **Time (seconds)** | 1× | 529× slower | 57× slower | 70× slower |
592
- | **Memory (MiB)** | 1× | 24× higher | 4× higher | 10× higher |
593
-
594
- Exact numbers from the benchmark:
595
-
596
- | Metric | Agno | Langgraph | PydanticAI | CrewAI |
597
- | ------------------ | -------- | --------- | ---------- | -------- |
598
- | **Time (seconds)** | 0.000003 | 0.001587 | 0.000170 | 0.000210 |
599
- | **Memory (MiB)** | 0.006642 | 0.161435 | 0.028712 | 0.065652 |
600
-
601
- > [!NOTE]
602
- > 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.
603
-
604
- ## Contributions
605
-
606
- We welcome contributions, read our [contributing guide](https://github.com/agno-agi/agno/blob/v2.0/CONTRIBUTING.md) to get started.
561
+ We welcome contributions. See the [contributing guide](https://github.com/agno-agi/agno/blob/v2.0/CONTRIBUTING.md).
607
562
 
608
563
  ## Telemetry
609
564
 
610
- Agno logs which model an agent used so we can prioritize updates to the most popular providers. You can disable this by setting `AGNO_TELEMETRY=false` in your environment.
565
+ Agno logs which model providers are used to prioritize updates. Disable with `AGNO_TELEMETRY=false`.
611
566
 
612
- <p align="left">
613
- <a href="#top">⬆️ Back to Top</a>
614
- </p>
567
+ <p align="right"><a href="#top">↑ Back to top</a></p>