This is a major release that introduces a completely new approach to building multi-agent systems. It also introduces the AgentOS, a runtime for agents. This is a major rewrite of the Agno library and introduces various new concepts and updates to the existing ones. Some of the major changes are:
  • Agents, Teams and Workflows are now fully stateless.
  • Knowledge is now a single solution that supports many forms of content.
  • Storage of sessions, memories, evals, etc. has been simplified

General Changes

Session & Run State

  • We have made significant changes to the innerworkings of Agent, Team and Workflow to make them completely stateless.
  • This means that agent_session, session_metrics, session_state, etc. should not be seen as stateful variables that would be updated during the course of a run, but rather as “defaults” for the agent if they can be set on initialisation.
  • CustomEvent is now supported and you can inherit from it to create your own custom events that can be yielded from your own tools. See the documentation for more details.

Storage

  • Agent, Team, Workflow and the various evals now all support a single db parameter. This is to enable storage for the instance of that class. This is required for persistence of sessions, memories, metrics, etc.
  • storage and memory have been removed from Agent, Team and Workflow.

Memory

  • With the above changes to storage, memory has been simplified.
  • memory has been removed from Agent and Team. Instead memory is enabled with enable_user_memories: bool (like before) and persisted in the db instance.
  • Changes to how memories are created can still be done by overriding the MemoryManager class on Agent or Team. E.g. Agent(memory_manager=MyMemoryManager()).
  • AgentMemory and TeamMemory have been removed.

Knowledge

  • Knowledge has been completely reworked. See full details in the Knowledge section.
  • You now define a single Knowledge instance for all types of content. Files (PDF, CSV, etc.), URLs, and other.
  • The agent can still use your knowledge base to search for information at runtime. All existing RAG implementations are still supported.
  • Added full async support for embedding models and vector DBs. This has a significant impact on performance and is a major speed improvement when adding content to the knowledge base using knowledge.add_content_async(...).
  • AgentKnowledge and all other knowledge base classes have been removed.
  • Import locations for embedder, document, chunking, reranker and reader have been moved to agno.knowledge. See examples for more details.

Tools updates

  • General:
    • Since Agents and Teams are now stateless, using attributes from the agent/team object inside a function will give you access to the attributes set on initialisation of that agent/team. E.g. agent.session_state should not be used, instead session_state can now be directly accessed and would have the “current” state of the session.
    • A new flow allows images, audio and video files generated during tool execution to be passed back in a FunctionExecutionResult object and this will ensure these artifacts are made available to the model and agent as needed.
  • All tools that handle media (e.g. image generation tools) now correctly add this generated media to the RunOutput, but also make it available for subsequent model calls.
  • The interface of almost all the toolkits have been updated for a more consistent experience around switching specific tools on and off. The list of changes is too long to list here. We suggest you take a look at the toolkits you use specifically and how they have been updated.
  • show_results is now True by default for all tools. If you just set stop_after_tool_call=True then show_results will be automatically set to True.
  • images, videos, audio and files are now available as parameters to tools. See the documentation for more details.

Media

Removals

  • Removed legacy artifact classes: ImageArtifact, VideoArtifact, AudioArtifact, and AudioResponse classes have been completely removed in favor of unified media classes.

New Unified Media Architecture

  • Unified Image class: Now serves all use cases (input, output, artifacts) with standardized content: Optional[bytes] field for raw image data
  • Unified Audio class: Replaces both AudioArtifact and AudioResponse with consistent byte-based content storage and additional fields like transcript, expires_at, sample_rate, and channels
  • Unified Video class: Updated to handle all video use cases with standardized content handling and metadata fields
  • Enhanced File class: Updated to work seamlessly across agent, team, workflow, and toolkit contexts

New Methods and Features

  • from_base64() class method: Added to Image, Audio, and Video classes for creating instances from base64-encoded content (automatically converts to raw bytes)
  • get_content_bytes() method: Retrieves content as raw bytes, handling loading from URLs or file paths
  • to_base64() method: Converts content to base64 string for transmission/storage
  • to_dict() method: Enhanced serialization with optional base64 content inclusion

Content Standardization

  • Byte-based storage: All media content is now stored as raw bytes (Optional[bytes]) instead of mixed string/bytes formats
  • Automatic validation: Model validators ensure exactly one content source (url, filepath, or content) is provided
  • Auto-generated IDs: Media objects automatically generate UUIDs when not provided

Logging

  • Added support for custom loggers. See the documentation for more details.

Agent updates

Team updates

Workflow updates