Introducing Agno v2.0

Agno
September 9, 2025
3 min read

We're excited to share that Agno v2.0 is officially live!  🎉

What’s Agno v2.0?

Great question! At our core is the same engine that you know and love: simple, blazing-fast, and truly agnostic. But this release marks a major leap forward in how developers build and run multi-agent systems with Agno. For v2, we’ve completely rewritten the library to simplify Agent, Team, and Workflow, expand capabilities, and make the developer experience smoother than ever.


What’s changed?

With Agno v2.0, you’ll find:

Streamlined storage for sessions, memories, evals, etc.

Key improvement: Single database handles sessions, memories, evals, and metrics

db = SqliteDb(db_file="tmp/agno_app.db")

# Agent with automatic storage management
agent = Agent(
	model=OpenAIChat(id="gpt-5-mini"),
	db=db,  # Single database for all storage needs
	enable_user_memories=True,      # Persistent user facts
	enable_session_summaries=True# Auto-generated summaries
	add_history_to_context=True,    # Auto-loads chat history
)

Everything stored automatically

agent.run("My name is John and I live in Denver")
# Stores: session, user memory, chat history, metrics
# Resume conversations with full context
agent.run("What do you remember about me?")
#  Automatically retrieves: memories, session history, summaries

Check out a full example.

A unified knowledge layer that supports diverse forms of content

Key improvement: One interface seamlessly handles all content types (PDFs, CSVs, web crawling, Markdown, text, etc)

knowledge = Knowledge(
	vector_db=LanceDb(
		search_type=SearchType.hybrid,  # Smart vector + keyword search
		embedder=OpenAIEmbedder(id="text-embedding-3-small"),
	),
)

Add diverse content types seamlessly

knowledge.add_content(url="https://example.com/recipes.pdf"# PDF
knowledge.add_content(path="/data/ingredients.csv")           # CSV  knowledge.add_content(url="https://cooking-blog.com/tips")    # Web
knowledge.add_content(content="Fresh herbs enhance flavor...") # Text

Agent gets unified knowledge access

agent = Agent(
	model=OpenAIChat(id="gpt-5-mini"),
	knowledge=knowledge,  # Single knowledge interface
	tools=[DuckDuckGoTools()],
	instructions="Search knowledge base first, then web if needed...",
)

Check out a full example.

Stateless agents, teams, and workflows for simpler, more reliable execution

Key improvement: No more confusing internal state management on agents and teams. They are now fully stateless.

Central hub where you interact with your agents, manage knowledge bases, track sessions, monitor performance, and control user access

Key improvement: Better control -> cancelling of runs, setting custom events, etc.

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

# Create the Agent
agno_agent = Agent(
    name="Agno Agent",
    model=Claude(id="claude-sonnet-4-0"),
    # Add a database to the Agent
    db=SqliteDb(db_file="agno.db"),
    # Add the Agno MCP server to the Agent
    tools=[MCPTools(transport="streamable-http", url="https://docs-v2.agno.com/mcp")],
    # Add the previous session history to the context
    add_history_to_context=True,
    markdown=True,
)


# Create the AgentOS
agent_os = AgentOS(agents=[agno_agent])
# Get the FastAPI app for the AgentOS
app = agent_os.get_app()

Check out a full example.


And a whole lot more...

Agno v2.0 also introduces AgentOS… but more on that later. 🚀

See the Changelog for more details on Agno2.0. Or check out this guide for help migrating your Agno applications from v1 to v2.

🧡 Team Agno