Metadata-Version: 2.4
Name: agno
Version: 2.4.0
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"
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: 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: 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.24.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: markdown
Requires-Dist: unstructured; 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[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[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, run, manage multi-agent systems.
</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://discord.gg/4MtYHHrgA8">Discord</a>
</div>

## What is Agno?

Agno is a framework, runtime, and control plane for multi-agent systems.

| Layer | What it does |
|-------|--------------|
| **Framework** | Build agents, teams, and workflows with memory, knowledge, guardrails, and 100+ integrations |
| **AgentOS Runtime** | Run your system in production with a stateless, secure FastAPI backend |
| **Control Plane** | Test, monitor, and manage your system using the [AgentOS UI](https://os.agno.com) |

## Why Agno?

- **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.
- **Production-ready on day one.** Pre-built FastAPI runtime with SSE endpoints, ready to deploy.
- **Fast.** 529× faster instantiation than LangGraph. 24× lower memory. [See benchmarks →](#performance)

## Example

An agent with MCP tools, persistent state, served via FastAPI:
```python
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
from agno.models.anthropic import Claude
from agno.os import AgentOS
from agno.tools.mcp import MCPTools

agno_agent = Agent(
    name="Agno Agent",
    model=Claude(id="claude-sonnet-4-5"),
    db=SqliteDb(db_file="agno.db"),
    tools=[MCPTools(transport="streamable-http", url="https://docs.agno.com/mcp")],
    add_history_to_context=True,
    markdown=True,
)

agent_os = AgentOS(agents=[agno_agent])
app = agent_os.get_app()

if __name__ == "__main__":
    agent_os.serve(app="agno_agent:app", reload=True)
```

Run this and connect to the [AgentOS UI](https://os.agno.com):

https://github.com/user-attachments/assets/feb23db8-15cc-4e88-be7c-01a21a03ebf6

## Features

**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)

**Memory & Knowledge**
- Persistent storage for session history and state
- User memory across sessions
- Agentic RAG with 20+ vector stores, hybrid search, reranking
- Culture: shared long-term memory across agents

**Orchestration**
- Human-in-the-loop (confirmations, approvals, overrides)
- Guardrails for validation and security
- Pre/post hooks for the agent lifecycle
- 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
- Durable execution for resumable workflows
- RBAC and per-agent permissions

## Getting Started

1. Follow the [getting started guide](https://github.com/agno-agi/agno/tree/main/cookbook/00_getting_started)
2. Browse the [cookbook](https://github.com/agno-agi/agno/tree/main/cookbook) for real-world examples
3. Read the [docs](https://docs.agno.com) to go deeper

## Performance

Agent workloads spawn hundreds of instances. Stateless, horizontal scalability isn't optional.

| Metric | Agno | LangGraph | PydanticAI | CrewAI |
|--------|------|-----------|------------|--------|
| Instantiation | **3μs** | 1,587μs (529×) | 170μs (57×) | 210μs (70×) |
| Memory | **6.6 KiB** | 161 KiB (24×) | 29 KiB (4×) | 66 KiB (10×) |

<sub>Apple M4 MacBook Pro, Oct 2025. [Run benchmarks yourself →](https://github.com/agno-agi/agno/tree/main/cookbook/12_evals/performance)</sub>

https://github.com/user-attachments/assets/54b98576-1859-4880-9f2d-15e1a426719d

## 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

We welcome contributions. See the [contributing guide](https://github.com/agno-agi/agno/blob/v2.0/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>
