{"id":144,"library":"agno","title":"Agno (formerly Phidata)","description":"Open-source framework for building multi-modal AI agents with memory, knowledge, tools, and reasoning. Renamed from Phidata to Agno in January 2025. Complete namespace change from phi.* to agno.*. phidata package still exists on PyPI (2.7.10) but is legacy — new development on agno only. Current version: agno 2.5.10 (Mar 2026).","status":"active","version":"2.5.10","language":"python","source_language":"en","source_url":"https://github.com/agno-agi/agno","tags":["agno","phidata","agents","llm","multi-agent","python","agentic-ai"],"install":[{"cmd":"pip install agno","lang":"bash","label":"Python (current)"},{"cmd":"pip install agno openai","lang":"bash","label":"Python (with OpenAI — required, agno defaults to OpenAIChat)"},{"cmd":"pip install phidata","lang":"bash","label":"Python (legacy — do not use for new projects)"}],"dependencies":[{"reason":"Default model provider. Agent() with no model specified defaults to OpenAIChat(gpt-4o) and fails silently if openai not installed.","package":"openai","optional":true},{"reason":"Docker infrastructure moved to separate package agno-docker.","package":"agno-docker","optional":true},{"reason":"AWS infrastructure moved to separate package agno-aws.","package":"agno-aws","optional":true}],"imports":[{"note":"All phi.* imports renamed to agno.*. phi.tools.duckduckgo.DuckDuckGo renamed to agno.tools.duckduckgo.DuckDuckGoTools — all tools now have Tools suffix.","wrong":"from phi.agent import Agent\nfrom phi.model.openai import OpenAIChat\nfrom phi.tools.duckduckgo import DuckDuckGo","symbol":"Agent","correct":"from agno.agent import Agent\nfrom agno.models.openai import OpenAIChat\nfrom agno.tools.duckduckgo import DuckDuckGoTools\n\nagent = Agent(\n    model=OpenAIChat(id='gpt-4o'),\n    tools=[DuckDuckGoTools()],\n    markdown=True\n)\nagent.print_response('Latest AI news', stream=True)"},{"note":"Model namespace changed from phi.model.* (singular) to agno.models.* (plural). All model classes moved.","wrong":"from phi.model.openai import OpenAIChat\nfrom phi.model.anthropic import Claude","symbol":"Model classes","correct":"from agno.models.openai import OpenAIChat\nfrom agno.models.anthropic import Claude\nfrom agno.models.google import Gemini"},{"note":"Knowledge namespace changed from phi.knowledge to agno.knowledge. Embedder parameter renamed from model= to id=.","wrong":"from phi.knowledge.pdf import PDFKnowledgeBase\nfrom phi.embedder.openai import OpenAIEmbedder\nembedder = OpenAIEmbedder(model='text-embedding-3-small')","symbol":"Knowledge / Embedder","correct":"from agno.knowledge.pdf import PDFKnowledgeBase\nfrom agno.embedder.openai import OpenAIEmbedder\n\n# Embedders now use id= not model=\nembedder = OpenAIEmbedder(id='text-embedding-3-small')"}],"quickstart":{"code":"# pip install agno openai\nfrom agno.agent import Agent\nfrom agno.models.openai import OpenAIChat\nimport os\n\nagent = Agent(\n    model=OpenAIChat(id='gpt-4o'),\n    description='You are a helpful assistant.',\n    markdown=True\n)\n\nagent.print_response('Explain quantum computing in 2 sentences.')","lang":"python","description":"Minimal Agno agent using OpenAI. Current agno 2.x API."},"warnings":[{"fix":"Replace all 'from phi.' with 'from agno.' systematically. See full migration guide at docs.agno.com/how-to/phidata-to-agno","message":"Complete namespace rename: all phi.* imports broken. from phi.agent import Agent raises ModuleNotFoundError on agno package. The entire import tree changed.","severity":"breaking","affected_versions":"agno >= 1.0.0"},{"fix":"Check docs.agno.com for updated tool names. Pattern: phi.tools.X.ClassName → agno.tools.X.ClassNameTools","message":"All tool classes renamed with Tools suffix. DuckDuckGo → DuckDuckGoTools, YFinanceTools stays same, but many others changed. Import paths also changed.","severity":"breaking","affected_versions":"agno >= 1.0.0"},{"fix":"OllamaEmbedder(id='llama3.2') not model='llama3.2'","message":"Embedder parameter renamed from model= to id=. OllamaEmbedder(model='llama3.2') breaks silently or raises TypeError.","severity":"breaking","affected_versions":"agno >= 1.0.0"},{"fix":"Replace phi commands with ag. phi init → ag init, phi ws up dev → ag ws up dev","message":"CLI renamed from phi to ag. All phi init, phi ws up commands broken.","severity":"breaking","affected_versions":"agno >= 1.0.0"},{"fix":"Always explicitly pass `model=` argument to `Agent()`. If relying on the default `OpenAIChat(gpt-4o)`, ensure `pip install openai` is run and the `OPENAI_API_KEY` environment variable is set.","message":"Agent() with no model specified silently defaults to OpenAIChat(gpt-4o). This will fail at runtime with a ModuleNotFoundError if `openai` is not installed, or with an authentication error (e.g., 'OPENAI_API_KEY not set') if `openai` is installed but the `OPENAI_API_KEY` environment variable is missing.","severity":"gotcha","affected_versions":"agno all"},{"fix":"pip install agno not phidata. Migrate all phi.* imports to agno.*","message":"phidata package still installable on PyPI (2.7.10) but receives no new features. LLMs trained before Feb 2025 will generate phidata/phi.* code. Entirely wrong for current agno.","severity":"gotcha","affected_versions":"phidata all"},{"fix":"from agno.document.reader.pdf_reader import PDFReader","message":"Document readers renamed with _reader suffix. phi.document.reader.pdf → agno.document.reader.pdf_reader.","severity":"gotcha","affected_versions":"agno >= 1.0.0"}],"env_vars":null,"last_verified":"2026-05-12T08:42:31.508Z","next_check":"2026-06-24T00:00:00.000Z","problems":[{"fix":"Ensure 'agno' is installed using 'pip install agno' and verify the correct Python environment is active.","cause":"The 'agno' package is not installed or the Python environment is incorrect.","error":"ModuleNotFoundError: No module named 'agno'"},{"fix":"Upgrade 'agno' to the latest version using 'pip install --upgrade agno' and check the installation.","cause":"The 'agno.agent' module is not found, possibly due to an outdated 'agno' version or incorrect installation.","error":"ModuleNotFoundError: No module named 'agno.agent'"},{"fix":"Reinstall 'agno' with all dependencies using 'pip install --upgrade --no-cache-dir agno'.","cause":"The 'agno.aws' module is missing, likely due to an incomplete installation or missing dependencies.","error":"ModuleNotFoundError: No module named 'agno.aws'"},{"fix":"Install the required dependencies using 'pip install agno[tools]'.","cause":"The 'agno.tools.daytona' module is not found, possibly due to missing optional dependencies.","error":"ModuleNotFoundError: No module named 'agno.tools.daytona'"},{"fix":"Install the 'openai' package using 'pip install openai'.","cause":"The 'openai' package is not installed, which is required for certain 'agno' functionalities.","error":"ModuleNotFoundError: No module named 'openai'"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":0,"quickstart_tag":"stale","pypi_latest":null,"install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.71,"mem_mb":25.6,"disk_size":"75.7M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.68,"mem_mb":25.6,"disk_size":"91.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.26,"mem_mb":25.6,"disk_size":"76M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.25,"mem_mb":25.6,"disk_size":"91M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.42,"mem_mb":28.4,"disk_size":"86.3M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.36,"mem_mb":28.4,"disk_size":"102.4M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.02,"mem_mb":28.4,"disk_size":"87M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.99,"mem_mb":28.4,"disk_size":"102M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.2,"mem_mb":28,"disk_size":"76.2M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.19,"mem_mb":28,"disk_size":"92.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.23,"mem_mb":28,"disk_size":"77M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.25,"mem_mb":28,"disk_size":"92M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.05,"mem_mb":28.8,"disk_size":"75.9M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.07,"mem_mb":28.8,"disk_size":"91.9M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.33,"mem_mb":28.8,"disk_size":"76M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.08,"mem_mb":28.8,"disk_size":"92M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.63,"mem_mb":25.9,"disk_size":"74.3M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.58,"mem_mb":25.9,"disk_size":"89.6M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.46,"mem_mb":25.9,"disk_size":"75M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.39,"mem_mb":25.9,"disk_size":"89M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null}]},"quickstart_checks":{"last_tested":"2026-04-23","tag":"stale","tag_description":"widespread failures or data too old to trust","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]}}