agno 2.1.4__tar.gz → 2.1.6__tar.gz

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 (565) hide show
  1. {agno-2.1.4 → agno-2.1.6}/PKG-INFO +100 -41
  2. agno-2.1.6/README.md +195 -0
  3. {agno-2.1.4 → agno-2.1.6}/agno/agent/agent.py +1775 -538
  4. agno-2.1.6/agno/db/async_postgres/__init__.py +3 -0
  5. agno-2.1.6/agno/db/async_postgres/async_postgres.py +1668 -0
  6. agno-2.1.6/agno/db/async_postgres/schemas.py +124 -0
  7. agno-2.1.6/agno/db/async_postgres/utils.py +289 -0
  8. {agno-2.1.4 → agno-2.1.6}/agno/db/base.py +237 -2
  9. {agno-2.1.4 → agno-2.1.6}/agno/db/dynamo/dynamo.py +2 -2
  10. {agno-2.1.4 → agno-2.1.6}/agno/db/firestore/firestore.py +2 -2
  11. {agno-2.1.4 → agno-2.1.6}/agno/db/firestore/utils.py +4 -2
  12. {agno-2.1.4 → agno-2.1.6}/agno/db/gcs_json/gcs_json_db.py +2 -2
  13. {agno-2.1.4 → agno-2.1.6}/agno/db/in_memory/in_memory_db.py +2 -2
  14. {agno-2.1.4 → agno-2.1.6}/agno/db/json/json_db.py +2 -2
  15. {agno-2.1.4 → agno-2.1.6}/agno/db/migrations/v1_to_v2.py +43 -13
  16. {agno-2.1.4 → agno-2.1.6}/agno/db/mongo/mongo.py +14 -6
  17. {agno-2.1.4 → agno-2.1.6}/agno/db/mongo/utils.py +0 -4
  18. {agno-2.1.4 → agno-2.1.6}/agno/db/mysql/mysql.py +23 -13
  19. {agno-2.1.4 → agno-2.1.6}/agno/db/postgres/postgres.py +17 -6
  20. {agno-2.1.4 → agno-2.1.6}/agno/db/redis/redis.py +2 -2
  21. {agno-2.1.4 → agno-2.1.6}/agno/db/singlestore/singlestore.py +19 -10
  22. {agno-2.1.4 → agno-2.1.6}/agno/db/sqlite/sqlite.py +22 -12
  23. {agno-2.1.4 → agno-2.1.6}/agno/db/sqlite/utils.py +8 -3
  24. agno-2.1.6/agno/db/surrealdb/__init__.py +3 -0
  25. agno-2.1.6/agno/db/surrealdb/metrics.py +292 -0
  26. agno-2.1.6/agno/db/surrealdb/models.py +259 -0
  27. agno-2.1.6/agno/db/surrealdb/queries.py +71 -0
  28. agno-2.1.6/agno/db/surrealdb/surrealdb.py +1193 -0
  29. agno-2.1.6/agno/db/surrealdb/utils.py +87 -0
  30. {agno-2.1.4 → agno-2.1.6}/agno/eval/accuracy.py +50 -43
  31. {agno-2.1.4 → agno-2.1.6}/agno/eval/performance.py +6 -3
  32. {agno-2.1.4 → agno-2.1.6}/agno/eval/reliability.py +6 -3
  33. {agno-2.1.4 → agno-2.1.6}/agno/eval/utils.py +33 -16
  34. {agno-2.1.4 → agno-2.1.6}/agno/exceptions.py +8 -2
  35. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/knowledge.py +260 -46
  36. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/pdf_reader.py +4 -6
  37. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/reader_factory.py +2 -3
  38. {agno-2.1.4 → agno-2.1.6}/agno/memory/manager.py +254 -46
  39. {agno-2.1.4 → agno-2.1.6}/agno/models/anthropic/claude.py +37 -0
  40. {agno-2.1.4 → agno-2.1.6}/agno/os/app.py +8 -7
  41. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/a2a/router.py +3 -5
  42. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/agui/router.py +4 -1
  43. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/agui/utils.py +27 -6
  44. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/slack/router.py +2 -4
  45. {agno-2.1.4 → agno-2.1.6}/agno/os/mcp.py +98 -41
  46. {agno-2.1.4 → agno-2.1.6}/agno/os/router.py +23 -0
  47. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/evals/evals.py +52 -20
  48. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/evals/utils.py +14 -14
  49. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/knowledge/knowledge.py +130 -9
  50. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/knowledge/schemas.py +57 -0
  51. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/memory/memory.py +116 -44
  52. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/metrics/metrics.py +16 -6
  53. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/session/session.py +65 -22
  54. {agno-2.1.4 → agno-2.1.6}/agno/os/schema.py +36 -0
  55. {agno-2.1.4 → agno-2.1.6}/agno/os/utils.py +64 -11
  56. agno-2.1.6/agno/reasoning/anthropic.py +80 -0
  57. agno-2.1.6/agno/reasoning/gemini.py +73 -0
  58. {agno-2.1.4 → agno-2.1.6}/agno/reasoning/openai.py +5 -0
  59. agno-2.1.6/agno/reasoning/vertexai.py +76 -0
  60. {agno-2.1.4 → agno-2.1.6}/agno/session/workflow.py +3 -3
  61. {agno-2.1.4 → agno-2.1.6}/agno/team/team.py +968 -179
  62. {agno-2.1.4 → agno-2.1.6}/agno/tools/googlesheets.py +20 -5
  63. {agno-2.1.4 → agno-2.1.6}/agno/tools/mcp_toolbox.py +3 -3
  64. {agno-2.1.4 → agno-2.1.6}/agno/tools/scrapegraph.py +1 -1
  65. {agno-2.1.4 → agno-2.1.6}/agno/utils/models/claude.py +3 -1
  66. {agno-2.1.4 → agno-2.1.6}/agno/utils/streamlit.py +1 -1
  67. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/base.py +22 -1
  68. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/cassandra/cassandra.py +9 -0
  69. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/chroma/chromadb.py +26 -6
  70. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/clickhouse/clickhousedb.py +9 -1
  71. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/couchbase/couchbase.py +11 -0
  72. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/lancedb/lance_db.py +20 -0
  73. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/langchaindb/langchaindb.py +11 -0
  74. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/lightrag/lightrag.py +9 -0
  75. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/llamaindex/llamaindexdb.py +15 -1
  76. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/milvus/milvus.py +23 -0
  77. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/mongodb/mongodb.py +22 -0
  78. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/pgvector/pgvector.py +19 -0
  79. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/pineconedb/pineconedb.py +35 -4
  80. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/qdrant/qdrant.py +24 -0
  81. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/singlestore/singlestore.py +25 -17
  82. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/surrealdb/surrealdb.py +18 -2
  83. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/upstashdb/upstashdb.py +26 -1
  84. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/weaviate/weaviate.py +18 -0
  85. {agno-2.1.4 → agno-2.1.6}/agno/workflow/condition.py +4 -0
  86. {agno-2.1.4 → agno-2.1.6}/agno/workflow/loop.py +4 -0
  87. {agno-2.1.4 → agno-2.1.6}/agno/workflow/parallel.py +4 -0
  88. {agno-2.1.4 → agno-2.1.6}/agno/workflow/router.py +4 -0
  89. {agno-2.1.4 → agno-2.1.6}/agno/workflow/step.py +30 -14
  90. {agno-2.1.4 → agno-2.1.6}/agno/workflow/steps.py +4 -0
  91. {agno-2.1.4 → agno-2.1.6}/agno/workflow/types.py +2 -2
  92. {agno-2.1.4 → agno-2.1.6}/agno/workflow/workflow.py +328 -61
  93. {agno-2.1.4 → agno-2.1.6}/agno.egg-info/PKG-INFO +100 -41
  94. {agno-2.1.4 → agno-2.1.6}/agno.egg-info/SOURCES.txt +13 -0
  95. {agno-2.1.4 → agno-2.1.6}/agno.egg-info/requires.txt +4 -0
  96. {agno-2.1.4 → agno-2.1.6}/pyproject.toml +3 -1
  97. agno-2.1.4/README.md +0 -139
  98. {agno-2.1.4 → agno-2.1.6}/LICENSE +0 -0
  99. {agno-2.1.4 → agno-2.1.6}/agno/__init__.py +0 -0
  100. {agno-2.1.4 → agno-2.1.6}/agno/agent/__init__.py +0 -0
  101. {agno-2.1.4 → agno-2.1.6}/agno/api/__init__.py +0 -0
  102. {agno-2.1.4 → agno-2.1.6}/agno/api/agent.py +0 -0
  103. {agno-2.1.4 → agno-2.1.6}/agno/api/api.py +0 -0
  104. {agno-2.1.4 → agno-2.1.6}/agno/api/evals.py +0 -0
  105. {agno-2.1.4 → agno-2.1.6}/agno/api/os.py +0 -0
  106. {agno-2.1.4 → agno-2.1.6}/agno/api/routes.py +0 -0
  107. {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/__init__.py +0 -0
  108. {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/agent.py +0 -0
  109. {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/evals.py +0 -0
  110. {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/os.py +0 -0
  111. {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/response.py +0 -0
  112. {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/team.py +0 -0
  113. {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/utils.py +0 -0
  114. {agno-2.1.4 → agno-2.1.6}/agno/api/schemas/workflows.py +0 -0
  115. {agno-2.1.4 → agno-2.1.6}/agno/api/settings.py +0 -0
  116. {agno-2.1.4 → agno-2.1.6}/agno/api/team.py +0 -0
  117. {agno-2.1.4 → agno-2.1.6}/agno/api/workflow.py +0 -0
  118. {agno-2.1.4 → agno-2.1.6}/agno/cloud/aws/base.py +0 -0
  119. {agno-2.1.4 → agno-2.1.6}/agno/cloud/aws/s3/__init__.py +0 -0
  120. {agno-2.1.4 → agno-2.1.6}/agno/cloud/aws/s3/api_client.py +0 -0
  121. {agno-2.1.4 → agno-2.1.6}/agno/cloud/aws/s3/bucket.py +0 -0
  122. {agno-2.1.4 → agno-2.1.6}/agno/cloud/aws/s3/object.py +0 -0
  123. {agno-2.1.4 → agno-2.1.6}/agno/db/__init__.py +0 -0
  124. {agno-2.1.4 → agno-2.1.6}/agno/db/dynamo/__init__.py +0 -0
  125. {agno-2.1.4 → agno-2.1.6}/agno/db/dynamo/schemas.py +0 -0
  126. {agno-2.1.4 → agno-2.1.6}/agno/db/dynamo/utils.py +0 -0
  127. {agno-2.1.4 → agno-2.1.6}/agno/db/firestore/__init__.py +0 -0
  128. {agno-2.1.4 → agno-2.1.6}/agno/db/firestore/schemas.py +0 -0
  129. {agno-2.1.4 → agno-2.1.6}/agno/db/gcs_json/__init__.py +0 -0
  130. {agno-2.1.4 → agno-2.1.6}/agno/db/gcs_json/utils.py +0 -0
  131. {agno-2.1.4 → agno-2.1.6}/agno/db/in_memory/__init__.py +0 -0
  132. {agno-2.1.4 → agno-2.1.6}/agno/db/in_memory/utils.py +0 -0
  133. {agno-2.1.4 → agno-2.1.6}/agno/db/json/__init__.py +0 -0
  134. {agno-2.1.4 → agno-2.1.6}/agno/db/json/utils.py +0 -0
  135. {agno-2.1.4 → agno-2.1.6}/agno/db/migrations/__init__.py +0 -0
  136. {agno-2.1.4 → agno-2.1.6}/agno/db/mongo/__init__.py +0 -0
  137. {agno-2.1.4 → agno-2.1.6}/agno/db/mongo/schemas.py +0 -0
  138. {agno-2.1.4 → agno-2.1.6}/agno/db/mysql/__init__.py +0 -0
  139. {agno-2.1.4 → agno-2.1.6}/agno/db/mysql/schemas.py +0 -0
  140. {agno-2.1.4 → agno-2.1.6}/agno/db/mysql/utils.py +0 -0
  141. {agno-2.1.4 → agno-2.1.6}/agno/db/postgres/__init__.py +0 -0
  142. {agno-2.1.4 → agno-2.1.6}/agno/db/postgres/schemas.py +0 -0
  143. {agno-2.1.4 → agno-2.1.6}/agno/db/postgres/utils.py +0 -0
  144. {agno-2.1.4 → agno-2.1.6}/agno/db/redis/__init__.py +0 -0
  145. {agno-2.1.4 → agno-2.1.6}/agno/db/redis/schemas.py +0 -0
  146. {agno-2.1.4 → agno-2.1.6}/agno/db/redis/utils.py +0 -0
  147. {agno-2.1.4 → agno-2.1.6}/agno/db/schemas/__init__.py +0 -0
  148. {agno-2.1.4 → agno-2.1.6}/agno/db/schemas/evals.py +0 -0
  149. {agno-2.1.4 → agno-2.1.6}/agno/db/schemas/knowledge.py +0 -0
  150. {agno-2.1.4 → agno-2.1.6}/agno/db/schemas/memory.py +0 -0
  151. {agno-2.1.4 → agno-2.1.6}/agno/db/schemas/metrics.py +0 -0
  152. {agno-2.1.4 → agno-2.1.6}/agno/db/singlestore/__init__.py +0 -0
  153. {agno-2.1.4 → agno-2.1.6}/agno/db/singlestore/schemas.py +0 -0
  154. {agno-2.1.4 → agno-2.1.6}/agno/db/singlestore/utils.py +0 -0
  155. {agno-2.1.4 → agno-2.1.6}/agno/db/sqlite/__init__.py +0 -0
  156. {agno-2.1.4 → agno-2.1.6}/agno/db/sqlite/schemas.py +0 -0
  157. {agno-2.1.4 → agno-2.1.6}/agno/db/utils.py +0 -0
  158. {agno-2.1.4 → agno-2.1.6}/agno/debug.py +0 -0
  159. {agno-2.1.4 → agno-2.1.6}/agno/eval/__init__.py +0 -0
  160. {agno-2.1.4 → agno-2.1.6}/agno/guardrails/__init__.py +0 -0
  161. {agno-2.1.4 → agno-2.1.6}/agno/guardrails/base.py +0 -0
  162. {agno-2.1.4 → agno-2.1.6}/agno/guardrails/openai.py +0 -0
  163. {agno-2.1.4 → agno-2.1.6}/agno/guardrails/pii.py +0 -0
  164. {agno-2.1.4 → agno-2.1.6}/agno/guardrails/prompt_injection.py +0 -0
  165. {agno-2.1.4 → agno-2.1.6}/agno/integrations/__init__.py +0 -0
  166. {agno-2.1.4 → agno-2.1.6}/agno/integrations/discord/__init__.py +0 -0
  167. {agno-2.1.4 → agno-2.1.6}/agno/integrations/discord/client.py +0 -0
  168. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/__init__.py +0 -0
  169. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/__init__.py +0 -0
  170. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/agentic.py +0 -0
  171. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/document.py +0 -0
  172. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/fixed.py +0 -0
  173. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/markdown.py +0 -0
  174. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/recursive.py +0 -0
  175. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/row.py +0 -0
  176. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/semantic.py +0 -0
  177. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/chunking/strategy.py +0 -0
  178. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/content.py +0 -0
  179. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/document/__init__.py +0 -0
  180. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/document/base.py +0 -0
  181. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/__init__.py +0 -0
  182. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/aws_bedrock.py +0 -0
  183. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/azure_openai.py +0 -0
  184. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/base.py +0 -0
  185. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/cohere.py +0 -0
  186. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/fastembed.py +0 -0
  187. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/fireworks.py +0 -0
  188. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/google.py +0 -0
  189. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/huggingface.py +0 -0
  190. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/jina.py +0 -0
  191. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/langdb.py +0 -0
  192. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/mistral.py +0 -0
  193. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/nebius.py +0 -0
  194. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/ollama.py +0 -0
  195. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/openai.py +0 -0
  196. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/sentence_transformer.py +0 -0
  197. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/together.py +0 -0
  198. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/embedder/voyageai.py +0 -0
  199. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/__init__.py +0 -0
  200. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/arxiv_reader.py +0 -0
  201. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/base.py +0 -0
  202. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/csv_reader.py +0 -0
  203. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/docx_reader.py +0 -0
  204. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/field_labeled_csv_reader.py +0 -0
  205. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/firecrawl_reader.py +0 -0
  206. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/json_reader.py +0 -0
  207. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/markdown_reader.py +0 -0
  208. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/s3_reader.py +0 -0
  209. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/text_reader.py +0 -0
  210. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/web_search_reader.py +0 -0
  211. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/website_reader.py +0 -0
  212. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/wikipedia_reader.py +0 -0
  213. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reader/youtube_reader.py +0 -0
  214. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/remote_content/__init__.py +0 -0
  215. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/remote_content/remote_content.py +0 -0
  216. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reranker/__init__.py +0 -0
  217. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reranker/base.py +0 -0
  218. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reranker/cohere.py +0 -0
  219. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reranker/infinity.py +0 -0
  220. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/reranker/sentence_transformer.py +0 -0
  221. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/types.py +0 -0
  222. {agno-2.1.4 → agno-2.1.6}/agno/knowledge/utils.py +0 -0
  223. {agno-2.1.4 → agno-2.1.6}/agno/media.py +0 -0
  224. {agno-2.1.4 → agno-2.1.6}/agno/memory/__init__.py +0 -0
  225. {agno-2.1.4 → agno-2.1.6}/agno/models/__init__.py +0 -0
  226. {agno-2.1.4 → agno-2.1.6}/agno/models/aimlapi/__init__.py +0 -0
  227. {agno-2.1.4 → agno-2.1.6}/agno/models/aimlapi/aimlapi.py +0 -0
  228. {agno-2.1.4 → agno-2.1.6}/agno/models/anthropic/__init__.py +0 -0
  229. {agno-2.1.4 → agno-2.1.6}/agno/models/aws/__init__.py +0 -0
  230. {agno-2.1.4 → agno-2.1.6}/agno/models/aws/bedrock.py +0 -0
  231. {agno-2.1.4 → agno-2.1.6}/agno/models/aws/claude.py +0 -0
  232. {agno-2.1.4 → agno-2.1.6}/agno/models/azure/__init__.py +0 -0
  233. {agno-2.1.4 → agno-2.1.6}/agno/models/azure/ai_foundry.py +0 -0
  234. {agno-2.1.4 → agno-2.1.6}/agno/models/azure/openai_chat.py +0 -0
  235. {agno-2.1.4 → agno-2.1.6}/agno/models/base.py +0 -0
  236. {agno-2.1.4 → agno-2.1.6}/agno/models/cerebras/__init__.py +0 -0
  237. {agno-2.1.4 → agno-2.1.6}/agno/models/cerebras/cerebras.py +0 -0
  238. {agno-2.1.4 → agno-2.1.6}/agno/models/cerebras/cerebras_openai.py +0 -0
  239. {agno-2.1.4 → agno-2.1.6}/agno/models/cohere/__init__.py +0 -0
  240. {agno-2.1.4 → agno-2.1.6}/agno/models/cohere/chat.py +0 -0
  241. {agno-2.1.4 → agno-2.1.6}/agno/models/cometapi/__init__.py +0 -0
  242. {agno-2.1.4 → agno-2.1.6}/agno/models/cometapi/cometapi.py +0 -0
  243. {agno-2.1.4 → agno-2.1.6}/agno/models/dashscope/__init__.py +0 -0
  244. {agno-2.1.4 → agno-2.1.6}/agno/models/dashscope/dashscope.py +0 -0
  245. {agno-2.1.4 → agno-2.1.6}/agno/models/deepinfra/__init__.py +0 -0
  246. {agno-2.1.4 → agno-2.1.6}/agno/models/deepinfra/deepinfra.py +0 -0
  247. {agno-2.1.4 → agno-2.1.6}/agno/models/deepseek/__init__.py +0 -0
  248. {agno-2.1.4 → agno-2.1.6}/agno/models/deepseek/deepseek.py +0 -0
  249. {agno-2.1.4 → agno-2.1.6}/agno/models/defaults.py +0 -0
  250. {agno-2.1.4 → agno-2.1.6}/agno/models/fireworks/__init__.py +0 -0
  251. {agno-2.1.4 → agno-2.1.6}/agno/models/fireworks/fireworks.py +0 -0
  252. {agno-2.1.4 → agno-2.1.6}/agno/models/google/__init__.py +0 -0
  253. {agno-2.1.4 → agno-2.1.6}/agno/models/google/gemini.py +0 -0
  254. {agno-2.1.4 → agno-2.1.6}/agno/models/groq/__init__.py +0 -0
  255. {agno-2.1.4 → agno-2.1.6}/agno/models/groq/groq.py +0 -0
  256. {agno-2.1.4 → agno-2.1.6}/agno/models/huggingface/__init__.py +0 -0
  257. {agno-2.1.4 → agno-2.1.6}/agno/models/huggingface/huggingface.py +0 -0
  258. {agno-2.1.4 → agno-2.1.6}/agno/models/ibm/__init__.py +0 -0
  259. {agno-2.1.4 → agno-2.1.6}/agno/models/ibm/watsonx.py +0 -0
  260. {agno-2.1.4 → agno-2.1.6}/agno/models/internlm/__init__.py +0 -0
  261. {agno-2.1.4 → agno-2.1.6}/agno/models/internlm/internlm.py +0 -0
  262. {agno-2.1.4 → agno-2.1.6}/agno/models/langdb/__init__.py +0 -0
  263. {agno-2.1.4 → agno-2.1.6}/agno/models/langdb/langdb.py +0 -0
  264. {agno-2.1.4 → agno-2.1.6}/agno/models/litellm/__init__.py +0 -0
  265. {agno-2.1.4 → agno-2.1.6}/agno/models/litellm/chat.py +0 -0
  266. {agno-2.1.4 → agno-2.1.6}/agno/models/litellm/litellm_openai.py +0 -0
  267. {agno-2.1.4 → agno-2.1.6}/agno/models/llama_cpp/__init__.py +0 -0
  268. {agno-2.1.4 → agno-2.1.6}/agno/models/llama_cpp/llama_cpp.py +0 -0
  269. {agno-2.1.4 → agno-2.1.6}/agno/models/lmstudio/__init__.py +0 -0
  270. {agno-2.1.4 → agno-2.1.6}/agno/models/lmstudio/lmstudio.py +0 -0
  271. {agno-2.1.4 → agno-2.1.6}/agno/models/message.py +0 -0
  272. {agno-2.1.4 → agno-2.1.6}/agno/models/meta/__init__.py +0 -0
  273. {agno-2.1.4 → agno-2.1.6}/agno/models/meta/llama.py +0 -0
  274. {agno-2.1.4 → agno-2.1.6}/agno/models/meta/llama_openai.py +0 -0
  275. {agno-2.1.4 → agno-2.1.6}/agno/models/metrics.py +0 -0
  276. {agno-2.1.4 → agno-2.1.6}/agno/models/mistral/__init__.py +0 -0
  277. {agno-2.1.4 → agno-2.1.6}/agno/models/mistral/mistral.py +0 -0
  278. {agno-2.1.4 → agno-2.1.6}/agno/models/nebius/__init__.py +0 -0
  279. {agno-2.1.4 → agno-2.1.6}/agno/models/nebius/nebius.py +0 -0
  280. {agno-2.1.4 → agno-2.1.6}/agno/models/nexus/__init__.py +0 -0
  281. {agno-2.1.4 → agno-2.1.6}/agno/models/nexus/nexus.py +0 -0
  282. {agno-2.1.4 → agno-2.1.6}/agno/models/nvidia/__init__.py +0 -0
  283. {agno-2.1.4 → agno-2.1.6}/agno/models/nvidia/nvidia.py +0 -0
  284. {agno-2.1.4 → agno-2.1.6}/agno/models/ollama/__init__.py +0 -0
  285. {agno-2.1.4 → agno-2.1.6}/agno/models/ollama/chat.py +0 -0
  286. {agno-2.1.4 → agno-2.1.6}/agno/models/openai/__init__.py +0 -0
  287. {agno-2.1.4 → agno-2.1.6}/agno/models/openai/chat.py +0 -0
  288. {agno-2.1.4 → agno-2.1.6}/agno/models/openai/like.py +0 -0
  289. {agno-2.1.4 → agno-2.1.6}/agno/models/openai/responses.py +0 -0
  290. {agno-2.1.4 → agno-2.1.6}/agno/models/openrouter/__init__.py +0 -0
  291. {agno-2.1.4 → agno-2.1.6}/agno/models/openrouter/openrouter.py +0 -0
  292. {agno-2.1.4 → agno-2.1.6}/agno/models/perplexity/__init__.py +0 -0
  293. {agno-2.1.4 → agno-2.1.6}/agno/models/perplexity/perplexity.py +0 -0
  294. {agno-2.1.4 → agno-2.1.6}/agno/models/portkey/__init__.py +0 -0
  295. {agno-2.1.4 → agno-2.1.6}/agno/models/portkey/portkey.py +0 -0
  296. {agno-2.1.4 → agno-2.1.6}/agno/models/requesty/__init__.py +0 -0
  297. {agno-2.1.4 → agno-2.1.6}/agno/models/requesty/requesty.py +0 -0
  298. {agno-2.1.4 → agno-2.1.6}/agno/models/response.py +0 -0
  299. {agno-2.1.4 → agno-2.1.6}/agno/models/sambanova/__init__.py +0 -0
  300. {agno-2.1.4 → agno-2.1.6}/agno/models/sambanova/sambanova.py +0 -0
  301. {agno-2.1.4 → agno-2.1.6}/agno/models/siliconflow/__init__.py +0 -0
  302. {agno-2.1.4 → agno-2.1.6}/agno/models/siliconflow/siliconflow.py +0 -0
  303. {agno-2.1.4 → agno-2.1.6}/agno/models/together/__init__.py +0 -0
  304. {agno-2.1.4 → agno-2.1.6}/agno/models/together/together.py +0 -0
  305. {agno-2.1.4 → agno-2.1.6}/agno/models/utils.py +0 -0
  306. {agno-2.1.4 → agno-2.1.6}/agno/models/vercel/__init__.py +0 -0
  307. {agno-2.1.4 → agno-2.1.6}/agno/models/vercel/v0.py +0 -0
  308. {agno-2.1.4 → agno-2.1.6}/agno/models/vertexai/__init__.py +0 -0
  309. {agno-2.1.4 → agno-2.1.6}/agno/models/vertexai/claude.py +0 -0
  310. {agno-2.1.4 → agno-2.1.6}/agno/models/vllm/__init__.py +0 -0
  311. {agno-2.1.4 → agno-2.1.6}/agno/models/vllm/vllm.py +0 -0
  312. {agno-2.1.4 → agno-2.1.6}/agno/models/xai/__init__.py +0 -0
  313. {agno-2.1.4 → agno-2.1.6}/agno/models/xai/xai.py +0 -0
  314. {agno-2.1.4 → agno-2.1.6}/agno/os/__init__.py +0 -0
  315. {agno-2.1.4 → agno-2.1.6}/agno/os/auth.py +0 -0
  316. {agno-2.1.4 → agno-2.1.6}/agno/os/config.py +0 -0
  317. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/__init__.py +0 -0
  318. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/a2a/__init__.py +0 -0
  319. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/a2a/a2a.py +0 -0
  320. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/a2a/utils.py +0 -0
  321. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/agui/__init__.py +0 -0
  322. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/agui/agui.py +0 -0
  323. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/base.py +0 -0
  324. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/slack/__init__.py +0 -0
  325. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/slack/security.py +0 -0
  326. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/slack/slack.py +0 -0
  327. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/whatsapp/__init__.py +0 -0
  328. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/whatsapp/router.py +0 -0
  329. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/whatsapp/security.py +0 -0
  330. {agno-2.1.4 → agno-2.1.6}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
  331. {agno-2.1.4 → agno-2.1.6}/agno/os/middleware/__init__.py +0 -0
  332. {agno-2.1.4 → agno-2.1.6}/agno/os/middleware/jwt.py +0 -0
  333. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/__init__.py +0 -0
  334. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/evals/__init__.py +0 -0
  335. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/evals/schemas.py +0 -0
  336. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/health.py +0 -0
  337. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/home.py +0 -0
  338. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/knowledge/__init__.py +0 -0
  339. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/memory/__init__.py +0 -0
  340. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/memory/schemas.py +0 -0
  341. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/metrics/__init__.py +0 -0
  342. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/metrics/schemas.py +0 -0
  343. {agno-2.1.4 → agno-2.1.6}/agno/os/routers/session/__init__.py +0 -0
  344. {agno-2.1.4 → agno-2.1.6}/agno/os/settings.py +0 -0
  345. {agno-2.1.4 → agno-2.1.6}/agno/py.typed +0 -0
  346. {agno-2.1.4 → agno-2.1.6}/agno/reasoning/__init__.py +0 -0
  347. {agno-2.1.4 → agno-2.1.6}/agno/reasoning/azure_ai_foundry.py +0 -0
  348. {agno-2.1.4 → agno-2.1.6}/agno/reasoning/deepseek.py +0 -0
  349. {agno-2.1.4 → agno-2.1.6}/agno/reasoning/default.py +0 -0
  350. {agno-2.1.4 → agno-2.1.6}/agno/reasoning/groq.py +0 -0
  351. {agno-2.1.4 → agno-2.1.6}/agno/reasoning/helpers.py +0 -0
  352. {agno-2.1.4 → agno-2.1.6}/agno/reasoning/ollama.py +0 -0
  353. {agno-2.1.4 → agno-2.1.6}/agno/reasoning/step.py +0 -0
  354. {agno-2.1.4 → agno-2.1.6}/agno/run/__init__.py +0 -0
  355. {agno-2.1.4 → agno-2.1.6}/agno/run/agent.py +0 -0
  356. {agno-2.1.4 → agno-2.1.6}/agno/run/base.py +0 -0
  357. {agno-2.1.4 → agno-2.1.6}/agno/run/cancel.py +0 -0
  358. {agno-2.1.4 → agno-2.1.6}/agno/run/messages.py +0 -0
  359. {agno-2.1.4 → agno-2.1.6}/agno/run/team.py +0 -0
  360. {agno-2.1.4 → agno-2.1.6}/agno/run/workflow.py +0 -0
  361. {agno-2.1.4 → agno-2.1.6}/agno/session/__init__.py +0 -0
  362. {agno-2.1.4 → agno-2.1.6}/agno/session/agent.py +0 -0
  363. {agno-2.1.4 → agno-2.1.6}/agno/session/summary.py +0 -0
  364. {agno-2.1.4 → agno-2.1.6}/agno/session/team.py +0 -0
  365. {agno-2.1.4 → agno-2.1.6}/agno/team/__init__.py +0 -0
  366. {agno-2.1.4 → agno-2.1.6}/agno/tools/__init__.py +0 -0
  367. {agno-2.1.4 → agno-2.1.6}/agno/tools/agentql.py +0 -0
  368. {agno-2.1.4 → agno-2.1.6}/agno/tools/airflow.py +0 -0
  369. {agno-2.1.4 → agno-2.1.6}/agno/tools/api.py +0 -0
  370. {agno-2.1.4 → agno-2.1.6}/agno/tools/apify.py +0 -0
  371. {agno-2.1.4 → agno-2.1.6}/agno/tools/arxiv.py +0 -0
  372. {agno-2.1.4 → agno-2.1.6}/agno/tools/aws_lambda.py +0 -0
  373. {agno-2.1.4 → agno-2.1.6}/agno/tools/aws_ses.py +0 -0
  374. {agno-2.1.4 → agno-2.1.6}/agno/tools/baidusearch.py +0 -0
  375. {agno-2.1.4 → agno-2.1.6}/agno/tools/bitbucket.py +0 -0
  376. {agno-2.1.4 → agno-2.1.6}/agno/tools/brandfetch.py +0 -0
  377. {agno-2.1.4 → agno-2.1.6}/agno/tools/bravesearch.py +0 -0
  378. {agno-2.1.4 → agno-2.1.6}/agno/tools/brightdata.py +0 -0
  379. {agno-2.1.4 → agno-2.1.6}/agno/tools/browserbase.py +0 -0
  380. {agno-2.1.4 → agno-2.1.6}/agno/tools/calcom.py +0 -0
  381. {agno-2.1.4 → agno-2.1.6}/agno/tools/calculator.py +0 -0
  382. {agno-2.1.4 → agno-2.1.6}/agno/tools/cartesia.py +0 -0
  383. {agno-2.1.4 → agno-2.1.6}/agno/tools/clickup.py +0 -0
  384. {agno-2.1.4 → agno-2.1.6}/agno/tools/confluence.py +0 -0
  385. {agno-2.1.4 → agno-2.1.6}/agno/tools/crawl4ai.py +0 -0
  386. {agno-2.1.4 → agno-2.1.6}/agno/tools/csv_toolkit.py +0 -0
  387. {agno-2.1.4 → agno-2.1.6}/agno/tools/dalle.py +0 -0
  388. {agno-2.1.4 → agno-2.1.6}/agno/tools/daytona.py +0 -0
  389. {agno-2.1.4 → agno-2.1.6}/agno/tools/decorator.py +0 -0
  390. {agno-2.1.4 → agno-2.1.6}/agno/tools/desi_vocal.py +0 -0
  391. {agno-2.1.4 → agno-2.1.6}/agno/tools/discord.py +0 -0
  392. {agno-2.1.4 → agno-2.1.6}/agno/tools/docker.py +0 -0
  393. {agno-2.1.4 → agno-2.1.6}/agno/tools/duckdb.py +0 -0
  394. {agno-2.1.4 → agno-2.1.6}/agno/tools/duckduckgo.py +0 -0
  395. {agno-2.1.4 → agno-2.1.6}/agno/tools/e2b.py +0 -0
  396. {agno-2.1.4 → agno-2.1.6}/agno/tools/eleven_labs.py +0 -0
  397. {agno-2.1.4 → agno-2.1.6}/agno/tools/email.py +0 -0
  398. {agno-2.1.4 → agno-2.1.6}/agno/tools/evm.py +0 -0
  399. {agno-2.1.4 → agno-2.1.6}/agno/tools/exa.py +0 -0
  400. {agno-2.1.4 → agno-2.1.6}/agno/tools/fal.py +0 -0
  401. {agno-2.1.4 → agno-2.1.6}/agno/tools/file.py +0 -0
  402. {agno-2.1.4 → agno-2.1.6}/agno/tools/file_generation.py +0 -0
  403. {agno-2.1.4 → agno-2.1.6}/agno/tools/financial_datasets.py +0 -0
  404. {agno-2.1.4 → agno-2.1.6}/agno/tools/firecrawl.py +0 -0
  405. {agno-2.1.4 → agno-2.1.6}/agno/tools/function.py +0 -0
  406. {agno-2.1.4 → agno-2.1.6}/agno/tools/giphy.py +0 -0
  407. {agno-2.1.4 → agno-2.1.6}/agno/tools/github.py +0 -0
  408. {agno-2.1.4 → agno-2.1.6}/agno/tools/gmail.py +0 -0
  409. {agno-2.1.4 → agno-2.1.6}/agno/tools/google_bigquery.py +0 -0
  410. {agno-2.1.4 → agno-2.1.6}/agno/tools/google_drive.py +0 -0
  411. {agno-2.1.4 → agno-2.1.6}/agno/tools/google_maps.py +0 -0
  412. {agno-2.1.4 → agno-2.1.6}/agno/tools/googlecalendar.py +0 -0
  413. {agno-2.1.4 → agno-2.1.6}/agno/tools/googlesearch.py +0 -0
  414. {agno-2.1.4 → agno-2.1.6}/agno/tools/hackernews.py +0 -0
  415. {agno-2.1.4 → agno-2.1.6}/agno/tools/jina.py +0 -0
  416. {agno-2.1.4 → agno-2.1.6}/agno/tools/jira.py +0 -0
  417. {agno-2.1.4 → agno-2.1.6}/agno/tools/knowledge.py +0 -0
  418. {agno-2.1.4 → agno-2.1.6}/agno/tools/linear.py +0 -0
  419. {agno-2.1.4 → agno-2.1.6}/agno/tools/linkup.py +0 -0
  420. {agno-2.1.4 → agno-2.1.6}/agno/tools/local_file_system.py +0 -0
  421. {agno-2.1.4 → agno-2.1.6}/agno/tools/lumalab.py +0 -0
  422. {agno-2.1.4 → agno-2.1.6}/agno/tools/mcp.py +0 -0
  423. {agno-2.1.4 → agno-2.1.6}/agno/tools/mem0.py +0 -0
  424. {agno-2.1.4 → agno-2.1.6}/agno/tools/memori.py +0 -0
  425. {agno-2.1.4 → agno-2.1.6}/agno/tools/memory.py +0 -0
  426. {agno-2.1.4 → agno-2.1.6}/agno/tools/mlx_transcribe.py +0 -0
  427. {agno-2.1.4 → agno-2.1.6}/agno/tools/models/__init__.py +0 -0
  428. {agno-2.1.4 → agno-2.1.6}/agno/tools/models/azure_openai.py +0 -0
  429. {agno-2.1.4 → agno-2.1.6}/agno/tools/models/gemini.py +0 -0
  430. {agno-2.1.4 → agno-2.1.6}/agno/tools/models/groq.py +0 -0
  431. {agno-2.1.4 → agno-2.1.6}/agno/tools/models/morph.py +0 -0
  432. {agno-2.1.4 → agno-2.1.6}/agno/tools/models/nebius.py +0 -0
  433. {agno-2.1.4 → agno-2.1.6}/agno/tools/models_labs.py +0 -0
  434. {agno-2.1.4 → agno-2.1.6}/agno/tools/moviepy_video.py +0 -0
  435. {agno-2.1.4 → agno-2.1.6}/agno/tools/neo4j.py +0 -0
  436. {agno-2.1.4 → agno-2.1.6}/agno/tools/newspaper.py +0 -0
  437. {agno-2.1.4 → agno-2.1.6}/agno/tools/newspaper4k.py +0 -0
  438. {agno-2.1.4 → agno-2.1.6}/agno/tools/openai.py +0 -0
  439. {agno-2.1.4 → agno-2.1.6}/agno/tools/openbb.py +0 -0
  440. {agno-2.1.4 → agno-2.1.6}/agno/tools/opencv.py +0 -0
  441. {agno-2.1.4 → agno-2.1.6}/agno/tools/openweather.py +0 -0
  442. {agno-2.1.4 → agno-2.1.6}/agno/tools/oxylabs.py +0 -0
  443. {agno-2.1.4 → agno-2.1.6}/agno/tools/pandas.py +0 -0
  444. {agno-2.1.4 → agno-2.1.6}/agno/tools/postgres.py +0 -0
  445. {agno-2.1.4 → agno-2.1.6}/agno/tools/pubmed.py +0 -0
  446. {agno-2.1.4 → agno-2.1.6}/agno/tools/python.py +0 -0
  447. {agno-2.1.4 → agno-2.1.6}/agno/tools/reasoning.py +0 -0
  448. {agno-2.1.4 → agno-2.1.6}/agno/tools/reddit.py +0 -0
  449. {agno-2.1.4 → agno-2.1.6}/agno/tools/replicate.py +0 -0
  450. {agno-2.1.4 → agno-2.1.6}/agno/tools/resend.py +0 -0
  451. {agno-2.1.4 → agno-2.1.6}/agno/tools/searxng.py +0 -0
  452. {agno-2.1.4 → agno-2.1.6}/agno/tools/serpapi.py +0 -0
  453. {agno-2.1.4 → agno-2.1.6}/agno/tools/serper.py +0 -0
  454. {agno-2.1.4 → agno-2.1.6}/agno/tools/shell.py +0 -0
  455. {agno-2.1.4 → agno-2.1.6}/agno/tools/slack.py +0 -0
  456. {agno-2.1.4 → agno-2.1.6}/agno/tools/sleep.py +0 -0
  457. {agno-2.1.4 → agno-2.1.6}/agno/tools/spider.py +0 -0
  458. {agno-2.1.4 → agno-2.1.6}/agno/tools/sql.py +0 -0
  459. {agno-2.1.4 → agno-2.1.6}/agno/tools/streamlit/__init__.py +0 -0
  460. {agno-2.1.4 → agno-2.1.6}/agno/tools/streamlit/components.py +0 -0
  461. {agno-2.1.4 → agno-2.1.6}/agno/tools/tavily.py +0 -0
  462. {agno-2.1.4 → agno-2.1.6}/agno/tools/telegram.py +0 -0
  463. {agno-2.1.4 → agno-2.1.6}/agno/tools/todoist.py +0 -0
  464. {agno-2.1.4 → agno-2.1.6}/agno/tools/tool_registry.py +0 -0
  465. {agno-2.1.4 → agno-2.1.6}/agno/tools/toolkit.py +0 -0
  466. {agno-2.1.4 → agno-2.1.6}/agno/tools/trafilatura.py +0 -0
  467. {agno-2.1.4 → agno-2.1.6}/agno/tools/trello.py +0 -0
  468. {agno-2.1.4 → agno-2.1.6}/agno/tools/twilio.py +0 -0
  469. {agno-2.1.4 → agno-2.1.6}/agno/tools/user_control_flow.py +0 -0
  470. {agno-2.1.4 → agno-2.1.6}/agno/tools/valyu.py +0 -0
  471. {agno-2.1.4 → agno-2.1.6}/agno/tools/visualization.py +0 -0
  472. {agno-2.1.4 → agno-2.1.6}/agno/tools/webbrowser.py +0 -0
  473. {agno-2.1.4 → agno-2.1.6}/agno/tools/webex.py +0 -0
  474. {agno-2.1.4 → agno-2.1.6}/agno/tools/website.py +0 -0
  475. {agno-2.1.4 → agno-2.1.6}/agno/tools/webtools.py +0 -0
  476. {agno-2.1.4 → agno-2.1.6}/agno/tools/whatsapp.py +0 -0
  477. {agno-2.1.4 → agno-2.1.6}/agno/tools/wikipedia.py +0 -0
  478. {agno-2.1.4 → agno-2.1.6}/agno/tools/workflow.py +0 -0
  479. {agno-2.1.4 → agno-2.1.6}/agno/tools/x.py +0 -0
  480. {agno-2.1.4 → agno-2.1.6}/agno/tools/yfinance.py +0 -0
  481. {agno-2.1.4 → agno-2.1.6}/agno/tools/youtube.py +0 -0
  482. {agno-2.1.4 → agno-2.1.6}/agno/tools/zendesk.py +0 -0
  483. {agno-2.1.4 → agno-2.1.6}/agno/tools/zep.py +0 -0
  484. {agno-2.1.4 → agno-2.1.6}/agno/tools/zoom.py +0 -0
  485. {agno-2.1.4 → agno-2.1.6}/agno/utils/__init__.py +0 -0
  486. {agno-2.1.4 → agno-2.1.6}/agno/utils/audio.py +0 -0
  487. {agno-2.1.4 → agno-2.1.6}/agno/utils/certs.py +0 -0
  488. {agno-2.1.4 → agno-2.1.6}/agno/utils/code_execution.py +0 -0
  489. {agno-2.1.4 → agno-2.1.6}/agno/utils/common.py +0 -0
  490. {agno-2.1.4 → agno-2.1.6}/agno/utils/dttm.py +0 -0
  491. {agno-2.1.4 → agno-2.1.6}/agno/utils/enum.py +0 -0
  492. {agno-2.1.4 → agno-2.1.6}/agno/utils/env.py +0 -0
  493. {agno-2.1.4 → agno-2.1.6}/agno/utils/events.py +0 -0
  494. {agno-2.1.4 → agno-2.1.6}/agno/utils/format_str.py +0 -0
  495. {agno-2.1.4 → agno-2.1.6}/agno/utils/functions.py +0 -0
  496. {agno-2.1.4 → agno-2.1.6}/agno/utils/gemini.py +0 -0
  497. {agno-2.1.4 → agno-2.1.6}/agno/utils/hooks.py +0 -0
  498. {agno-2.1.4 → agno-2.1.6}/agno/utils/http.py +0 -0
  499. {agno-2.1.4 → agno-2.1.6}/agno/utils/json_schema.py +0 -0
  500. {agno-2.1.4 → agno-2.1.6}/agno/utils/knowledge.py +0 -0
  501. {agno-2.1.4 → agno-2.1.6}/agno/utils/location.py +0 -0
  502. {agno-2.1.4 → agno-2.1.6}/agno/utils/log.py +0 -0
  503. {agno-2.1.4 → agno-2.1.6}/agno/utils/mcp.py +0 -0
  504. {agno-2.1.4 → agno-2.1.6}/agno/utils/media.py +0 -0
  505. {agno-2.1.4 → agno-2.1.6}/agno/utils/merge_dict.py +0 -0
  506. {agno-2.1.4 → agno-2.1.6}/agno/utils/message.py +0 -0
  507. {agno-2.1.4 → agno-2.1.6}/agno/utils/models/__init__.py +0 -0
  508. {agno-2.1.4 → agno-2.1.6}/agno/utils/models/ai_foundry.py +0 -0
  509. {agno-2.1.4 → agno-2.1.6}/agno/utils/models/cohere.py +0 -0
  510. {agno-2.1.4 → agno-2.1.6}/agno/utils/models/llama.py +0 -0
  511. {agno-2.1.4 → agno-2.1.6}/agno/utils/models/mistral.py +0 -0
  512. {agno-2.1.4 → agno-2.1.6}/agno/utils/models/openai_responses.py +0 -0
  513. {agno-2.1.4 → agno-2.1.6}/agno/utils/models/schema_utils.py +0 -0
  514. {agno-2.1.4 → agno-2.1.6}/agno/utils/models/watsonx.py +0 -0
  515. {agno-2.1.4 → agno-2.1.6}/agno/utils/openai.py +0 -0
  516. {agno-2.1.4 → agno-2.1.6}/agno/utils/pickle.py +0 -0
  517. {agno-2.1.4 → agno-2.1.6}/agno/utils/pprint.py +0 -0
  518. {agno-2.1.4 → agno-2.1.6}/agno/utils/print_response/__init__.py +0 -0
  519. {agno-2.1.4 → agno-2.1.6}/agno/utils/print_response/agent.py +0 -0
  520. {agno-2.1.4 → agno-2.1.6}/agno/utils/print_response/team.py +0 -0
  521. {agno-2.1.4 → agno-2.1.6}/agno/utils/print_response/workflow.py +0 -0
  522. {agno-2.1.4 → agno-2.1.6}/agno/utils/prompts.py +0 -0
  523. {agno-2.1.4 → agno-2.1.6}/agno/utils/reasoning.py +0 -0
  524. {agno-2.1.4 → agno-2.1.6}/agno/utils/response.py +0 -0
  525. {agno-2.1.4 → agno-2.1.6}/agno/utils/response_iterator.py +0 -0
  526. {agno-2.1.4 → agno-2.1.6}/agno/utils/safe_formatter.py +0 -0
  527. {agno-2.1.4 → agno-2.1.6}/agno/utils/serialize.py +0 -0
  528. {agno-2.1.4 → agno-2.1.6}/agno/utils/shell.py +0 -0
  529. {agno-2.1.4 → agno-2.1.6}/agno/utils/string.py +0 -0
  530. {agno-2.1.4 → agno-2.1.6}/agno/utils/team.py +0 -0
  531. {agno-2.1.4 → agno-2.1.6}/agno/utils/timer.py +0 -0
  532. {agno-2.1.4 → agno-2.1.6}/agno/utils/tools.py +0 -0
  533. {agno-2.1.4 → agno-2.1.6}/agno/utils/web.py +0 -0
  534. {agno-2.1.4 → agno-2.1.6}/agno/utils/whatsapp.py +0 -0
  535. {agno-2.1.4 → agno-2.1.6}/agno/utils/yaml_io.py +0 -0
  536. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/__init__.py +0 -0
  537. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/cassandra/__init__.py +0 -0
  538. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
  539. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/cassandra/index.py +0 -0
  540. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/chroma/__init__.py +0 -0
  541. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/clickhouse/__init__.py +0 -0
  542. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/clickhouse/index.py +0 -0
  543. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/couchbase/__init__.py +0 -0
  544. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/distance.py +0 -0
  545. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/lancedb/__init__.py +0 -0
  546. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/langchaindb/__init__.py +0 -0
  547. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/lightrag/__init__.py +0 -0
  548. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/llamaindex/__init__.py +0 -0
  549. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/milvus/__init__.py +0 -0
  550. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/mongodb/__init__.py +0 -0
  551. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/pgvector/__init__.py +0 -0
  552. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/pgvector/index.py +0 -0
  553. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/pineconedb/__init__.py +0 -0
  554. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/qdrant/__init__.py +0 -0
  555. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/search.py +0 -0
  556. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/singlestore/__init__.py +0 -0
  557. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/singlestore/index.py +0 -0
  558. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/surrealdb/__init__.py +0 -0
  559. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/upstashdb/__init__.py +0 -0
  560. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/weaviate/__init__.py +0 -0
  561. {agno-2.1.4 → agno-2.1.6}/agno/vectordb/weaviate/index.py +0 -0
  562. {agno-2.1.4 → agno-2.1.6}/agno/workflow/__init__.py +0 -0
  563. {agno-2.1.4 → agno-2.1.6}/agno.egg-info/dependency_links.txt +0 -0
  564. {agno-2.1.4 → agno-2.1.6}/agno.egg-info/top_level.txt +0 -0
  565. {agno-2.1.4 → agno-2.1.6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.1.4
3
+ Version: 2.1.6
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
@@ -191,6 +191,8 @@ Provides-Extra: sql
191
191
  Requires-Dist: sqlalchemy; extra == "sql"
192
192
  Provides-Extra: postgres
193
193
  Requires-Dist: psycopg-binary; extra == "postgres"
194
+ Provides-Extra: async-postgres
195
+ Requires-Dist: asyncpg; extra == "async-postgres"
194
196
  Provides-Extra: sqlite
195
197
  Requires-Dist: sqlalchemy; extra == "sqlite"
196
198
  Provides-Extra: gcs
@@ -320,6 +322,7 @@ Requires-Dist: agno[neo4j]; extra == "tools"
320
322
  Provides-Extra: storage
321
323
  Requires-Dist: agno[sql]; extra == "storage"
322
324
  Requires-Dist: agno[postgres]; extra == "storage"
325
+ Requires-Dist: agno[async_postgres]; extra == "storage"
323
326
  Requires-Dist: agno[sqlite]; extra == "storage"
324
327
  Requires-Dist: agno[gcs]; extra == "storage"
325
328
  Requires-Dist: agno[firestore]; extra == "storage"
@@ -364,7 +367,7 @@ Requires-Dist: build; extra == "tests"
364
367
  Dynamic: license-file
365
368
 
366
369
  <div align="center" id="top">
367
- <a href="https://docs.agno.com">
370
+ <a href="https://agno.com">
368
371
  <picture>
369
372
  <source media="(prefers-color-scheme: dark)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-dark.svg">
370
373
  <source media="(prefers-color-scheme: light)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg">
@@ -372,43 +375,78 @@ Dynamic: license-file
372
375
  </picture>
373
376
  </a>
374
377
  </div>
378
+
375
379
  <div align="center">
376
- <a href="https://docs.agno.com">📚 Documentation</a> &nbsp;|&nbsp;
377
- <a href="https://docs.agno.com/examples/introduction">💡 Examples</a> &nbsp;|&nbsp;
378
- <a href="https://www.agno.com/?utm_source=github&utm_medium=readme&utm_campaign=agno-github&utm_content=header">🏠 Website</a> &nbsp;|&nbsp;
379
- <a href="https://github.com/agno-agi/agno/stargazers">🌟 Star Us</a>
380
+ <a href="https://docs.agno.com">Documentation</a>
381
+ <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
382
+ <a href="https://docs.agno.com/examples/introduction">Examples</a>
383
+ <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
384
+ <a href="https://www.agno.com/?utm_source=github&utm_medium=readme&utm_campaign=agno-github">Website</a>
385
+ <br />
380
386
  </div>
381
387
 
382
388
  ## What is Agno?
383
389
 
384
- [Agno](https://docs.agno.com) is a high-performance SDK and runtime for multi-agent systems. Use it to build, run and manage multi-agent systems in your cloud.
390
+ Agno is the multi-agent framework, runtime and UI built for speed.
385
391
 
386
- Agno is the fastest framework for building agents with built-in memory, knowledge, session management, human in the loop and best-in-class MCP support. You can put agents together as multi-agent teams or step-based agentic workflows.
392
+ Use it to build multi-agent systems with memory, knowledge, human in the loop and MCP support. You can orchestrate agents as multi-agent teams (more autonomy) or step-based agentic workflows (more control).
387
393
 
388
- In 10 lines of code, we can build an Agent that uses tools to achieve a task.
394
+ Here’s an example of an Agent that connects to an MCP server, manages conversation state in a database, and is served using a FastAPI application that you can interact with using the [AgentOS UI](https://os.agno.com).
389
395
 
390
- ```python hackernews_agent.py
396
+ ```python agno_agent.py
391
397
  from agno.agent import Agent
398
+ from agno.db.sqlite import SqliteDb
392
399
  from agno.models.anthropic import Claude
393
- from agno.tools.hackernews import HackerNewsTools
400
+ from agno.os import AgentOS
401
+ from agno.tools.mcp import MCPTools
394
402
 
395
- agent = Agent(
403
+ # ************* Create Agent *************
404
+ agno_agent = Agent(
405
+ name="Agno Agent",
396
406
  model=Claude(id="claude-sonnet-4-5"),
397
- tools=[HackerNewsTools()],
407
+ # Add a database to the Agent
408
+ db=SqliteDb(db_file="agno.db"),
409
+ # Add the Agno MCP server to the Agent
410
+ tools=[MCPTools(transport="streamable-http", url="https://docs.agno.com/mcp")],
411
+ # Add the previous session history to the context
412
+ add_history_to_context=True,
398
413
  markdown=True,
399
414
  )
400
- agent.print_response("Write a report on trending startups and products.", stream=True)
415
+
416
+
417
+ # ************* Create AgentOS *************
418
+ agent_os = AgentOS(agents=[agno_agent])
419
+ # Get the FastAPI app for the AgentOS
420
+ app = agent_os.get_app()
421
+
422
+ # ************* Run AgentOS *************
423
+ if __name__ == "__main__":
424
+ agent_os.serve(app="agno_agent:app", reload=True)
401
425
  ```
402
426
 
403
- But the real advantage of Agno is its [AgentOS](https://docs.agno.com/agent-os/introduction) runtime:
427
+ ## What is the AgentOS?
428
+
429
+ AgentOS is a high-performance runtime for multi-agent systems. Key features include:
430
+
431
+ 1. **Pre-built FastAPI runtime**: AgentOS ships with a ready-to-use FastAPI app for running your agents, teams, and workflows. This gives you a major head start in building your AI product.
432
+
433
+ 2. **Integrated UI**: The [AgentOS UI](https://os.agno.com) connects directly to your runtime, letting you test, monitor, and manage your system in real time. This gives you unmatched visibility and control over your system.
434
+
435
+ 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.
436
+
437
+ Here's what the [AgentOS UI](https://os.agno.com) looks like:
438
+
439
+ https://github.com/user-attachments/assets/feb23db8-15cc-4e88-be7c-01a21a03ebf6
440
+
441
+ ## The Complete Agentic Solution
404
442
 
405
- 1. You get a pre-built FastAPI app for serving your agents, teams and workflows, meaning you start building your AI product on day one. This is a remarkable advantage over other solutions.
406
- 2. You also get a UI that connects directly to the pre-built FastAPI app. Use it to test, monitor and manage your system. This gives you unmatched visibility and control.
407
- 3. Your AgentOS runs in your cloud and you get complete privacy because no data ever leaves your system. This is incredible for security conscious enterprises that can't send data to external services.
443
+ For companies building agents, Agno provides the complete solution:
408
444
 
409
- For organizations building agents, Agno provides the complete solution. You get the fastest framework for building agents (speed of development and execution), a pre-built FastAPI app that get you building product on day one, and a control plane for managing your system.
445
+ - The fastest framework for building agents, multi-agent teams and agentic workflows.
446
+ - A ready-to-use FastAPI app that gets you building AI products on day one.
447
+ - A control plane for testing, monitoring and managing your system.
410
448
 
411
- We bring a novel architecture that no other framework provides, your AgentOS runs securely in your cloud, and the control plane connects directly to it from your browser. You don't need to send data to any external services or pay retention costs, you get complete privacy and control.
449
+ 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.
412
450
 
413
451
  ## Getting started
414
452
 
@@ -425,9 +463,7 @@ After that, checkout the [examples gallery](https://docs.agno.com/examples/intro
425
463
 
426
464
  ## Setup Your Coding Agent to Use Agno
427
465
 
428
- For LLMs and AI assistants to understand and navigate Agno's documentation, we provide an [llms.txt](https://docs.agno.com/llms.txt) or [llms-full.txt](https://docs.agno.com/llms-full.txt) file.
429
-
430
- This file is built for AI systems to efficiently parse and reference our documentation.
466
+ For LLMs and AI assistants to understand and navigate Agno's documentation, we provide an [llms.txt](https://docs.agno.com/llms.txt) or [llms-full.txt](https://docs.agno.com/llms-full.txt) file. This file is built for AI systems to efficiently parse and reference our documentation.
431
467
 
432
468
  ### IDE Integration
433
469
 
@@ -442,42 +478,52 @@ Now, Cursor will have access to the Agno documentation. You can do the same with
442
478
 
443
479
  ## Performance
444
480
 
445
- At Agno, we're obsessed with performance. Why? because even simple AI workflows can spawn thousands of Agents. Scale that to a modest number of users and performance becomes a bottleneck. Agno is designed for building highly performant agentic systems:
481
+ 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.
482
+
483
+ At Agno, we optimize performance across 3 dimensions:
484
+
485
+ 1. **Agent performance:** We optimize static operations (instantiation, memory footprint) and runtime operations (tool calls, memory updates, history management).
486
+ 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.
487
+ 3. **Agent reliability and accuracy:** Monitored through evals, which we’ll explore later.
488
+
489
+ ### Agent Performance
490
+
491
+ 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):
446
492
 
447
- - Agent instantiation: ~3μs on average
448
- - Memory footprint: ~6.5Kib on average
493
+ - **Agent instantiation:** ~3μs on average
494
+ - **Memory footprint:** ~6.6Kib on average
449
495
 
450
- > Tested on an Apple M4 MacBook Pro.
496
+ 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**.
451
497
 
452
- While an Agent's run-time is bottlenecked by inference, we must do everything possible to minimize execution time, reduce memory usage, and parallelize tool calls. These numbers may seem trivial at first, but our experience shows that they add up even at a reasonably small scale.
498
+ > [!NOTE]
499
+ > Run time performance is bottlenecked by inference and hard to benchmark accurately, so we focus on minimizing overhead, reducing memory usage, and parallelizing tool calls.
453
500
 
454
501
  ### Instantiation Time
455
502
 
456
- Let's measure the time it takes for an Agent with 1 tool to start up. We'll run the evaluation 1000 times to get a baseline measurement.
503
+ Let's measure instantiation time for an Agent with 1 tool. We'll run the evaluation 1000 times to get a baseline measurement. We'll compare Agno to LangGraph, CrewAI and Pydantic AI.
457
504
 
458
- You should run the evaluation yourself on your own machine, please, do not take these results at face value.
505
+ > [!NOTE]
506
+ > The code for this benchmark is available [here](https://github.com/agno-agi/agno/tree/main/cookbook/evals/performance). You should run the evaluation yourself on your own machine, please, do not take these results at face value.
459
507
 
460
508
  ```shell
461
509
  # Setup virtual environment
462
510
  ./scripts/perf_setup.sh
463
511
  source .venvs/perfenv/bin/activate
464
- # OR Install dependencies manually
465
- # pip install openai agno langgraph langchain_openai
466
512
 
467
513
  # Agno
468
514
  python cookbook/evals/performance/instantiate_agent_with_tool.py
469
515
 
470
516
  # LangGraph
471
517
  python cookbook/evals/performance/comparison/langgraph_instantiation.py
518
+ # CrewAI
519
+ python cookbook/evals/performance/comparison/crewai_instantiation.py
520
+ # Pydantic AI
521
+ python cookbook/evals/performance/comparison/pydantic_ai_instantiation.py
472
522
  ```
473
523
 
474
- > The following evaluation is run on an Apple M4 MacBook Pro. It also runs as a Github action on this repo.
524
+ 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.
475
525
 
476
- LangGraph is on the right, **let's start it first and give it a head start**.
477
-
478
- Agno is on the left, notice how it finishes before LangGraph gets 1/2 way through the runtime measurement, and hasn't even started the memory measurement. That's how fast Agno is.
479
-
480
- https://github.com/user-attachments/assets/ba466d45-75dd-45ac-917b-0a56c5742e23
526
+ https://github.com/user-attachments/assets/54b98576-1859-4880-9f2d-15e1a426719d
481
527
 
482
528
  ### Memory Usage
483
529
 
@@ -485,11 +531,24 @@ To measure memory usage, we use the `tracemalloc` library. We first calculate a
485
531
 
486
532
  We recommend running the evaluation yourself on your own machine, and digging into the code to see how it works. If we've made a mistake, please let us know.
487
533
 
488
- ### Conclusion
534
+ ### Results
535
+
536
+ Taking Agno as the baseline, we can see that:
537
+
538
+ | Metric | Agno | Langgraph | PydanticAI | CrewAI |
539
+ | ------------------ | ---- | ----------- | ---------- | ---------- |
540
+ | **Time (seconds)** | 1× | 529× slower | 57× slower | 70× slower |
541
+ | **Memory (MiB)** | 1× | 24× higher | 4× higher | 10× higher |
542
+
543
+ Exact numbers from the benchmark:
489
544
 
490
- Agno agents are designed for performance and while we do share some benchmarks against other frameworks, we should be mindful that accuracy and reliability are more important than speed.
545
+ | Metric | Agno | Langgraph | PydanticAI | CrewAI |
546
+ | ------------------ | -------- | --------- | ---------- | -------- |
547
+ | **Time (seconds)** | 0.000003 | 0.001587 | 0.000170 | 0.000210 |
548
+ | **Memory (MiB)** | 0.006642 | 0.161435 | 0.028712 | 0.065652 |
491
549
 
492
- Given that each framework is different and we won't be able to tune their performance like we do with Agno, for future benchmarks we'll only be comparing against ourselves.
550
+ > [!NOTE]
551
+ > Agno agents are designed for performance and while we share benchmarks against other frameworks, we should be mindful that accuracy and reliability are more important than speed.
493
552
 
494
553
  ## Contributions
495
554
 
agno-2.1.6/README.md ADDED
@@ -0,0 +1,195 @@
1
+ <div align="center" id="top">
2
+ <a href="https://agno.com">
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-dark.svg">
5
+ <source media="(prefers-color-scheme: light)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg">
6
+ <img src="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg" alt="Agno">
7
+ </picture>
8
+ </a>
9
+ </div>
10
+
11
+ <div align="center">
12
+ <a href="https://docs.agno.com">Documentation</a>
13
+ <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
14
+ <a href="https://docs.agno.com/examples/introduction">Examples</a>
15
+ <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>
16
+ <a href="https://www.agno.com/?utm_source=github&utm_medium=readme&utm_campaign=agno-github">Website</a>
17
+ <br />
18
+ </div>
19
+
20
+ ## What is Agno?
21
+
22
+ Agno is the multi-agent framework, runtime and UI built for speed.
23
+
24
+ Use it to build multi-agent systems with memory, knowledge, human in the loop and MCP support. You can orchestrate agents as multi-agent teams (more autonomy) or step-based agentic workflows (more control).
25
+
26
+ Here’s an example of an Agent that connects to an MCP server, manages conversation state in a database, and is served using a FastAPI application that you can interact with using the [AgentOS UI](https://os.agno.com).
27
+
28
+ ```python agno_agent.py
29
+ from agno.agent import Agent
30
+ from agno.db.sqlite import SqliteDb
31
+ from agno.models.anthropic import Claude
32
+ from agno.os import AgentOS
33
+ from agno.tools.mcp import MCPTools
34
+
35
+ # ************* Create Agent *************
36
+ agno_agent = Agent(
37
+ name="Agno Agent",
38
+ model=Claude(id="claude-sonnet-4-5"),
39
+ # Add a database to the Agent
40
+ db=SqliteDb(db_file="agno.db"),
41
+ # Add the Agno MCP server to the Agent
42
+ tools=[MCPTools(transport="streamable-http", url="https://docs.agno.com/mcp")],
43
+ # Add the previous session history to the context
44
+ add_history_to_context=True,
45
+ markdown=True,
46
+ )
47
+
48
+
49
+ # ************* Create AgentOS *************
50
+ agent_os = AgentOS(agents=[agno_agent])
51
+ # Get the FastAPI app for the AgentOS
52
+ app = agent_os.get_app()
53
+
54
+ # ************* Run AgentOS *************
55
+ if __name__ == "__main__":
56
+ agent_os.serve(app="agno_agent:app", reload=True)
57
+ ```
58
+
59
+ ## What is the AgentOS?
60
+
61
+ AgentOS is a high-performance runtime for multi-agent systems. Key features include:
62
+
63
+ 1. **Pre-built FastAPI runtime**: AgentOS ships with a ready-to-use FastAPI app for running your agents, teams, and workflows. This gives you a major head start in building your AI product.
64
+
65
+ 2. **Integrated UI**: The [AgentOS UI](https://os.agno.com) connects directly to your runtime, letting you test, monitor, and manage your system in real time. This gives you unmatched visibility and control over your system.
66
+
67
+ 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.
68
+
69
+ Here's what the [AgentOS UI](https://os.agno.com) looks like:
70
+
71
+ https://github.com/user-attachments/assets/feb23db8-15cc-4e88-be7c-01a21a03ebf6
72
+
73
+ ## The Complete Agentic Solution
74
+
75
+ For companies building agents, Agno provides the complete solution:
76
+
77
+ - The fastest framework for building agents, multi-agent teams and agentic workflows.
78
+ - A ready-to-use FastAPI app that gets you building AI products on day one.
79
+ - A control plane for testing, monitoring and managing your system.
80
+
81
+ 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.
82
+
83
+ ## Getting started
84
+
85
+ If you're new to Agno, follow our [quickstart](https://docs.agno.com/introduction/quickstart) to build your first Agent and run it using the AgentOS.
86
+
87
+ After that, checkout the [examples gallery](https://docs.agno.com/examples/introduction) and build real-world applications with Agno.
88
+
89
+ ## Documentation, Community & More Examples
90
+
91
+ - Docs: <a href="https://docs.agno.com" target="_blank" rel="noopener noreferrer">docs.agno.com</a>
92
+ - Cookbook: <a href="https://github.com/agno-agi/agno/tree/main/cookbook" target="_blank" rel="noopener noreferrer">Cookbook</a>
93
+ - Community forum: <a href="https://community.agno.com/" target="_blank" rel="noopener noreferrer">community.agno.com</a>
94
+ - Discord: <a href="https://discord.gg/4MtYHHrgA8" target="_blank" rel="noopener noreferrer">discord</a>
95
+
96
+ ## Setup Your Coding Agent to Use Agno
97
+
98
+ 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.
99
+
100
+ ### IDE Integration
101
+
102
+ 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:
103
+
104
+ 1. In Cursor, go to the "Cursor Settings" menu.
105
+ 2. Find the "Indexing & Docs" section.
106
+ 3. Add `https://docs.agno.com/llms-full.txt` to the list of documentation URLs.
107
+ 4. Save the changes.
108
+
109
+ Now, Cursor will have access to the Agno documentation. You can do the same with other IDEs like VSCode, Windsurf etc.
110
+
111
+ ## Performance
112
+
113
+ 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.
114
+
115
+ At Agno, we optimize performance across 3 dimensions:
116
+
117
+ 1. **Agent performance:** We optimize static operations (instantiation, memory footprint) and runtime operations (tool calls, memory updates, history management).
118
+ 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.
119
+ 3. **Agent reliability and accuracy:** Monitored through evals, which we’ll explore later.
120
+
121
+ ### Agent Performance
122
+
123
+ 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):
124
+
125
+ - **Agent instantiation:** ~3μs on average
126
+ - **Memory footprint:** ~6.6Kib on average
127
+
128
+ 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**.
129
+
130
+ > [!NOTE]
131
+ > 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.
132
+
133
+ ### Instantiation Time
134
+
135
+ 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.
136
+
137
+ > [!NOTE]
138
+ > 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.
139
+
140
+ ```shell
141
+ # Setup virtual environment
142
+ ./scripts/perf_setup.sh
143
+ source .venvs/perfenv/bin/activate
144
+
145
+ # Agno
146
+ python cookbook/evals/performance/instantiate_agent_with_tool.py
147
+
148
+ # LangGraph
149
+ python cookbook/evals/performance/comparison/langgraph_instantiation.py
150
+ # CrewAI
151
+ python cookbook/evals/performance/comparison/crewai_instantiation.py
152
+ # Pydantic AI
153
+ python cookbook/evals/performance/comparison/pydantic_ai_instantiation.py
154
+ ```
155
+
156
+ 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.
157
+
158
+ https://github.com/user-attachments/assets/54b98576-1859-4880-9f2d-15e1a426719d
159
+
160
+ ### Memory Usage
161
+
162
+ 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.
163
+
164
+ 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.
165
+
166
+ ### Results
167
+
168
+ Taking Agno as the baseline, we can see that:
169
+
170
+ | Metric | Agno | Langgraph | PydanticAI | CrewAI |
171
+ | ------------------ | ---- | ----------- | ---------- | ---------- |
172
+ | **Time (seconds)** | 1× | 529× slower | 57× slower | 70× slower |
173
+ | **Memory (MiB)** | 1× | 24× higher | 4× higher | 10× higher |
174
+
175
+ Exact numbers from the benchmark:
176
+
177
+ | Metric | Agno | Langgraph | PydanticAI | CrewAI |
178
+ | ------------------ | -------- | --------- | ---------- | -------- |
179
+ | **Time (seconds)** | 0.000003 | 0.001587 | 0.000170 | 0.000210 |
180
+ | **Memory (MiB)** | 0.006642 | 0.161435 | 0.028712 | 0.065652 |
181
+
182
+ > [!NOTE]
183
+ > 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.
184
+
185
+ ## Contributions
186
+
187
+ We welcome contributions, read our [contributing guide](https://github.com/agno-agi/agno/blob/v2.0/CONTRIBUTING.md) to get started.
188
+
189
+ ## Telemetry
190
+
191
+ 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.
192
+
193
+ <p align="left">
194
+ <a href="#top">⬆️ Back to Top</a>
195
+ </p>