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