agno 0.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 (723) hide show
  1. agno/__init__.py +8 -0
  2. agno/agent/__init__.py +44 -5
  3. agno/agent/agent.py +10531 -2975
  4. agno/api/agent.py +14 -53
  5. agno/api/api.py +7 -46
  6. agno/api/evals.py +22 -0
  7. agno/api/os.py +17 -0
  8. agno/api/routes.py +6 -25
  9. agno/api/schemas/__init__.py +9 -0
  10. agno/api/schemas/agent.py +6 -9
  11. agno/api/schemas/evals.py +16 -0
  12. agno/api/schemas/os.py +14 -0
  13. agno/api/schemas/team.py +10 -10
  14. agno/api/schemas/utils.py +21 -0
  15. agno/api/schemas/workflows.py +16 -0
  16. agno/api/settings.py +53 -0
  17. agno/api/team.py +22 -26
  18. agno/api/workflow.py +28 -0
  19. agno/cloud/aws/base.py +214 -0
  20. agno/cloud/aws/s3/__init__.py +2 -0
  21. agno/cloud/aws/s3/api_client.py +43 -0
  22. agno/cloud/aws/s3/bucket.py +195 -0
  23. agno/cloud/aws/s3/object.py +57 -0
  24. agno/compression/__init__.py +3 -0
  25. agno/compression/manager.py +247 -0
  26. agno/culture/__init__.py +3 -0
  27. agno/culture/manager.py +956 -0
  28. agno/db/__init__.py +24 -0
  29. agno/db/async_postgres/__init__.py +3 -0
  30. agno/db/base.py +946 -0
  31. agno/db/dynamo/__init__.py +3 -0
  32. agno/db/dynamo/dynamo.py +2781 -0
  33. agno/db/dynamo/schemas.py +442 -0
  34. agno/db/dynamo/utils.py +743 -0
  35. agno/db/firestore/__init__.py +3 -0
  36. agno/db/firestore/firestore.py +2379 -0
  37. agno/db/firestore/schemas.py +181 -0
  38. agno/db/firestore/utils.py +376 -0
  39. agno/db/gcs_json/__init__.py +3 -0
  40. agno/db/gcs_json/gcs_json_db.py +1791 -0
  41. agno/db/gcs_json/utils.py +228 -0
  42. agno/db/in_memory/__init__.py +3 -0
  43. agno/db/in_memory/in_memory_db.py +1312 -0
  44. agno/db/in_memory/utils.py +230 -0
  45. agno/db/json/__init__.py +3 -0
  46. agno/db/json/json_db.py +1777 -0
  47. agno/db/json/utils.py +230 -0
  48. agno/db/migrations/manager.py +199 -0
  49. agno/db/migrations/v1_to_v2.py +635 -0
  50. agno/db/migrations/versions/v2_3_0.py +938 -0
  51. agno/db/mongo/__init__.py +17 -0
  52. agno/db/mongo/async_mongo.py +2760 -0
  53. agno/db/mongo/mongo.py +2597 -0
  54. agno/db/mongo/schemas.py +119 -0
  55. agno/db/mongo/utils.py +276 -0
  56. agno/db/mysql/__init__.py +4 -0
  57. agno/db/mysql/async_mysql.py +2912 -0
  58. agno/db/mysql/mysql.py +2923 -0
  59. agno/db/mysql/schemas.py +186 -0
  60. agno/db/mysql/utils.py +488 -0
  61. agno/db/postgres/__init__.py +4 -0
  62. agno/db/postgres/async_postgres.py +2579 -0
  63. agno/db/postgres/postgres.py +2870 -0
  64. agno/db/postgres/schemas.py +187 -0
  65. agno/db/postgres/utils.py +442 -0
  66. agno/db/redis/__init__.py +3 -0
  67. agno/db/redis/redis.py +2141 -0
  68. agno/db/redis/schemas.py +159 -0
  69. agno/db/redis/utils.py +346 -0
  70. agno/db/schemas/__init__.py +4 -0
  71. agno/db/schemas/culture.py +120 -0
  72. agno/db/schemas/evals.py +34 -0
  73. agno/db/schemas/knowledge.py +40 -0
  74. agno/db/schemas/memory.py +61 -0
  75. agno/db/singlestore/__init__.py +3 -0
  76. agno/db/singlestore/schemas.py +179 -0
  77. agno/db/singlestore/singlestore.py +2877 -0
  78. agno/db/singlestore/utils.py +384 -0
  79. agno/db/sqlite/__init__.py +4 -0
  80. agno/db/sqlite/async_sqlite.py +2911 -0
  81. agno/db/sqlite/schemas.py +181 -0
  82. agno/db/sqlite/sqlite.py +2908 -0
  83. agno/db/sqlite/utils.py +429 -0
  84. agno/db/surrealdb/__init__.py +3 -0
  85. agno/db/surrealdb/metrics.py +292 -0
  86. agno/db/surrealdb/models.py +334 -0
  87. agno/db/surrealdb/queries.py +71 -0
  88. agno/db/surrealdb/surrealdb.py +1908 -0
  89. agno/db/surrealdb/utils.py +147 -0
  90. agno/db/utils.py +118 -0
  91. agno/eval/__init__.py +24 -0
  92. agno/eval/accuracy.py +666 -276
  93. agno/eval/agent_as_judge.py +861 -0
  94. agno/eval/base.py +29 -0
  95. agno/eval/performance.py +779 -0
  96. agno/eval/reliability.py +241 -62
  97. agno/eval/utils.py +120 -0
  98. agno/exceptions.py +143 -1
  99. agno/filters.py +354 -0
  100. agno/guardrails/__init__.py +6 -0
  101. agno/guardrails/base.py +19 -0
  102. agno/guardrails/openai.py +144 -0
  103. agno/guardrails/pii.py +94 -0
  104. agno/guardrails/prompt_injection.py +52 -0
  105. agno/hooks/__init__.py +3 -0
  106. agno/hooks/decorator.py +164 -0
  107. agno/integrations/discord/__init__.py +3 -0
  108. agno/integrations/discord/client.py +203 -0
  109. agno/knowledge/__init__.py +5 -1
  110. agno/{document → knowledge}/chunking/agentic.py +22 -14
  111. agno/{document → knowledge}/chunking/document.py +2 -2
  112. agno/{document → knowledge}/chunking/fixed.py +7 -6
  113. agno/knowledge/chunking/markdown.py +151 -0
  114. agno/{document → knowledge}/chunking/recursive.py +15 -3
  115. agno/knowledge/chunking/row.py +39 -0
  116. agno/knowledge/chunking/semantic.py +91 -0
  117. agno/knowledge/chunking/strategy.py +165 -0
  118. agno/knowledge/content.py +74 -0
  119. agno/knowledge/document/__init__.py +5 -0
  120. agno/{document → knowledge/document}/base.py +12 -2
  121. agno/knowledge/embedder/__init__.py +5 -0
  122. agno/knowledge/embedder/aws_bedrock.py +343 -0
  123. agno/knowledge/embedder/azure_openai.py +210 -0
  124. agno/{embedder → knowledge/embedder}/base.py +8 -0
  125. agno/knowledge/embedder/cohere.py +323 -0
  126. agno/knowledge/embedder/fastembed.py +62 -0
  127. agno/{embedder → knowledge/embedder}/fireworks.py +1 -1
  128. agno/knowledge/embedder/google.py +258 -0
  129. agno/knowledge/embedder/huggingface.py +94 -0
  130. agno/knowledge/embedder/jina.py +182 -0
  131. agno/knowledge/embedder/langdb.py +22 -0
  132. agno/knowledge/embedder/mistral.py +206 -0
  133. agno/knowledge/embedder/nebius.py +13 -0
  134. agno/knowledge/embedder/ollama.py +154 -0
  135. agno/knowledge/embedder/openai.py +195 -0
  136. agno/knowledge/embedder/sentence_transformer.py +63 -0
  137. agno/{embedder → knowledge/embedder}/together.py +1 -1
  138. agno/knowledge/embedder/vllm.py +262 -0
  139. agno/knowledge/embedder/voyageai.py +165 -0
  140. agno/knowledge/knowledge.py +3006 -0
  141. agno/knowledge/reader/__init__.py +7 -0
  142. agno/knowledge/reader/arxiv_reader.py +81 -0
  143. agno/knowledge/reader/base.py +95 -0
  144. agno/knowledge/reader/csv_reader.py +164 -0
  145. agno/knowledge/reader/docx_reader.py +82 -0
  146. agno/knowledge/reader/field_labeled_csv_reader.py +290 -0
  147. agno/knowledge/reader/firecrawl_reader.py +201 -0
  148. agno/knowledge/reader/json_reader.py +88 -0
  149. agno/knowledge/reader/markdown_reader.py +137 -0
  150. agno/knowledge/reader/pdf_reader.py +431 -0
  151. agno/knowledge/reader/pptx_reader.py +101 -0
  152. agno/knowledge/reader/reader_factory.py +313 -0
  153. agno/knowledge/reader/s3_reader.py +89 -0
  154. agno/knowledge/reader/tavily_reader.py +193 -0
  155. agno/knowledge/reader/text_reader.py +127 -0
  156. agno/knowledge/reader/web_search_reader.py +325 -0
  157. agno/knowledge/reader/website_reader.py +455 -0
  158. agno/knowledge/reader/wikipedia_reader.py +91 -0
  159. agno/knowledge/reader/youtube_reader.py +78 -0
  160. agno/knowledge/remote_content/remote_content.py +88 -0
  161. agno/knowledge/reranker/__init__.py +3 -0
  162. agno/{reranker → knowledge/reranker}/base.py +1 -1
  163. agno/{reranker → knowledge/reranker}/cohere.py +2 -2
  164. agno/knowledge/reranker/infinity.py +195 -0
  165. agno/knowledge/reranker/sentence_transformer.py +54 -0
  166. agno/knowledge/types.py +39 -0
  167. agno/knowledge/utils.py +234 -0
  168. agno/media.py +439 -95
  169. agno/memory/__init__.py +16 -3
  170. agno/memory/manager.py +1474 -123
  171. agno/memory/strategies/__init__.py +15 -0
  172. agno/memory/strategies/base.py +66 -0
  173. agno/memory/strategies/summarize.py +196 -0
  174. agno/memory/strategies/types.py +37 -0
  175. agno/models/aimlapi/__init__.py +5 -0
  176. agno/models/aimlapi/aimlapi.py +62 -0
  177. agno/models/anthropic/__init__.py +4 -0
  178. agno/models/anthropic/claude.py +960 -496
  179. agno/models/aws/__init__.py +15 -0
  180. agno/models/aws/bedrock.py +686 -451
  181. agno/models/aws/claude.py +190 -183
  182. agno/models/azure/__init__.py +18 -1
  183. agno/models/azure/ai_foundry.py +489 -0
  184. agno/models/azure/openai_chat.py +89 -40
  185. agno/models/base.py +2477 -550
  186. agno/models/cerebras/__init__.py +12 -0
  187. agno/models/cerebras/cerebras.py +565 -0
  188. agno/models/cerebras/cerebras_openai.py +131 -0
  189. agno/models/cohere/__init__.py +4 -0
  190. agno/models/cohere/chat.py +306 -492
  191. agno/models/cometapi/__init__.py +5 -0
  192. agno/models/cometapi/cometapi.py +74 -0
  193. agno/models/dashscope/__init__.py +5 -0
  194. agno/models/dashscope/dashscope.py +90 -0
  195. agno/models/deepinfra/__init__.py +5 -0
  196. agno/models/deepinfra/deepinfra.py +45 -0
  197. agno/models/deepseek/__init__.py +4 -0
  198. agno/models/deepseek/deepseek.py +110 -9
  199. agno/models/fireworks/__init__.py +4 -0
  200. agno/models/fireworks/fireworks.py +19 -22
  201. agno/models/google/__init__.py +3 -7
  202. agno/models/google/gemini.py +1717 -662
  203. agno/models/google/utils.py +22 -0
  204. agno/models/groq/__init__.py +4 -0
  205. agno/models/groq/groq.py +391 -666
  206. agno/models/huggingface/__init__.py +4 -0
  207. agno/models/huggingface/huggingface.py +266 -538
  208. agno/models/ibm/__init__.py +5 -0
  209. agno/models/ibm/watsonx.py +432 -0
  210. agno/models/internlm/__init__.py +3 -0
  211. agno/models/internlm/internlm.py +20 -3
  212. agno/models/langdb/__init__.py +1 -0
  213. agno/models/langdb/langdb.py +60 -0
  214. agno/models/litellm/__init__.py +14 -0
  215. agno/models/litellm/chat.py +503 -0
  216. agno/models/litellm/litellm_openai.py +42 -0
  217. agno/models/llama_cpp/__init__.py +5 -0
  218. agno/models/llama_cpp/llama_cpp.py +22 -0
  219. agno/models/lmstudio/__init__.py +5 -0
  220. agno/models/lmstudio/lmstudio.py +25 -0
  221. agno/models/message.py +361 -39
  222. agno/models/meta/__init__.py +12 -0
  223. agno/models/meta/llama.py +502 -0
  224. agno/models/meta/llama_openai.py +79 -0
  225. agno/models/metrics.py +120 -0
  226. agno/models/mistral/__init__.py +4 -0
  227. agno/models/mistral/mistral.py +293 -393
  228. agno/models/nebius/__init__.py +3 -0
  229. agno/models/nebius/nebius.py +53 -0
  230. agno/models/nexus/__init__.py +3 -0
  231. agno/models/nexus/nexus.py +22 -0
  232. agno/models/nvidia/__init__.py +4 -0
  233. agno/models/nvidia/nvidia.py +22 -3
  234. agno/models/ollama/__init__.py +4 -2
  235. agno/models/ollama/chat.py +257 -492
  236. agno/models/openai/__init__.py +7 -0
  237. agno/models/openai/chat.py +725 -770
  238. agno/models/openai/like.py +16 -2
  239. agno/models/openai/responses.py +1121 -0
  240. agno/models/openrouter/__init__.py +4 -0
  241. agno/models/openrouter/openrouter.py +62 -5
  242. agno/models/perplexity/__init__.py +5 -0
  243. agno/models/perplexity/perplexity.py +203 -0
  244. agno/models/portkey/__init__.py +3 -0
  245. agno/models/portkey/portkey.py +82 -0
  246. agno/models/requesty/__init__.py +5 -0
  247. agno/models/requesty/requesty.py +69 -0
  248. agno/models/response.py +177 -7
  249. agno/models/sambanova/__init__.py +4 -0
  250. agno/models/sambanova/sambanova.py +23 -4
  251. agno/models/siliconflow/__init__.py +5 -0
  252. agno/models/siliconflow/siliconflow.py +42 -0
  253. agno/models/together/__init__.py +4 -0
  254. agno/models/together/together.py +21 -164
  255. agno/models/utils.py +266 -0
  256. agno/models/vercel/__init__.py +3 -0
  257. agno/models/vercel/v0.py +43 -0
  258. agno/models/vertexai/__init__.py +0 -1
  259. agno/models/vertexai/claude.py +190 -0
  260. agno/models/vllm/__init__.py +3 -0
  261. agno/models/vllm/vllm.py +83 -0
  262. agno/models/xai/__init__.py +2 -0
  263. agno/models/xai/xai.py +111 -7
  264. agno/os/__init__.py +3 -0
  265. agno/os/app.py +1027 -0
  266. agno/os/auth.py +244 -0
  267. agno/os/config.py +126 -0
  268. agno/os/interfaces/__init__.py +1 -0
  269. agno/os/interfaces/a2a/__init__.py +3 -0
  270. agno/os/interfaces/a2a/a2a.py +42 -0
  271. agno/os/interfaces/a2a/router.py +249 -0
  272. agno/os/interfaces/a2a/utils.py +924 -0
  273. agno/os/interfaces/agui/__init__.py +3 -0
  274. agno/os/interfaces/agui/agui.py +47 -0
  275. agno/os/interfaces/agui/router.py +147 -0
  276. agno/os/interfaces/agui/utils.py +574 -0
  277. agno/os/interfaces/base.py +25 -0
  278. agno/os/interfaces/slack/__init__.py +3 -0
  279. agno/os/interfaces/slack/router.py +148 -0
  280. agno/os/interfaces/slack/security.py +30 -0
  281. agno/os/interfaces/slack/slack.py +47 -0
  282. agno/os/interfaces/whatsapp/__init__.py +3 -0
  283. agno/os/interfaces/whatsapp/router.py +210 -0
  284. agno/os/interfaces/whatsapp/security.py +55 -0
  285. agno/os/interfaces/whatsapp/whatsapp.py +36 -0
  286. agno/os/mcp.py +293 -0
  287. agno/os/middleware/__init__.py +9 -0
  288. agno/os/middleware/jwt.py +797 -0
  289. agno/os/router.py +258 -0
  290. agno/os/routers/__init__.py +3 -0
  291. agno/os/routers/agents/__init__.py +3 -0
  292. agno/os/routers/agents/router.py +599 -0
  293. agno/os/routers/agents/schema.py +261 -0
  294. agno/os/routers/evals/__init__.py +3 -0
  295. agno/os/routers/evals/evals.py +450 -0
  296. agno/os/routers/evals/schemas.py +174 -0
  297. agno/os/routers/evals/utils.py +231 -0
  298. agno/os/routers/health.py +31 -0
  299. agno/os/routers/home.py +52 -0
  300. agno/os/routers/knowledge/__init__.py +3 -0
  301. agno/os/routers/knowledge/knowledge.py +1008 -0
  302. agno/os/routers/knowledge/schemas.py +178 -0
  303. agno/os/routers/memory/__init__.py +3 -0
  304. agno/os/routers/memory/memory.py +661 -0
  305. agno/os/routers/memory/schemas.py +88 -0
  306. agno/os/routers/metrics/__init__.py +3 -0
  307. agno/os/routers/metrics/metrics.py +190 -0
  308. agno/os/routers/metrics/schemas.py +47 -0
  309. agno/os/routers/session/__init__.py +3 -0
  310. agno/os/routers/session/session.py +997 -0
  311. agno/os/routers/teams/__init__.py +3 -0
  312. agno/os/routers/teams/router.py +512 -0
  313. agno/os/routers/teams/schema.py +257 -0
  314. agno/os/routers/traces/__init__.py +3 -0
  315. agno/os/routers/traces/schemas.py +414 -0
  316. agno/os/routers/traces/traces.py +499 -0
  317. agno/os/routers/workflows/__init__.py +3 -0
  318. agno/os/routers/workflows/router.py +624 -0
  319. agno/os/routers/workflows/schema.py +75 -0
  320. agno/os/schema.py +534 -0
  321. agno/os/scopes.py +469 -0
  322. agno/{playground → os}/settings.py +7 -15
  323. agno/os/utils.py +973 -0
  324. agno/reasoning/anthropic.py +80 -0
  325. agno/reasoning/azure_ai_foundry.py +67 -0
  326. agno/reasoning/deepseek.py +63 -0
  327. agno/reasoning/default.py +97 -0
  328. agno/reasoning/gemini.py +73 -0
  329. agno/reasoning/groq.py +71 -0
  330. agno/reasoning/helpers.py +24 -1
  331. agno/reasoning/ollama.py +67 -0
  332. agno/reasoning/openai.py +86 -0
  333. agno/reasoning/step.py +2 -1
  334. agno/reasoning/vertexai.py +76 -0
  335. agno/run/__init__.py +6 -0
  336. agno/run/agent.py +822 -0
  337. agno/run/base.py +247 -0
  338. agno/run/cancel.py +81 -0
  339. agno/run/requirement.py +181 -0
  340. agno/run/team.py +767 -0
  341. agno/run/workflow.py +708 -0
  342. agno/session/__init__.py +10 -0
  343. agno/session/agent.py +260 -0
  344. agno/session/summary.py +265 -0
  345. agno/session/team.py +342 -0
  346. agno/session/workflow.py +501 -0
  347. agno/table.py +10 -0
  348. agno/team/__init__.py +37 -0
  349. agno/team/team.py +9536 -0
  350. agno/tools/__init__.py +7 -0
  351. agno/tools/agentql.py +120 -0
  352. agno/tools/airflow.py +22 -12
  353. agno/tools/api.py +122 -0
  354. agno/tools/apify.py +276 -83
  355. agno/tools/{arxiv_toolkit.py → arxiv.py} +20 -12
  356. agno/tools/aws_lambda.py +28 -7
  357. agno/tools/aws_ses.py +66 -0
  358. agno/tools/baidusearch.py +11 -4
  359. agno/tools/bitbucket.py +292 -0
  360. agno/tools/brandfetch.py +213 -0
  361. agno/tools/bravesearch.py +106 -0
  362. agno/tools/brightdata.py +367 -0
  363. agno/tools/browserbase.py +209 -0
  364. agno/tools/calcom.py +32 -23
  365. agno/tools/calculator.py +24 -37
  366. agno/tools/cartesia.py +187 -0
  367. agno/tools/{clickup_tool.py → clickup.py} +17 -28
  368. agno/tools/confluence.py +91 -26
  369. agno/tools/crawl4ai.py +139 -43
  370. agno/tools/csv_toolkit.py +28 -22
  371. agno/tools/dalle.py +36 -22
  372. agno/tools/daytona.py +475 -0
  373. agno/tools/decorator.py +169 -14
  374. agno/tools/desi_vocal.py +23 -11
  375. agno/tools/discord.py +32 -29
  376. agno/tools/docker.py +716 -0
  377. agno/tools/duckdb.py +76 -81
  378. agno/tools/duckduckgo.py +43 -40
  379. agno/tools/e2b.py +703 -0
  380. agno/tools/eleven_labs.py +65 -54
  381. agno/tools/email.py +13 -5
  382. agno/tools/evm.py +129 -0
  383. agno/tools/exa.py +324 -42
  384. agno/tools/fal.py +39 -35
  385. agno/tools/file.py +196 -30
  386. agno/tools/file_generation.py +356 -0
  387. agno/tools/financial_datasets.py +288 -0
  388. agno/tools/firecrawl.py +108 -33
  389. agno/tools/function.py +960 -122
  390. agno/tools/giphy.py +34 -12
  391. agno/tools/github.py +1294 -97
  392. agno/tools/gmail.py +922 -0
  393. agno/tools/google_bigquery.py +117 -0
  394. agno/tools/google_drive.py +271 -0
  395. agno/tools/google_maps.py +253 -0
  396. agno/tools/googlecalendar.py +607 -107
  397. agno/tools/googlesheets.py +377 -0
  398. agno/tools/hackernews.py +20 -12
  399. agno/tools/jina.py +24 -14
  400. agno/tools/jira.py +48 -19
  401. agno/tools/knowledge.py +218 -0
  402. agno/tools/linear.py +82 -43
  403. agno/tools/linkup.py +58 -0
  404. agno/tools/local_file_system.py +15 -7
  405. agno/tools/lumalab.py +41 -26
  406. agno/tools/mcp/__init__.py +10 -0
  407. agno/tools/mcp/mcp.py +331 -0
  408. agno/tools/mcp/multi_mcp.py +347 -0
  409. agno/tools/mcp/params.py +24 -0
  410. agno/tools/mcp_toolbox.py +284 -0
  411. agno/tools/mem0.py +193 -0
  412. agno/tools/memory.py +419 -0
  413. agno/tools/mlx_transcribe.py +11 -9
  414. agno/tools/models/azure_openai.py +190 -0
  415. agno/tools/models/gemini.py +203 -0
  416. agno/tools/models/groq.py +158 -0
  417. agno/tools/models/morph.py +186 -0
  418. agno/tools/models/nebius.py +124 -0
  419. agno/tools/models_labs.py +163 -82
  420. agno/tools/moviepy_video.py +18 -13
  421. agno/tools/nano_banana.py +151 -0
  422. agno/tools/neo4j.py +134 -0
  423. agno/tools/newspaper.py +15 -4
  424. agno/tools/newspaper4k.py +19 -6
  425. agno/tools/notion.py +204 -0
  426. agno/tools/openai.py +181 -17
  427. agno/tools/openbb.py +27 -20
  428. agno/tools/opencv.py +321 -0
  429. agno/tools/openweather.py +233 -0
  430. agno/tools/oxylabs.py +385 -0
  431. agno/tools/pandas.py +25 -15
  432. agno/tools/parallel.py +314 -0
  433. agno/tools/postgres.py +238 -185
  434. agno/tools/pubmed.py +125 -13
  435. agno/tools/python.py +48 -35
  436. agno/tools/reasoning.py +283 -0
  437. agno/tools/reddit.py +207 -29
  438. agno/tools/redshift.py +406 -0
  439. agno/tools/replicate.py +69 -26
  440. agno/tools/resend.py +11 -6
  441. agno/tools/scrapegraph.py +179 -19
  442. agno/tools/searxng.py +23 -31
  443. agno/tools/serpapi.py +15 -10
  444. agno/tools/serper.py +255 -0
  445. agno/tools/shell.py +23 -12
  446. agno/tools/shopify.py +1519 -0
  447. agno/tools/slack.py +56 -14
  448. agno/tools/sleep.py +8 -6
  449. agno/tools/spider.py +35 -11
  450. agno/tools/spotify.py +919 -0
  451. agno/tools/sql.py +34 -19
  452. agno/tools/tavily.py +158 -8
  453. agno/tools/telegram.py +18 -8
  454. agno/tools/todoist.py +218 -0
  455. agno/tools/toolkit.py +134 -9
  456. agno/tools/trafilatura.py +388 -0
  457. agno/tools/trello.py +25 -28
  458. agno/tools/twilio.py +18 -9
  459. agno/tools/user_control_flow.py +78 -0
  460. agno/tools/valyu.py +228 -0
  461. agno/tools/visualization.py +467 -0
  462. agno/tools/webbrowser.py +28 -0
  463. agno/tools/webex.py +76 -0
  464. agno/tools/website.py +23 -19
  465. agno/tools/webtools.py +45 -0
  466. agno/tools/whatsapp.py +286 -0
  467. agno/tools/wikipedia.py +28 -19
  468. agno/tools/workflow.py +285 -0
  469. agno/tools/{twitter.py → x.py} +142 -46
  470. agno/tools/yfinance.py +41 -39
  471. agno/tools/youtube.py +34 -17
  472. agno/tools/zendesk.py +15 -5
  473. agno/tools/zep.py +454 -0
  474. agno/tools/zoom.py +86 -37
  475. agno/tracing/__init__.py +12 -0
  476. agno/tracing/exporter.py +157 -0
  477. agno/tracing/schemas.py +276 -0
  478. agno/tracing/setup.py +111 -0
  479. agno/utils/agent.py +938 -0
  480. agno/utils/audio.py +37 -1
  481. agno/utils/certs.py +27 -0
  482. agno/utils/code_execution.py +11 -0
  483. agno/utils/common.py +103 -20
  484. agno/utils/cryptography.py +22 -0
  485. agno/utils/dttm.py +33 -0
  486. agno/utils/events.py +700 -0
  487. agno/utils/functions.py +107 -37
  488. agno/utils/gemini.py +426 -0
  489. agno/utils/hooks.py +171 -0
  490. agno/utils/http.py +185 -0
  491. agno/utils/json_schema.py +159 -37
  492. agno/utils/knowledge.py +36 -0
  493. agno/utils/location.py +19 -0
  494. agno/utils/log.py +221 -8
  495. agno/utils/mcp.py +214 -0
  496. agno/utils/media.py +335 -14
  497. agno/utils/merge_dict.py +22 -1
  498. agno/utils/message.py +77 -2
  499. agno/utils/models/ai_foundry.py +50 -0
  500. agno/utils/models/claude.py +373 -0
  501. agno/utils/models/cohere.py +94 -0
  502. agno/utils/models/llama.py +85 -0
  503. agno/utils/models/mistral.py +100 -0
  504. agno/utils/models/openai_responses.py +140 -0
  505. agno/utils/models/schema_utils.py +153 -0
  506. agno/utils/models/watsonx.py +41 -0
  507. agno/utils/openai.py +257 -0
  508. agno/utils/pickle.py +1 -1
  509. agno/utils/pprint.py +124 -8
  510. agno/utils/print_response/agent.py +930 -0
  511. agno/utils/print_response/team.py +1914 -0
  512. agno/utils/print_response/workflow.py +1668 -0
  513. agno/utils/prompts.py +111 -0
  514. agno/utils/reasoning.py +108 -0
  515. agno/utils/response.py +163 -0
  516. agno/utils/serialize.py +32 -0
  517. agno/utils/shell.py +4 -4
  518. agno/utils/streamlit.py +487 -0
  519. agno/utils/string.py +204 -51
  520. agno/utils/team.py +139 -0
  521. agno/utils/timer.py +9 -2
  522. agno/utils/tokens.py +657 -0
  523. agno/utils/tools.py +19 -1
  524. agno/utils/whatsapp.py +305 -0
  525. agno/utils/yaml_io.py +3 -3
  526. agno/vectordb/__init__.py +2 -0
  527. agno/vectordb/base.py +87 -9
  528. agno/vectordb/cassandra/__init__.py +5 -1
  529. agno/vectordb/cassandra/cassandra.py +383 -27
  530. agno/vectordb/chroma/__init__.py +4 -0
  531. agno/vectordb/chroma/chromadb.py +748 -83
  532. agno/vectordb/clickhouse/__init__.py +7 -1
  533. agno/vectordb/clickhouse/clickhousedb.py +554 -53
  534. agno/vectordb/couchbase/__init__.py +3 -0
  535. agno/vectordb/couchbase/couchbase.py +1446 -0
  536. agno/vectordb/lancedb/__init__.py +5 -0
  537. agno/vectordb/lancedb/lance_db.py +730 -98
  538. agno/vectordb/langchaindb/__init__.py +5 -0
  539. agno/vectordb/langchaindb/langchaindb.py +163 -0
  540. agno/vectordb/lightrag/__init__.py +5 -0
  541. agno/vectordb/lightrag/lightrag.py +388 -0
  542. agno/vectordb/llamaindex/__init__.py +3 -0
  543. agno/vectordb/llamaindex/llamaindexdb.py +166 -0
  544. agno/vectordb/milvus/__init__.py +3 -0
  545. agno/vectordb/milvus/milvus.py +966 -78
  546. agno/vectordb/mongodb/__init__.py +9 -1
  547. agno/vectordb/mongodb/mongodb.py +1175 -172
  548. agno/vectordb/pgvector/__init__.py +8 -0
  549. agno/vectordb/pgvector/pgvector.py +599 -115
  550. agno/vectordb/pineconedb/__init__.py +5 -1
  551. agno/vectordb/pineconedb/pineconedb.py +406 -43
  552. agno/vectordb/qdrant/__init__.py +4 -0
  553. agno/vectordb/qdrant/qdrant.py +914 -61
  554. agno/vectordb/redis/__init__.py +9 -0
  555. agno/vectordb/redis/redisdb.py +682 -0
  556. agno/vectordb/singlestore/__init__.py +8 -1
  557. agno/vectordb/singlestore/singlestore.py +771 -0
  558. agno/vectordb/surrealdb/__init__.py +3 -0
  559. agno/vectordb/surrealdb/surrealdb.py +663 -0
  560. agno/vectordb/upstashdb/__init__.py +5 -0
  561. agno/vectordb/upstashdb/upstashdb.py +718 -0
  562. agno/vectordb/weaviate/__init__.py +8 -0
  563. agno/vectordb/weaviate/index.py +15 -0
  564. agno/vectordb/weaviate/weaviate.py +1009 -0
  565. agno/workflow/__init__.py +23 -1
  566. agno/workflow/agent.py +299 -0
  567. agno/workflow/condition.py +759 -0
  568. agno/workflow/loop.py +756 -0
  569. agno/workflow/parallel.py +853 -0
  570. agno/workflow/router.py +723 -0
  571. agno/workflow/step.py +1564 -0
  572. agno/workflow/steps.py +613 -0
  573. agno/workflow/types.py +556 -0
  574. agno/workflow/workflow.py +4327 -514
  575. agno-2.3.13.dist-info/METADATA +639 -0
  576. agno-2.3.13.dist-info/RECORD +613 -0
  577. {agno-0.1.2.dist-info → agno-2.3.13.dist-info}/WHEEL +1 -1
  578. agno-2.3.13.dist-info/licenses/LICENSE +201 -0
  579. agno/api/playground.py +0 -91
  580. agno/api/schemas/playground.py +0 -22
  581. agno/api/schemas/user.py +0 -22
  582. agno/api/schemas/workspace.py +0 -46
  583. agno/api/user.py +0 -160
  584. agno/api/workspace.py +0 -151
  585. agno/cli/auth_server.py +0 -118
  586. agno/cli/config.py +0 -275
  587. agno/cli/console.py +0 -88
  588. agno/cli/credentials.py +0 -23
  589. agno/cli/entrypoint.py +0 -571
  590. agno/cli/operator.py +0 -355
  591. agno/cli/settings.py +0 -85
  592. agno/cli/ws/ws_cli.py +0 -817
  593. agno/constants.py +0 -13
  594. agno/document/__init__.py +0 -1
  595. agno/document/chunking/semantic.py +0 -47
  596. agno/document/chunking/strategy.py +0 -31
  597. agno/document/reader/__init__.py +0 -1
  598. agno/document/reader/arxiv_reader.py +0 -41
  599. agno/document/reader/base.py +0 -22
  600. agno/document/reader/csv_reader.py +0 -84
  601. agno/document/reader/docx_reader.py +0 -46
  602. agno/document/reader/firecrawl_reader.py +0 -99
  603. agno/document/reader/json_reader.py +0 -43
  604. agno/document/reader/pdf_reader.py +0 -219
  605. agno/document/reader/s3/pdf_reader.py +0 -46
  606. agno/document/reader/s3/text_reader.py +0 -51
  607. agno/document/reader/text_reader.py +0 -41
  608. agno/document/reader/website_reader.py +0 -175
  609. agno/document/reader/youtube_reader.py +0 -50
  610. agno/embedder/__init__.py +0 -1
  611. agno/embedder/azure_openai.py +0 -86
  612. agno/embedder/cohere.py +0 -72
  613. agno/embedder/fastembed.py +0 -37
  614. agno/embedder/google.py +0 -73
  615. agno/embedder/huggingface.py +0 -54
  616. agno/embedder/mistral.py +0 -80
  617. agno/embedder/ollama.py +0 -57
  618. agno/embedder/openai.py +0 -74
  619. agno/embedder/sentence_transformer.py +0 -38
  620. agno/embedder/voyageai.py +0 -64
  621. agno/eval/perf.py +0 -201
  622. agno/file/__init__.py +0 -1
  623. agno/file/file.py +0 -16
  624. agno/file/local/csv.py +0 -32
  625. agno/file/local/txt.py +0 -19
  626. agno/infra/app.py +0 -240
  627. agno/infra/base.py +0 -144
  628. agno/infra/context.py +0 -20
  629. agno/infra/db_app.py +0 -52
  630. agno/infra/resource.py +0 -205
  631. agno/infra/resources.py +0 -55
  632. agno/knowledge/agent.py +0 -230
  633. agno/knowledge/arxiv.py +0 -22
  634. agno/knowledge/combined.py +0 -22
  635. agno/knowledge/csv.py +0 -28
  636. agno/knowledge/csv_url.py +0 -19
  637. agno/knowledge/document.py +0 -20
  638. agno/knowledge/docx.py +0 -30
  639. agno/knowledge/json.py +0 -28
  640. agno/knowledge/langchain.py +0 -71
  641. agno/knowledge/llamaindex.py +0 -66
  642. agno/knowledge/pdf.py +0 -28
  643. agno/knowledge/pdf_url.py +0 -26
  644. agno/knowledge/s3/base.py +0 -60
  645. agno/knowledge/s3/pdf.py +0 -21
  646. agno/knowledge/s3/text.py +0 -23
  647. agno/knowledge/text.py +0 -30
  648. agno/knowledge/website.py +0 -88
  649. agno/knowledge/wikipedia.py +0 -31
  650. agno/knowledge/youtube.py +0 -22
  651. agno/memory/agent.py +0 -392
  652. agno/memory/classifier.py +0 -104
  653. agno/memory/db/__init__.py +0 -1
  654. agno/memory/db/base.py +0 -42
  655. agno/memory/db/mongodb.py +0 -189
  656. agno/memory/db/postgres.py +0 -203
  657. agno/memory/db/sqlite.py +0 -193
  658. agno/memory/memory.py +0 -15
  659. agno/memory/row.py +0 -36
  660. agno/memory/summarizer.py +0 -192
  661. agno/memory/summary.py +0 -19
  662. agno/memory/workflow.py +0 -38
  663. agno/models/google/gemini_openai.py +0 -26
  664. agno/models/ollama/hermes.py +0 -221
  665. agno/models/ollama/tools.py +0 -362
  666. agno/models/vertexai/gemini.py +0 -595
  667. agno/playground/__init__.py +0 -3
  668. agno/playground/async_router.py +0 -421
  669. agno/playground/deploy.py +0 -249
  670. agno/playground/operator.py +0 -92
  671. agno/playground/playground.py +0 -91
  672. agno/playground/schemas.py +0 -76
  673. agno/playground/serve.py +0 -55
  674. agno/playground/sync_router.py +0 -405
  675. agno/reasoning/agent.py +0 -68
  676. agno/run/response.py +0 -112
  677. agno/storage/agent/__init__.py +0 -0
  678. agno/storage/agent/base.py +0 -38
  679. agno/storage/agent/dynamodb.py +0 -350
  680. agno/storage/agent/json.py +0 -92
  681. agno/storage/agent/mongodb.py +0 -228
  682. agno/storage/agent/postgres.py +0 -367
  683. agno/storage/agent/session.py +0 -79
  684. agno/storage/agent/singlestore.py +0 -303
  685. agno/storage/agent/sqlite.py +0 -357
  686. agno/storage/agent/yaml.py +0 -93
  687. agno/storage/workflow/__init__.py +0 -0
  688. agno/storage/workflow/base.py +0 -40
  689. agno/storage/workflow/mongodb.py +0 -233
  690. agno/storage/workflow/postgres.py +0 -366
  691. agno/storage/workflow/session.py +0 -60
  692. agno/storage/workflow/sqlite.py +0 -359
  693. agno/tools/googlesearch.py +0 -88
  694. agno/utils/defaults.py +0 -57
  695. agno/utils/filesystem.py +0 -39
  696. agno/utils/git.py +0 -52
  697. agno/utils/json_io.py +0 -30
  698. agno/utils/load_env.py +0 -19
  699. agno/utils/py_io.py +0 -19
  700. agno/utils/pyproject.py +0 -18
  701. agno/utils/resource_filter.py +0 -31
  702. agno/vectordb/singlestore/s2vectordb.py +0 -390
  703. agno/vectordb/singlestore/s2vectordb2.py +0 -355
  704. agno/workspace/__init__.py +0 -0
  705. agno/workspace/config.py +0 -325
  706. agno/workspace/enums.py +0 -6
  707. agno/workspace/helpers.py +0 -48
  708. agno/workspace/operator.py +0 -758
  709. agno/workspace/settings.py +0 -63
  710. agno-0.1.2.dist-info/LICENSE +0 -375
  711. agno-0.1.2.dist-info/METADATA +0 -502
  712. agno-0.1.2.dist-info/RECORD +0 -352
  713. agno-0.1.2.dist-info/entry_points.txt +0 -3
  714. /agno/{cli → db/migrations}/__init__.py +0 -0
  715. /agno/{cli/ws → db/migrations/versions}/__init__.py +0 -0
  716. /agno/{document/chunking/__init__.py → db/schemas/metrics.py} +0 -0
  717. /agno/{document/reader/s3 → integrations}/__init__.py +0 -0
  718. /agno/{file/local → knowledge/chunking}/__init__.py +0 -0
  719. /agno/{infra → knowledge/remote_content}/__init__.py +0 -0
  720. /agno/{knowledge/s3 → tools/models}/__init__.py +0 -0
  721. /agno/{reranker → utils/models}/__init__.py +0 -0
  722. /agno/{storage → utils/print_response}/__init__.py +0 -0
  723. {agno-0.1.2.dist-info → agno-2.3.13.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,639 @@
1
+ Metadata-Version: 2.4
2
+ Name: agno
3
+ Version: 2.3.13
4
+ Summary: Agno: a lightweight library for building Multi-Agent Systems
5
+ Author-email: Ashpreet Bedi <ashpreet@agno.com>
6
+ Project-URL: homepage, https://agno.com
7
+ Project-URL: documentation, https://docs.agno.com
8
+ Keywords: agent,reasoning,llm,large-language-model,framework
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.7
14
+ Classifier: Programming Language :: Python :: 3.8
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
+ Requires-Python: <4,>=3.7
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: docstring-parser
25
+ Requires-Dist: gitpython
26
+ Requires-Dist: h11>=0.16.0
27
+ Requires-Dist: httpx[http2]
28
+ Requires-Dist: packaging
29
+ Requires-Dist: pydantic-settings
30
+ Requires-Dist: pydantic
31
+ Requires-Dist: python-dotenv
32
+ Requires-Dist: python-multipart
33
+ Requires-Dist: pyyaml
34
+ Requires-Dist: rich
35
+ Requires-Dist: typer
36
+ Requires-Dist: typing-extensions
37
+ Provides-Extra: dev
38
+ Requires-Dist: mypy==1.18.2; extra == "dev"
39
+ Requires-Dist: ruff==0.14.3; extra == "dev"
40
+ Requires-Dist: pytest; extra == "dev"
41
+ Requires-Dist: pytest-asyncio; extra == "dev"
42
+ Requires-Dist: pytest-cov; extra == "dev"
43
+ Requires-Dist: pytest-mock; extra == "dev"
44
+ Requires-Dist: timeout-decorator; extra == "dev"
45
+ Requires-Dist: types-pyyaml; extra == "dev"
46
+ Requires-Dist: types-aiofiles; extra == "dev"
47
+ Requires-Dist: fastapi; extra == "dev"
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
+ Provides-Extra: os
53
+ Requires-Dist: fastapi; extra == "os"
54
+ Requires-Dist: uvicorn; extra == "os"
55
+ Requires-Dist: PyJWT; extra == "os"
56
+ Provides-Extra: opentelemetry
57
+ Requires-Dist: opentelemetry-sdk; extra == "opentelemetry"
58
+ Requires-Dist: opentelemetry-exporter-otlp; extra == "opentelemetry"
59
+ Provides-Extra: weave
60
+ Requires-Dist: weave; extra == "weave"
61
+ Provides-Extra: openlit
62
+ Requires-Dist: openlit; extra == "openlit"
63
+ Requires-Dist: agno[opentelemetry]; extra == "openlit"
64
+ Provides-Extra: arize
65
+ Requires-Dist: arize-phoenix; extra == "arize"
66
+ Requires-Dist: agno[opentelemetry]; extra == "arize"
67
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc; extra == "arize"
68
+ Requires-Dist: opentelemetry-distro; extra == "arize"
69
+ Provides-Extra: langfuse
70
+ Requires-Dist: langfuse; extra == "langfuse"
71
+ Provides-Extra: aws-bedrock
72
+ Requires-Dist: boto3; extra == "aws-bedrock"
73
+ Requires-Dist: aioboto3; extra == "aws-bedrock"
74
+ Provides-Extra: anthropic
75
+ Requires-Dist: anthropic; extra == "anthropic"
76
+ Provides-Extra: azure
77
+ Requires-Dist: azure-ai-inference; extra == "azure"
78
+ Requires-Dist: aiohttp; extra == "azure"
79
+ Provides-Extra: cerebras
80
+ Requires-Dist: cerebras-cloud-sdk; extra == "cerebras"
81
+ Provides-Extra: cohere
82
+ Requires-Dist: cohere; extra == "cohere"
83
+ Provides-Extra: infinity
84
+ Requires-Dist: infinity_client; extra == "infinity"
85
+ Provides-Extra: google
86
+ Requires-Dist: google-genai>=1.52.0; extra == "google"
87
+ Provides-Extra: groq
88
+ Requires-Dist: groq; extra == "groq"
89
+ Provides-Extra: ibm
90
+ Requires-Dist: ibm-watsonx-ai; extra == "ibm"
91
+ Provides-Extra: litellm
92
+ Requires-Dist: litellm; extra == "litellm"
93
+ Provides-Extra: lmstudio
94
+ Requires-Dist: lmstudio; extra == "lmstudio"
95
+ Provides-Extra: meta
96
+ Requires-Dist: llama-api-client; extra == "meta"
97
+ Provides-Extra: mistral
98
+ Requires-Dist: mistralai; extra == "mistral"
99
+ Provides-Extra: ollama
100
+ Requires-Dist: ollama; extra == "ollama"
101
+ Provides-Extra: openai
102
+ Requires-Dist: openai; extra == "openai"
103
+ Provides-Extra: portkey
104
+ Requires-Dist: portkey-ai; extra == "portkey"
105
+ Provides-Extra: tokenizers
106
+ Requires-Dist: tiktoken; extra == "tokenizers"
107
+ Requires-Dist: tokenizers; extra == "tokenizers"
108
+ Provides-Extra: agentql
109
+ Requires-Dist: agentql; extra == "agentql"
110
+ Provides-Extra: apify
111
+ Requires-Dist: apify-client; extra == "apify"
112
+ Provides-Extra: arxiv
113
+ Requires-Dist: arxiv; extra == "arxiv"
114
+ Provides-Extra: brave
115
+ Requires-Dist: brave-search; extra == "brave"
116
+ Provides-Extra: browserbase
117
+ Requires-Dist: browserbase; extra == "browserbase"
118
+ Requires-Dist: playwright; extra == "browserbase"
119
+ Provides-Extra: cartesia
120
+ Requires-Dist: cartesia; extra == "cartesia"
121
+ Provides-Extra: confluence
122
+ Requires-Dist: atlassian-python-api; extra == "confluence"
123
+ Provides-Extra: ddg
124
+ Requires-Dist: ddgs; extra == "ddg"
125
+ Provides-Extra: duckdb
126
+ Requires-Dist: duckdb; extra == "duckdb"
127
+ Provides-Extra: elevenlabs
128
+ Requires-Dist: elevenlabs; extra == "elevenlabs"
129
+ Provides-Extra: evm
130
+ Requires-Dist: web3; extra == "evm"
131
+ Provides-Extra: exa
132
+ Requires-Dist: exa_py; extra == "exa"
133
+ Provides-Extra: fal
134
+ Requires-Dist: fal_client; extra == "fal"
135
+ Provides-Extra: firecrawl
136
+ Requires-Dist: firecrawl-py==3.4.0; extra == "firecrawl"
137
+ Provides-Extra: tavily
138
+ Requires-Dist: tavily-python; extra == "tavily"
139
+ Provides-Extra: crawl4ai
140
+ Requires-Dist: crawl4ai>=0.6.3; extra == "crawl4ai"
141
+ Provides-Extra: github
142
+ Requires-Dist: PyGithub; extra == "github"
143
+ Provides-Extra: gmail
144
+ Requires-Dist: google-api-python-client; extra == "gmail"
145
+ Requires-Dist: google-auth-httplib2; extra == "gmail"
146
+ Requires-Dist: google-auth-oauthlib; extra == "gmail"
147
+ Provides-Extra: google-bigquery
148
+ Requires-Dist: google-cloud-bigquery; extra == "google-bigquery"
149
+ Provides-Extra: googlemaps
150
+ Requires-Dist: googlemaps; extra == "googlemaps"
151
+ Requires-Dist: google-maps-places; extra == "googlemaps"
152
+ Provides-Extra: matplotlib
153
+ Requires-Dist: matplotlib; extra == "matplotlib"
154
+ Provides-Extra: mcp
155
+ Requires-Dist: mcp>=1.9.2; extra == "mcp"
156
+ Provides-Extra: mem0
157
+ Requires-Dist: mem0ai; extra == "mem0"
158
+ Provides-Extra: memori
159
+ Requires-Dist: memorisdk==3.0.5; extra == "memori"
160
+ Provides-Extra: newspaper
161
+ Requires-Dist: newspaper4k; extra == "newspaper"
162
+ Requires-Dist: lxml_html_clean; extra == "newspaper"
163
+ Provides-Extra: notion
164
+ Requires-Dist: notion-client; extra == "notion"
165
+ Provides-Extra: opencv
166
+ Requires-Dist: opencv-python; extra == "opencv"
167
+ Provides-Extra: parallel
168
+ Requires-Dist: parallel-web; extra == "parallel"
169
+ Provides-Extra: psycopg
170
+ Requires-Dist: psycopg-binary; extra == "psycopg"
171
+ Requires-Dist: psycopg; extra == "psycopg"
172
+ Provides-Extra: redshift
173
+ Requires-Dist: redshift-connector; extra == "redshift"
174
+ Provides-Extra: reportlab
175
+ Requires-Dist: reportlab; extra == "reportlab"
176
+ Provides-Extra: scrapegraph
177
+ Requires-Dist: scrapegraph-py; extra == "scrapegraph"
178
+ Provides-Extra: todoist
179
+ Requires-Dist: todoist-api-python; extra == "todoist"
180
+ Provides-Extra: valyu
181
+ Requires-Dist: valyu; extra == "valyu"
182
+ Provides-Extra: webex
183
+ Requires-Dist: webexpythonsdk; extra == "webex"
184
+ Provides-Extra: yfinance
185
+ Requires-Dist: yfinance; extra == "yfinance"
186
+ Provides-Extra: youtube
187
+ Requires-Dist: youtube_transcript_api; extra == "youtube"
188
+ Provides-Extra: zep
189
+ Requires-Dist: zep-cloud; extra == "zep"
190
+ Provides-Extra: daytona
191
+ Requires-Dist: daytona; extra == "daytona"
192
+ Provides-Extra: oxylabs
193
+ Requires-Dist: oxylabs; extra == "oxylabs"
194
+ Provides-Extra: trafilatura
195
+ Requires-Dist: trafilatura; extra == "trafilatura"
196
+ Provides-Extra: neo4j
197
+ Requires-Dist: neo4j; extra == "neo4j"
198
+ Provides-Extra: sql
199
+ Requires-Dist: sqlalchemy; extra == "sql"
200
+ Provides-Extra: postgres
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"
207
+ Provides-Extra: sqlite
208
+ Requires-Dist: sqlalchemy; extra == "sqlite"
209
+ Provides-Extra: gcs
210
+ Requires-Dist: google-cloud-storage; extra == "gcs"
211
+ Provides-Extra: firestore
212
+ Requires-Dist: google-cloud-firestore; extra == "firestore"
213
+ Provides-Extra: redis
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"
219
+ Provides-Extra: pgvector
220
+ Requires-Dist: pgvector; extra == "pgvector"
221
+ Provides-Extra: chromadb
222
+ Requires-Dist: chromadb; extra == "chromadb"
223
+ Provides-Extra: lancedb
224
+ Requires-Dist: lancedb==0.24.0; extra == "lancedb"
225
+ Requires-Dist: tantivy; extra == "lancedb"
226
+ Provides-Extra: pylance
227
+ Requires-Dist: pylance; extra == "pylance"
228
+ Provides-Extra: qdrant
229
+ Requires-Dist: qdrant-client; extra == "qdrant"
230
+ Provides-Extra: couchbase
231
+ Requires-Dist: couchbase; extra == "couchbase"
232
+ Provides-Extra: cassandra
233
+ Requires-Dist: cassio; extra == "cassandra"
234
+ Provides-Extra: mongodb
235
+ Requires-Dist: pymongo[srv]; extra == "mongodb"
236
+ Provides-Extra: singlestore
237
+ Requires-Dist: sqlalchemy; extra == "singlestore"
238
+ Provides-Extra: weaviate
239
+ Requires-Dist: weaviate-client; extra == "weaviate"
240
+ Provides-Extra: milvusdb
241
+ Requires-Dist: pymilvus>=2.5.10; extra == "milvusdb"
242
+ Provides-Extra: clickhouse
243
+ Requires-Dist: clickhouse-connect; extra == "clickhouse"
244
+ Provides-Extra: pinecone
245
+ Requires-Dist: pinecone==5.4.2; extra == "pinecone"
246
+ Provides-Extra: surrealdb
247
+ Requires-Dist: surrealdb>=1.0.4; extra == "surrealdb"
248
+ Provides-Extra: upstash
249
+ Requires-Dist: upstash-vector; extra == "upstash"
250
+ Provides-Extra: pdf
251
+ Requires-Dist: pypdf; extra == "pdf"
252
+ Requires-Dist: rapidocr_onnxruntime; extra == "pdf"
253
+ Provides-Extra: docx
254
+ Requires-Dist: python-docx; extra == "docx"
255
+ Provides-Extra: pptx
256
+ Requires-Dist: python-pptx; extra == "pptx"
257
+ Provides-Extra: text
258
+ Requires-Dist: aiofiles; extra == "text"
259
+ Provides-Extra: csv
260
+ Requires-Dist: aiofiles; extra == "csv"
261
+ Provides-Extra: markdown
262
+ Requires-Dist: unstructured; extra == "markdown"
263
+ Requires-Dist: markdown; extra == "markdown"
264
+ Requires-Dist: aiofiles; extra == "markdown"
265
+ Provides-Extra: chonkie
266
+ Requires-Dist: chonkie[st]; extra == "chonkie"
267
+ Requires-Dist: chonkie; extra == "chonkie"
268
+ Provides-Extra: agui
269
+ Requires-Dist: ag-ui-protocol; extra == "agui"
270
+ Provides-Extra: a2a
271
+ Requires-Dist: a2a-sdk; extra == "a2a"
272
+ Provides-Extra: huggingface
273
+ Requires-Dist: huggingface-hub; extra == "huggingface"
274
+ Provides-Extra: performance
275
+ Requires-Dist: memory_profiler; extra == "performance"
276
+ Provides-Extra: cookbooks
277
+ Requires-Dist: inquirer; extra == "cookbooks"
278
+ Requires-Dist: email_validator; extra == "cookbooks"
279
+ Provides-Extra: docker
280
+ Requires-Dist: agno-infra[docker]; extra == "docker"
281
+ Provides-Extra: aws
282
+ Requires-Dist: agno-infra[aws]; extra == "aws"
283
+ Requires-Dist: agno-infra[docker]; extra == "aws"
284
+ Provides-Extra: infra
285
+ Requires-Dist: agno-infra; extra == "infra"
286
+ Provides-Extra: models
287
+ Requires-Dist: agno[aws-bedrock]; extra == "models"
288
+ Requires-Dist: agno[anthropic]; extra == "models"
289
+ Requires-Dist: agno[azure]; extra == "models"
290
+ Requires-Dist: agno[cerebras]; extra == "models"
291
+ Requires-Dist: agno[cohere]; extra == "models"
292
+ Requires-Dist: agno[google]; extra == "models"
293
+ Requires-Dist: agno[groq]; extra == "models"
294
+ Requires-Dist: agno[ibm]; extra == "models"
295
+ Requires-Dist: agno[litellm]; extra == "models"
296
+ Requires-Dist: agno[meta]; extra == "models"
297
+ Requires-Dist: agno[mistral]; extra == "models"
298
+ Requires-Dist: agno[ollama]; extra == "models"
299
+ Requires-Dist: agno[openai]; extra == "models"
300
+ Requires-Dist: agno[portkey]; extra == "models"
301
+ Provides-Extra: tools
302
+ Requires-Dist: agno[apify]; extra == "tools"
303
+ Requires-Dist: agno[arxiv]; extra == "tools"
304
+ Requires-Dist: agno[exa]; extra == "tools"
305
+ Requires-Dist: agno[cartesia]; extra == "tools"
306
+ Requires-Dist: agno[ddg]; extra == "tools"
307
+ Requires-Dist: agno[duckdb]; extra == "tools"
308
+ Requires-Dist: agno[newspaper]; extra == "tools"
309
+ Requires-Dist: agno[youtube]; extra == "tools"
310
+ Requires-Dist: agno[firecrawl]; extra == "tools"
311
+ Requires-Dist: agno[tavily]; extra == "tools"
312
+ Requires-Dist: agno[crawl4ai]; extra == "tools"
313
+ Requires-Dist: agno[github]; extra == "tools"
314
+ Requires-Dist: agno[gmail]; extra == "tools"
315
+ Requires-Dist: agno[googlemaps]; extra == "tools"
316
+ Requires-Dist: agno[todoist]; extra == "tools"
317
+ Requires-Dist: agno[matplotlib]; extra == "tools"
318
+ Requires-Dist: agno[elevenlabs]; extra == "tools"
319
+ Requires-Dist: agno[evm]; extra == "tools"
320
+ Requires-Dist: agno[fal]; extra == "tools"
321
+ Requires-Dist: agno[webex]; extra == "tools"
322
+ Requires-Dist: agno[mcp]; extra == "tools"
323
+ Requires-Dist: agno[browserbase]; extra == "tools"
324
+ Requires-Dist: agno[agentql]; extra == "tools"
325
+ Requires-Dist: agno[opencv]; extra == "tools"
326
+ Requires-Dist: agno[parallel]; extra == "tools"
327
+ Requires-Dist: agno[scrapegraph]; extra == "tools"
328
+ Requires-Dist: agno[valyu]; extra == "tools"
329
+ Requires-Dist: agno[yfinance]; extra == "tools"
330
+ Requires-Dist: agno[confluence]; extra == "tools"
331
+ Requires-Dist: agno[notion]; extra == "tools"
332
+ Requires-Dist: agno[oxylabs]; extra == "tools"
333
+ Requires-Dist: agno[zep]; extra == "tools"
334
+ Requires-Dist: agno[mem0]; extra == "tools"
335
+ Requires-Dist: agno[memori]; extra == "tools"
336
+ Requires-Dist: agno[google_bigquery]; extra == "tools"
337
+ Requires-Dist: agno[psycopg]; extra == "tools"
338
+ Requires-Dist: agno[redshift]; extra == "tools"
339
+ Requires-Dist: agno[reportlab]; extra == "tools"
340
+ Requires-Dist: agno[trafilatura]; extra == "tools"
341
+ Requires-Dist: agno[neo4j]; extra == "tools"
342
+ Provides-Extra: storage
343
+ Requires-Dist: agno[sql]; extra == "storage"
344
+ Requires-Dist: agno[postgres]; extra == "storage"
345
+ Requires-Dist: agno[async_postgres]; extra == "storage"
346
+ Requires-Dist: agno[async_mongo]; extra == "storage"
347
+ Requires-Dist: agno[sqlite]; extra == "storage"
348
+ Requires-Dist: agno[gcs]; extra == "storage"
349
+ Requires-Dist: agno[firestore]; extra == "storage"
350
+ Requires-Dist: agno[redis]; extra == "storage"
351
+ Provides-Extra: vectordbs
352
+ Requires-Dist: agno[pgvector]; extra == "vectordbs"
353
+ Requires-Dist: agno[chromadb]; extra == "vectordbs"
354
+ Requires-Dist: agno[lancedb]; extra == "vectordbs"
355
+ Requires-Dist: agno[qdrant]; extra == "vectordbs"
356
+ Requires-Dist: agno[couchbase]; extra == "vectordbs"
357
+ Requires-Dist: agno[cassandra]; extra == "vectordbs"
358
+ Requires-Dist: agno[mongodb]; extra == "vectordbs"
359
+ Requires-Dist: agno[singlestore]; extra == "vectordbs"
360
+ Requires-Dist: agno[weaviate]; extra == "vectordbs"
361
+ Requires-Dist: agno[milvusdb]; extra == "vectordbs"
362
+ Requires-Dist: agno[clickhouse]; extra == "vectordbs"
363
+ Requires-Dist: agno[pinecone]; extra == "vectordbs"
364
+ Requires-Dist: agno[surrealdb]; extra == "vectordbs"
365
+ Requires-Dist: agno[upstash]; extra == "vectordbs"
366
+ Requires-Dist: agno[pylance]; extra == "vectordbs"
367
+ Provides-Extra: knowledge
368
+ Requires-Dist: agno[pdf]; extra == "knowledge"
369
+ Requires-Dist: agno[docx]; extra == "knowledge"
370
+ Requires-Dist: agno[pptx]; extra == "knowledge"
371
+ Requires-Dist: agno[text]; extra == "knowledge"
372
+ Requires-Dist: agno[csv]; extra == "knowledge"
373
+ Requires-Dist: agno[markdown]; extra == "knowledge"
374
+ Requires-Dist: agno[chonkie]; extra == "knowledge"
375
+ Provides-Extra: embedders
376
+ Requires-Dist: agno[huggingface]; extra == "embedders"
377
+ Requires-Dist: agno[vllm]; extra == "embedders"
378
+ Provides-Extra: tests
379
+ Requires-Dist: agno[a2a]; extra == "tests"
380
+ Requires-Dist: agno[dev]; extra == "tests"
381
+ Requires-Dist: agno[models]; extra == "tests"
382
+ Requires-Dist: agno[tools]; extra == "tests"
383
+ Requires-Dist: agno[storage]; extra == "tests"
384
+ Requires-Dist: agno[vectordbs]; extra == "tests"
385
+ Requires-Dist: agno[knowledge]; extra == "tests"
386
+ Requires-Dist: agno[embedders]; extra == "tests"
387
+ Requires-Dist: agno[performance]; extra == "tests"
388
+ Requires-Dist: agno[cookbooks]; extra == "tests"
389
+ Requires-Dist: agno[agui]; extra == "tests"
390
+ Requires-Dist: agno[integration-tests]; extra == "tests"
391
+ Requires-Dist: twine; extra == "tests"
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"
401
+ Dynamic: license-file
402
+
403
+ <div align="center" id="top">
404
+ <a href="https://agno.com">
405
+ <picture>
406
+ <source media="(prefers-color-scheme: dark)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-dark.svg">
407
+ <source media="(prefers-color-scheme: light)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg">
408
+ <img src="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg" alt="Agno">
409
+ </picture>
410
+ </a>
411
+ </div>
412
+
413
+ <div align="center">
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 />
420
+ </div>
421
+
422
+ ## What is Agno?
423
+
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.
427
+
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>
448
+
449
+ ## Example
450
+
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
454
+ from agno.agent import Agent
455
+ from agno.db.sqlite import SqliteDb
456
+ from agno.models.anthropic import Claude
457
+ from agno.os import AgentOS
458
+ from agno.tools.mcp import MCPTools
459
+
460
+ # ************* Create Agent *************
461
+ agno_agent = Agent(
462
+ name="Agno Agent",
463
+ model=Claude(id="claude-sonnet-4-5"),
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,
470
+ markdown=True,
471
+ )
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)
482
+ ```
483
+
484
+ ## AgentOS - Production Runtime for Multi-Agent Systems
485
+
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:
487
+
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.
489
+
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.
491
+
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..
493
+
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:
495
+
496
+ https://github.com/user-attachments/assets/feb23db8-15cc-4e88-be7c-01a21a03ebf6
497
+
498
+ ## The Complete Agentic Solution
499
+
500
+ Agno provides the complete solution for companies building agentic systems:
501
+
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
509
+
510
+ Agno is an incredibly feature-rich framework purpose-built for Agent Engineering. Here are some key features:
511
+
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.
543
+
544
+ ### IDE Integration
545
+
546
+ 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:
547
+
548
+ 1. In Cursor, go to the "Cursor Settings" menu.
549
+ 2. Find the "Indexing & Docs" section.
550
+ 3. Add `https://docs.agno.com/llms-full.txt` to the list of documentation URLs.
551
+ 4. Save the changes.
552
+
553
+ Now, Cursor will have access to the Agno documentation. You can do the same with other IDEs like VSCode, Windsurf etc.
554
+
555
+ ## Performance
556
+
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
566
+
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):
568
+
569
+ - **Agent instantiation:** ~3μs on average
570
+ - **Memory footprint:** ~6.6Kib on average
571
+
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.
576
+
577
+ ### Instantiation Time
578
+
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.
580
+
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.
583
+
584
+ ```shell
585
+ # Setup virtual environment
586
+ ./scripts/perf_setup.sh
587
+ source .venvs/perfenv/bin/activate
588
+
589
+ # Agno
590
+ python cookbook/evals/performance/instantiate_agent_with_tool.py
591
+
592
+ # LangGraph
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
598
+ ```
599
+
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.
601
+
602
+ https://github.com/user-attachments/assets/54b98576-1859-4880-9f2d-15e1a426719d
603
+
604
+ ### Memory Usage
605
+
606
+ 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.
607
+
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.
609
+
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:
620
+
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 |
625
+
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.
628
+
629
+ ## Contributions
630
+
631
+ We welcome contributions, read our [contributing guide](https://github.com/agno-agi/agno/blob/v2.0/CONTRIBUTING.md) to get started.
632
+
633
+ ## Telemetry
634
+
635
+ 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.
636
+
637
+ <p align="left">
638
+ <a href="#top">⬆️ Back to Top</a>
639
+ </p>