Metadata-Version: 2.4
Name: agno
Version: 2.4.8
Summary: Agno: a lightweight library for building Multi-Agent Systems
Author-email: Ashpreet Bedi <ashpreet@agno.com>
Project-URL: homepage, https://agno.com
Project-URL: documentation, https://docs.agno.com
Keywords: agent,reasoning,llm,large-language-model,framework
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: <4,>=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: docstring-parser
Requires-Dist: gitpython
Requires-Dist: h11>=0.16.0
Requires-Dist: httpx[http2]
Requires-Dist: packaging
Requires-Dist: pydantic-settings
Requires-Dist: pydantic
Requires-Dist: python-dotenv
Requires-Dist: python-multipart
Requires-Dist: pyyaml
Requires-Dist: rich
Requires-Dist: typer
Requires-Dist: typing-extensions
Provides-Extra: dev
Requires-Dist: mypy==1.18.2; extra == "dev"
Requires-Dist: ruff==0.14.3; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-asyncio; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: pytest-mock; extra == "dev"
Requires-Dist: timeout-decorator; extra == "dev"
Requires-Dist: types-pyyaml; extra == "dev"
Requires-Dist: types-aiofiles; extra == "dev"
Requires-Dist: fastapi; extra == "dev"
Requires-Dist: uvicorn; extra == "dev"
Requires-Dist: PyJWT; extra == "dev"
Requires-Dist: mcp; extra == "dev"
Requires-Dist: openai; extra == "dev"
Requires-Dist: fakeredis; extra == "dev"
Requires-Dist: xlwt; extra == "dev"
Provides-Extra: os
Requires-Dist: fastapi; extra == "os"
Requires-Dist: uvicorn; extra == "os"
Requires-Dist: PyJWT; extra == "os"
Provides-Extra: opentelemetry
Requires-Dist: opentelemetry-sdk; extra == "opentelemetry"
Requires-Dist: opentelemetry-exporter-otlp; extra == "opentelemetry"
Provides-Extra: weave
Requires-Dist: weave; extra == "weave"
Provides-Extra: openlit
Requires-Dist: openlit; extra == "openlit"
Requires-Dist: agno[opentelemetry]; extra == "openlit"
Provides-Extra: arize
Requires-Dist: arize-phoenix; extra == "arize"
Requires-Dist: agno[opentelemetry]; extra == "arize"
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc; extra == "arize"
Requires-Dist: opentelemetry-distro; extra == "arize"
Provides-Extra: langfuse
Requires-Dist: langfuse; extra == "langfuse"
Provides-Extra: aws-bedrock
Requires-Dist: boto3; extra == "aws-bedrock"
Requires-Dist: aioboto3; extra == "aws-bedrock"
Provides-Extra: anthropic
Requires-Dist: anthropic; extra == "anthropic"
Provides-Extra: azure
Requires-Dist: azure-ai-inference; extra == "azure"
Requires-Dist: aiohttp; extra == "azure"
Provides-Extra: cerebras
Requires-Dist: cerebras-cloud-sdk; extra == "cerebras"
Provides-Extra: cohere
Requires-Dist: cohere; extra == "cohere"
Provides-Extra: infinity
Requires-Dist: infinity_client; extra == "infinity"
Provides-Extra: google
Requires-Dist: google-genai>=1.52.0; extra == "google"
Provides-Extra: groq
Requires-Dist: groq; extra == "groq"
Provides-Extra: ibm
Requires-Dist: ibm-watsonx-ai; extra == "ibm"
Provides-Extra: litellm
Requires-Dist: litellm; extra == "litellm"
Provides-Extra: lmstudio
Requires-Dist: lmstudio; extra == "lmstudio"
Provides-Extra: meta
Requires-Dist: llama-api-client; extra == "meta"
Provides-Extra: mistral
Requires-Dist: mistralai; extra == "mistral"
Provides-Extra: ollama
Requires-Dist: ollama; extra == "ollama"
Provides-Extra: openai
Requires-Dist: openai; extra == "openai"
Provides-Extra: portkey
Requires-Dist: portkey-ai; extra == "portkey"
Provides-Extra: tokenizers
Requires-Dist: tiktoken; extra == "tokenizers"
Requires-Dist: tokenizers; extra == "tokenizers"
Provides-Extra: cel
Requires-Dist: cel-python; extra == "cel"
Provides-Extra: agentql
Requires-Dist: agentql; extra == "agentql"
Provides-Extra: apify
Requires-Dist: apify-client; extra == "apify"
Provides-Extra: arxiv
Requires-Dist: arxiv; extra == "arxiv"
Provides-Extra: brave
Requires-Dist: brave-search; extra == "brave"
Provides-Extra: browserbase
Requires-Dist: browserbase; extra == "browserbase"
Requires-Dist: playwright; extra == "browserbase"
Provides-Extra: cartesia
Requires-Dist: cartesia; extra == "cartesia"
Provides-Extra: confluence
Requires-Dist: atlassian-python-api; extra == "confluence"
Provides-Extra: ddg
Requires-Dist: ddgs; extra == "ddg"
Provides-Extra: duckdb
Requires-Dist: duckdb; extra == "duckdb"
Provides-Extra: elevenlabs
Requires-Dist: elevenlabs; extra == "elevenlabs"
Provides-Extra: evm
Requires-Dist: web3; extra == "evm"
Provides-Extra: exa
Requires-Dist: exa_py; extra == "exa"
Provides-Extra: seltz
Requires-Dist: seltz; extra == "seltz"
Provides-Extra: fal
Requires-Dist: fal_client; extra == "fal"
Provides-Extra: firecrawl
Requires-Dist: firecrawl-py==3.4.0; extra == "firecrawl"
Provides-Extra: tavily
Requires-Dist: tavily-python; extra == "tavily"
Provides-Extra: crawl4ai
Requires-Dist: crawl4ai>=0.6.3; extra == "crawl4ai"
Provides-Extra: github
Requires-Dist: PyGithub; extra == "github"
Provides-Extra: gmail
Requires-Dist: google-api-python-client; extra == "gmail"
Requires-Dist: google-auth-httplib2; extra == "gmail"
Requires-Dist: google-auth-oauthlib; extra == "gmail"
Provides-Extra: google-bigquery
Requires-Dist: google-cloud-bigquery; extra == "google-bigquery"
Provides-Extra: googlemaps
Requires-Dist: googlemaps; extra == "googlemaps"
Requires-Dist: google-maps-places; extra == "googlemaps"
Provides-Extra: matplotlib
Requires-Dist: matplotlib; extra == "matplotlib"
Provides-Extra: mcp
Requires-Dist: mcp>=1.9.2; extra == "mcp"
Provides-Extra: mem0
Requires-Dist: mem0ai; extra == "mem0"
Provides-Extra: memori
Requires-Dist: memori>=3.0.5; extra == "memori"
Provides-Extra: newspaper
Requires-Dist: newspaper4k; extra == "newspaper"
Requires-Dist: lxml_html_clean; extra == "newspaper"
Provides-Extra: notion
Requires-Dist: notion-client; extra == "notion"
Provides-Extra: opencv
Requires-Dist: opencv-python; extra == "opencv"
Provides-Extra: parallel
Requires-Dist: parallel-web; extra == "parallel"
Provides-Extra: psycopg
Requires-Dist: psycopg-binary; extra == "psycopg"
Requires-Dist: psycopg; extra == "psycopg"
Provides-Extra: redshift
Requires-Dist: redshift-connector; extra == "redshift"
Provides-Extra: reportlab
Requires-Dist: reportlab; extra == "reportlab"
Provides-Extra: scrapegraph
Requires-Dist: scrapegraph-py; extra == "scrapegraph"
Provides-Extra: todoist
Requires-Dist: todoist-api-python; extra == "todoist"
Provides-Extra: valyu
Requires-Dist: valyu; extra == "valyu"
Provides-Extra: webex
Requires-Dist: webexpythonsdk; extra == "webex"
Provides-Extra: yfinance
Requires-Dist: yfinance; extra == "yfinance"
Provides-Extra: youtube
Requires-Dist: youtube_transcript_api; extra == "youtube"
Provides-Extra: zep
Requires-Dist: zep-cloud; extra == "zep"
Provides-Extra: daytona
Requires-Dist: daytona; extra == "daytona"
Provides-Extra: oxylabs
Requires-Dist: oxylabs; extra == "oxylabs"
Provides-Extra: trafilatura
Requires-Dist: trafilatura; extra == "trafilatura"
Provides-Extra: neo4j
Requires-Dist: neo4j; extra == "neo4j"
Provides-Extra: sql
Requires-Dist: sqlalchemy; extra == "sql"
Provides-Extra: postgres
Requires-Dist: psycopg-binary; extra == "postgres"
Provides-Extra: async-postgres
Requires-Dist: asyncpg; extra == "async-postgres"
Provides-Extra: async-mongo
Requires-Dist: pymongo>=4.9; extra == "async-mongo"
Requires-Dist: motor; extra == "async-mongo"
Provides-Extra: sqlite
Requires-Dist: sqlalchemy; extra == "sqlite"
Provides-Extra: gcs
Requires-Dist: google-cloud-storage; extra == "gcs"
Provides-Extra: firestore
Requires-Dist: google-cloud-firestore; extra == "firestore"
Provides-Extra: redis
Requires-Dist: redis; extra == "redis"
Requires-Dist: redisvl>=0.12.1; extra == "redis"
Provides-Extra: mysql
Requires-Dist: pymysql; extra == "mysql"
Requires-Dist: asyncmy; extra == "mysql"
Provides-Extra: pgvector
Requires-Dist: pgvector; extra == "pgvector"
Provides-Extra: chromadb
Requires-Dist: chromadb; extra == "chromadb"
Provides-Extra: lancedb
Requires-Dist: lancedb>=0.26.0; extra == "lancedb"
Requires-Dist: tantivy; extra == "lancedb"
Provides-Extra: pylance
Requires-Dist: pylance; extra == "pylance"
Provides-Extra: qdrant
Requires-Dist: qdrant-client; extra == "qdrant"
Provides-Extra: couchbase
Requires-Dist: couchbase; extra == "couchbase"
Provides-Extra: cassandra
Requires-Dist: cassio; extra == "cassandra"
Provides-Extra: mongodb
Requires-Dist: pymongo[srv]; extra == "mongodb"
Provides-Extra: singlestore
Requires-Dist: sqlalchemy; extra == "singlestore"
Provides-Extra: weaviate
Requires-Dist: weaviate-client; extra == "weaviate"
Provides-Extra: milvusdb
Requires-Dist: pymilvus>=2.5.10; extra == "milvusdb"
Provides-Extra: clickhouse
Requires-Dist: clickhouse-connect; extra == "clickhouse"
Provides-Extra: pinecone
Requires-Dist: pinecone==5.4.2; extra == "pinecone"
Provides-Extra: surrealdb
Requires-Dist: surrealdb>=1.0.4; extra == "surrealdb"
Provides-Extra: upstash
Requires-Dist: upstash-vector; extra == "upstash"
Provides-Extra: pdf
Requires-Dist: pypdf; extra == "pdf"
Requires-Dist: rapidocr_onnxruntime; extra == "pdf"
Provides-Extra: docx
Requires-Dist: python-docx; extra == "docx"
Provides-Extra: pptx
Requires-Dist: python-pptx; extra == "pptx"
Provides-Extra: text
Requires-Dist: aiofiles; extra == "text"
Provides-Extra: csv
Requires-Dist: aiofiles; extra == "csv"
Provides-Extra: excel
Requires-Dist: openpyxl; extra == "excel"
Requires-Dist: xlrd; extra == "excel"
Provides-Extra: markdown
Requires-Dist: unstructured<0.18.31; extra == "markdown"
Requires-Dist: markdown; extra == "markdown"
Requires-Dist: aiofiles; extra == "markdown"
Provides-Extra: chonkie
Requires-Dist: chonkie[semantic]; extra == "chonkie"
Requires-Dist: chonkie[code]; extra == "chonkie"
Requires-Dist: chonkie; extra == "chonkie"
Provides-Extra: agui
Requires-Dist: ag-ui-protocol; extra == "agui"
Provides-Extra: a2a
Requires-Dist: a2a-sdk; extra == "a2a"
Provides-Extra: huggingface
Requires-Dist: huggingface-hub; extra == "huggingface"
Provides-Extra: performance
Requires-Dist: memory_profiler; extra == "performance"
Provides-Extra: cookbooks
Requires-Dist: inquirer; extra == "cookbooks"
Requires-Dist: email_validator; extra == "cookbooks"
Provides-Extra: docker
Requires-Dist: agno-infra[docker]; extra == "docker"
Provides-Extra: aws
Requires-Dist: agno-infra[aws]; extra == "aws"
Requires-Dist: agno-infra[docker]; extra == "aws"
Provides-Extra: infra
Requires-Dist: agno-infra; extra == "infra"
Provides-Extra: models
Requires-Dist: agno[aws-bedrock]; extra == "models"
Requires-Dist: agno[anthropic]; extra == "models"
Requires-Dist: agno[azure]; extra == "models"
Requires-Dist: agno[cerebras]; extra == "models"
Requires-Dist: agno[cohere]; extra == "models"
Requires-Dist: agno[google]; extra == "models"
Requires-Dist: agno[groq]; extra == "models"
Requires-Dist: agno[ibm]; extra == "models"
Requires-Dist: agno[litellm]; extra == "models"
Requires-Dist: agno[meta]; extra == "models"
Requires-Dist: agno[mistral]; extra == "models"
Requires-Dist: agno[ollama]; extra == "models"
Requires-Dist: agno[openai]; extra == "models"
Requires-Dist: agno[portkey]; extra == "models"
Provides-Extra: tools
Requires-Dist: agno[apify]; extra == "tools"
Requires-Dist: agno[arxiv]; extra == "tools"
Requires-Dist: agno[exa]; extra == "tools"
Requires-Dist: agno[seltz]; extra == "tools"
Requires-Dist: agno[cartesia]; extra == "tools"
Requires-Dist: agno[ddg]; extra == "tools"
Requires-Dist: agno[duckdb]; extra == "tools"
Requires-Dist: agno[newspaper]; extra == "tools"
Requires-Dist: agno[youtube]; extra == "tools"
Requires-Dist: agno[firecrawl]; extra == "tools"
Requires-Dist: agno[tavily]; extra == "tools"
Requires-Dist: agno[crawl4ai]; extra == "tools"
Requires-Dist: agno[github]; extra == "tools"
Requires-Dist: agno[gmail]; extra == "tools"
Requires-Dist: agno[googlemaps]; extra == "tools"
Requires-Dist: agno[todoist]; extra == "tools"
Requires-Dist: agno[matplotlib]; extra == "tools"
Requires-Dist: agno[elevenlabs]; extra == "tools"
Requires-Dist: agno[evm]; extra == "tools"
Requires-Dist: agno[fal]; extra == "tools"
Requires-Dist: agno[webex]; extra == "tools"
Requires-Dist: agno[mcp]; extra == "tools"
Requires-Dist: agno[browserbase]; extra == "tools"
Requires-Dist: agno[agentql]; extra == "tools"
Requires-Dist: agno[opencv]; extra == "tools"
Requires-Dist: agno[parallel]; extra == "tools"
Requires-Dist: agno[scrapegraph]; extra == "tools"
Requires-Dist: agno[valyu]; extra == "tools"
Requires-Dist: agno[yfinance]; extra == "tools"
Requires-Dist: agno[confluence]; extra == "tools"
Requires-Dist: agno[notion]; extra == "tools"
Requires-Dist: agno[oxylabs]; extra == "tools"
Requires-Dist: agno[zep]; extra == "tools"
Requires-Dist: agno[mem0]; extra == "tools"
Requires-Dist: agno[memori]; extra == "tools"
Requires-Dist: agno[google_bigquery]; extra == "tools"
Requires-Dist: agno[psycopg]; extra == "tools"
Requires-Dist: agno[redshift]; extra == "tools"
Requires-Dist: agno[reportlab]; extra == "tools"
Requires-Dist: agno[trafilatura]; extra == "tools"
Requires-Dist: agno[neo4j]; extra == "tools"
Provides-Extra: storage
Requires-Dist: agno[sql]; extra == "storage"
Requires-Dist: agno[postgres]; extra == "storage"
Requires-Dist: agno[async_postgres]; extra == "storage"
Requires-Dist: agno[async_mongo]; extra == "storage"
Requires-Dist: agno[sqlite]; extra == "storage"
Requires-Dist: agno[gcs]; extra == "storage"
Requires-Dist: agno[firestore]; extra == "storage"
Requires-Dist: agno[redis]; extra == "storage"
Provides-Extra: vectordbs
Requires-Dist: agno[pgvector]; extra == "vectordbs"
Requires-Dist: agno[chromadb]; extra == "vectordbs"
Requires-Dist: agno[lancedb]; extra == "vectordbs"
Requires-Dist: agno[qdrant]; extra == "vectordbs"
Requires-Dist: agno[couchbase]; extra == "vectordbs"
Requires-Dist: agno[cassandra]; extra == "vectordbs"
Requires-Dist: agno[mongodb]; extra == "vectordbs"
Requires-Dist: agno[singlestore]; extra == "vectordbs"
Requires-Dist: agno[weaviate]; extra == "vectordbs"
Requires-Dist: agno[milvusdb]; extra == "vectordbs"
Requires-Dist: agno[clickhouse]; extra == "vectordbs"
Requires-Dist: agno[pinecone]; extra == "vectordbs"
Requires-Dist: agno[surrealdb]; extra == "vectordbs"
Requires-Dist: agno[upstash]; extra == "vectordbs"
Requires-Dist: agno[pylance]; extra == "vectordbs"
Requires-Dist: agno[redis]; extra == "vectordbs"
Provides-Extra: knowledge
Requires-Dist: agno[pdf]; extra == "knowledge"
Requires-Dist: agno[docx]; extra == "knowledge"
Requires-Dist: agno[pptx]; extra == "knowledge"
Requires-Dist: agno[text]; extra == "knowledge"
Requires-Dist: agno[csv]; extra == "knowledge"
Requires-Dist: agno[excel]; extra == "knowledge"
Requires-Dist: agno[markdown]; extra == "knowledge"
Requires-Dist: agno[chonkie]; extra == "knowledge"
Provides-Extra: embedders
Requires-Dist: agno[huggingface]; extra == "embedders"
Requires-Dist: agno[vllm]; extra == "embedders"
Provides-Extra: tests
Requires-Dist: agno[a2a]; extra == "tests"
Requires-Dist: agno[dev]; extra == "tests"
Requires-Dist: agno[models]; extra == "tests"
Requires-Dist: agno[tools]; extra == "tests"
Requires-Dist: agno[storage]; extra == "tests"
Requires-Dist: agno[vectordbs]; extra == "tests"
Requires-Dist: agno[knowledge]; extra == "tests"
Requires-Dist: agno[embedders]; extra == "tests"
Requires-Dist: agno[performance]; extra == "tests"
Requires-Dist: agno[cookbooks]; extra == "tests"
Requires-Dist: agno[agui]; extra == "tests"
Requires-Dist: agno[integration-tests]; extra == "tests"
Requires-Dist: twine; extra == "tests"
Requires-Dist: build; extra == "tests"
Requires-Dist: grpcio==1.74.0; extra == "tests"
Provides-Extra: integration-tests
Requires-Dist: exa_py; extra == "integration-tests"
Requires-Dist: ddgs; extra == "integration-tests"
Requires-Dist: yfinance; extra == "integration-tests"
Requires-Dist: sqlalchemy; extra == "integration-tests"
Requires-Dist: Pillow; extra == "integration-tests"
Requires-Dist: fastmcp; extra == "integration-tests"
Provides-Extra: demo
Requires-Dist: agno[dev]; extra == "demo"
Requires-Dist: anthropic; extra == "demo"
Requires-Dist: chromadb; extra == "demo"
Requires-Dist: ddgs; extra == "demo"
Requires-Dist: fastapi[standard]; extra == "demo"
Requires-Dist: google-genai; extra == "demo"
Requires-Dist: matplotlib; extra == "demo"
Requires-Dist: mcp; extra == "demo"
Requires-Dist: nest_asyncio; extra == "demo"
Requires-Dist: openai; extra == "demo"
Requires-Dist: openinference-instrumentation-agno; extra == "demo"
Requires-Dist: opentelemetry-api; extra == "demo"
Requires-Dist: opentelemetry-sdk; extra == "demo"
Requires-Dist: pandas; extra == "demo"
Requires-Dist: parallel-web; extra == "demo"
Requires-Dist: pgvector; extra == "demo"
Requires-Dist: pillow; extra == "demo"
Requires-Dist: psycopg[binary]; extra == "demo"
Requires-Dist: pypdf; extra == "demo"
Requires-Dist: sqlalchemy; extra == "demo"
Requires-Dist: yfinance; extra == "demo"
Requires-Dist: youtube-transcript-api; extra == "demo"
Dynamic: license-file

<div align="center" id="top">
  <a href="https://agno.com">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-dark.svg">
      <source media="(prefers-color-scheme: light)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg">
      <img src="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg" alt="Agno">
    </picture>
  </a>
</div>

<p align="center">
  Build multi-agent systems that learn.
</p>

<div align="center">
  <a href="https://docs.agno.com">Docs</a>
  <span>&nbsp;•&nbsp;</span>
  <a href="https://github.com/agno-agi/agno/tree/main/cookbook">Cookbook</a>
  <span>&nbsp;•&nbsp;</span>
  <a href="https://community.agno.com/">Community</a>
  <span>&nbsp;•&nbsp;</span>
  <a href="https://www.agno.com/discord">Discord</a>
</div>

## What is Agno?

**A framework for building multi-agent systems that learn and improve with every interaction.**

Most agents are stateless. They reason, respond, forget. Session history helps, but they're exactly as capable on day 1000 as they were on day 1.

Agno agents are different. They remember users across sessions, accumulate knowledge across conversations, and learn from decisions. Insights from one user benefit everyone. The system gets smarter over time.

Everything runs in your cloud. Your data never leaves your environment.

## Quick Example

```python
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
from agno.models.openai import OpenAIResponses

agent = Agent(
    model=OpenAIResponses(id="gpt-5.2"),
    db=SqliteDb(db_file="tmp/agents.db"),
    learning=True,
)
```

One line. Your agent now remembers users, accumulates knowledge, and improves over time.

## Production Stack

Agno provides the complete infrastructure for building multi-agent systems that learn:

| Layer | What it does |
|-------|--------------|
| **Framework** | Build agents with learning, tools, knowledge, and guardrails |
| **Runtime** | Run in production using [AgentOS](https://docs.agno.com/agent-os/introduction) |
| **Control Plane** | Monitor and manage via the [AgentOS UI](https://os.agno.com) |

## Get Started

1. [Build your first agent](https://docs.agno.com/first-agent)
2. [Build your first multi-agent system](https://docs.agno.com/first-multi-agent-system)
3. [Deploy to production](https://docs.agno.com/production/overview)

More: [Docs](https://docs.agno.com) · [Cookbook](https://github.com/agno-agi/agno/tree/main/cookbook)

## Features

| Category | What you get |
|----------|--------------|
| **Learning** | User profiles that persist across sessions. User memories that accumulate over time. Learned knowledge that transfers across users. Always or agentic learning modes. |
| **Core** | Model-agnostic: OpenAI, Anthropic, Google, local models. Type-safe I/O with `input_schema` and `output_schema`. Async-first, built for long-running tasks. Natively multimodal (text, images, audio, video, files). |
| **Knowledge** | Agentic RAG with 20+ vector stores, hybrid search, reranking. Persistent storage for session history and state. |
| **Orchestration** | Human-in-the-loop (confirmations, approvals, overrides). Guardrails for validation and security. First-class MCP and A2A support. 100+ built-in toolkits. |
| **Production** | Ready-to-use FastAPI runtime. Integrated control plane UI. Evals for accuracy, performance, latency. |

## IDE Integration

Add our docs to your AI-enabled editor:

**Cursor:** Settings → Indexing & Docs → Add `https://docs.agno.com/llms-full.txt`

Also works with VSCode, Windsurf, and similar tools.

## Contributing

See the [contributing guide](https://github.com/agno-agi/agno/blob/main/CONTRIBUTING.md).

## Telemetry

Agno logs which model providers are used to prioritize updates. Disable with `AGNO_TELEMETRY=false`.

<p align="right"><a href="#top">↑ Back to top</a></p>
