Skip to content

Commit b7fce49

Browse files
authored
feat(blog): add Agno Agent Framework review post (#13)
* feat(blog): add Agno Agent Framework review post * chore(blog): remove unused image * chore: add English translations for PR #13
1 parent f26ef6b commit b7fce49

File tree

7 files changed

+722
-0
lines changed

7 files changed

+722
-0
lines changed
130 KB
Loading
107 KB
Loading
492 KB
Loading
203 KB
Loading

src/content/blog-en/agno.md

Lines changed: 341 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,341 @@
1+
---
2+
description: 'Hands-on review of the Agno Agent Framework: performance, architecture,
3+
and a minimal API for building AI agents with Memory, Knowledge (RAG), MCP, Teams,
4+
and AgentOS.'
5+
pubDate: '2026-01-01'
6+
tags:
7+
- Agno
8+
- LLMOps
9+
- Agent
10+
title: 'Agno Agent Framework Review: Fast, Minimal AI Agents'
11+
---
12+
13+
## Summary
14+
15+
This post is a hands-on review of the Agno Agent Framework, based on my own usage, focusing on its architecture, performance, and design philosophy.
16+
17+
- Agno’s emphasis on fast instantiation and memory optimization
18+
- A structure that lets you build Agents, Tools, Memory, and even a UI with minimal code
19+
- Multi-Agent (Teams), Knowledge, and Memory design patterns
20+
- The AgentOS-based runtime model and how it integrates with MCP
21+
22+
If you’ve used agent frameworks like LangGraph or CrewAI, or you’re thinking through agent infrastructure for production, this should be useful context.
23+
24+
## TL;DR
25+
26+
Agno is an AI agent framework optimized for performance and simplicity.
27+
With minimal code, you can wire up Agents, Memory, MCP, Multi-Agent, and even a UI, and it’s designed with instantiation speed and memory efficiency as first-class priorities.
28+
29+
As of January 1, 2026, Agno is a popular agent framework with about 36.5k GitHub stars. Over the last few days, I built several agents using Agno and wanted to share what I learned and how the framework is structured. With so many agent tools out there, Agno stands out as a tool worth evaluating—especially for performance and simplicity.
30+
31+
## Agno Agent Framework’s Performance Approach
32+
33+
### Benchmark results
34+
35+
According to the [performance benchmark](https://docs.agno.com/get-started/performance#results) Agno published in October 2025, results measured on an Apple M4 MacBook Pro show strong instantiation speed and memory usage compared to other agent frameworks. It includes a claim of being up to 529x faster than LangGraph-based agents, and says memory usage is also efficiently optimized.
36+
37+
![image-20260101180709381](../../../public/img/agno/image-20260101180709381.png)
38+
39+
### Questions about instantiation time
40+
41+
The benchmark measures how long it takes to instantiate an agent. In environments where servers are always running, this may not matter much. But in serverless architectures—or when you need session-scoped instantiation for security reasons—it can be an important factor. Honestly, “it’s faster” sounds great when you’re building agent systems, but in my personal view the LLM itself is so slow that you don’t always feel this difference strongly.
42+
43+
### Agno’s optimization strategy
44+
45+
Agno says it optimizes across agent performance, system performance, and reliability/accuracy. In particular, it’s designed to improve speed by making instantiation, memory space management, tool calls, memory updates, and logging more efficient. It also runs memory asynchronously to prevent system memory leaks. Another key trait is a stateless architecture designed to scale horizontally.
46+
47+
## Agno Agent Framework’s Simple Design
48+
49+
The Agno docs say you can build a complete agent with memory and state in 25 lines of code. They also emphasize how easy it is to bring up a server as a FastAPI app.
50+
51+
```python
52+
from agno.agent import Agent
53+
from agno.db.sqlite import SqliteDb
54+
from agno.models.anthropic import Claude
55+
from agno.os import AgentOS
56+
from agno.tools.mcp import MCPTools
57+
58+
# Create the Agent
59+
agno_agent = Agent(
60+
name="Agno Agent",
61+
model=Claude(id="claude-sonnet-4-5"),
62+
# Add a database to the Agent
63+
db=SqliteDb(db_file="agno.db"),
64+
# Add the Agno MCP server to the Agent
65+
tools=[MCPTools(transport="streamable-http", url="https://docs.agno.com/mcp")],
66+
# Add the previous session history to the context
67+
add_history_to_context=True,
68+
markdown=True,
69+
)
70+
71+
# Create the AgentOS
72+
agent_os = AgentOS(agents=[agno_agent])
73+
# Get the FastAPI app for the AgentOS
74+
app = agent_os.get_app()
75+
```
76+
77+
This code includes:
78+
79+
- Agent definition
80+
- LLM model selection
81+
- DB-backed history management
82+
- MCP Tool integration
83+
- FastAPI server exposure
84+
85+
Being able to build and run an agent server with so little code is one of Agno’s biggest advantages.
86+
87+
Based on the code above, let’s look at the key building blocks of an Agno agent.
88+
89+
### Choosing an LLM model
90+
91+
Choosing an LLM defines how the agent calls the model to perform its core functions. Agno supports many models via its own model wrappers, and it calls models directly rather than going through LiteLLM. You can find the supported model list in the [official docs](https://docs.agno.com/integrations/models/model-index).
92+
93+
### Defining an agent
94+
95+
Agent definition is where you set the agent’s responsibilities and behavioral guidelines. You can specify a simple name and an `instructions` prompt to clarify the agent’s role, and you can also configure a `role` for multi-agent setups.
96+
97+
```python
98+
agent = Agent(
99+
name="test_agent",
100+
model=OpenAIChat(id="gpt-5-nano"),
101+
role="You are a test agent.",
102+
instructions="You are a test agent. You are tasked with testing the agent's functionality. You will be given a task and you will need to complete it.",
103+
)
104+
```
105+
106+
### DB: History management
107+
108+
History management helps the agent remember and reuse prior conversations. Agno supports DB-backed history with very little configuration. From my experience implementing this manually in other frameworks, the fact that Agno makes history this straightforward feels like a major advantage.
109+
110+
```python
111+
Agent(...,
112+
db=SqliteDb(db_file="agno.db"),
113+
add_history_to_context=True,
114+
)
115+
```
116+
117+
### Tool integration
118+
119+
You can easily connect tools like MCP so the agent can interact with external systems.
120+
121+
```python
122+
Agent(...,
123+
tools=[MCPTools(transport="streamable-http", url="https://docs.agno.com/mcp")],
124+
)
125+
```
126+
127+
Memory and Knowledge can be added in a similarly simple way. I’ll cover those in more detail shortly.
128+
129+
## Built-in UI
130+
131+
When you run an agent, Agno provides a UI you can use immediately. After launching the server as a FastAPI app, you can connect your local port to Agno’s hosted UI at https://os.agno.com/chat.
132+
133+
```python
134+
import os
135+
136+
from settings import settings
137+
138+
os.environ["OPENAI_API_KEY"] = settings.OPENAI_API_KEY
139+
140+
from agno.models.openai import OpenAIChat
141+
from agno.tools.hackernews import HackerNewsTools
142+
from agno.os import AgentOS
143+
from agno.agent import Agent
144+
145+
agent = Agent(
146+
model=OpenAIChat(id="gpt-5-nano"),
147+
tools=[HackerNewsTools()],
148+
instructions="Write a report on the topic. Output only the report.",
149+
markdown=True,
150+
)
151+
152+
# Create the AgentOS
153+
agent_os = AgentOS(agents=[agent])
154+
# Get the FastAPI app for the AgentOS
155+
app = agent_os.get_app()
156+
```
157+
158+
If you run this with a FastAPI dev server, you can test the agent easily through the UI. This is especially useful for quickly validating an agent before production, or when you need to share results with non-developers.
159+
160+
![image-20260101225757855](../../../public/img/agno/image-20260101225757855.png)
161+
162+
## Multi-Agent Framework – Agno Teams
163+
164+
In Agno, multi-agent composition is provided as a unit called `Teams`. A Team groups multiple agents and orchestrates them based on roles. In other words, agents inside a Team can split work and collaborate based on their assigned responsibilities.
165+
166+
```python
167+
import os
168+
169+
from settings import settings
170+
171+
os.environ["OPENAI_API_KEY"] = settings.OPENAI_API_KEY
172+
173+
from agno.agent import Agent, RunOutput
174+
from agno.models.openai import OpenAIChat
175+
from agno.team import Team
176+
from agno.utils.pprint import pprint_run_response
177+
178+
# Research Agent: Gathers and analyzes information on given topics
179+
research_agent = Agent(
180+
name="Research Agent",
181+
role="Research Specialist",
182+
instructions="You are a research specialist. Gather comprehensive information, analyze data, and provide well-structured research findings on the given topic.",
183+
markdown=True,
184+
)
185+
186+
# Writer Agent: Creates content based on research findings
187+
writer_agent = Agent(
188+
name="Writer Agent",
189+
role="Content Writer",
190+
instructions="You are a professional content writer. Create engaging, well-structured content based on the research provided. Focus on clarity and readability.",
191+
markdown=True,
192+
)
193+
194+
# Create the team
195+
team = Team(
196+
name="Content Creation Team",
197+
members=[research_agent, writer_agent],
198+
model=OpenAIChat(id="gpt-5-nano"),
199+
instructions="You coordinate the research and writing process. First, delegate research tasks to the Research Agent, then pass findings to the Writer Agent for content creation.",
200+
markdown=True,
201+
)
202+
203+
# Run agent and return the response as a variable
204+
response: RunOutput = team.run("Write a 3-paragraph blog post about the benefits of multi-agent AI systems")
205+
206+
# Print the response in markdown format
207+
pprint_run_response(response, markdown=True)
208+
```
209+
210+
With a small amount of code, you can build a multi-agent setup that supports role-based delegation and collaboration.
211+
212+
![image-20260101230908515](../../../public/img/agno/image-20260101230908515.png)
213+
214+
## Knowledge & Memory – Designing Agno Agents
215+
216+
Let’s look at Memory and Knowledge, which are core components that significantly affect agent performance.
217+
218+
### Memory
219+
220+
Memory acts as context storage, allowing the agent to retain and reuse information learned during conversations or tasks. Agno provides two main memory approaches.
221+
222+
| Category | Automatic Memory | Agentic Memory |
223+
|---|---|---|
224+
| Enable option | `enable_user_memories=True` | `enable_agentic_memory=True` |
225+
| Behavior | Automatically creates, stores, and updates memories during conversation | The agent decides what to store and selectively saves only relevant information |
226+
227+
Example – Automatic Memory:
228+
229+
```python
230+
from agno.agent import Agent
231+
from agno.db.sqlite import SqliteDb
232+
233+
db = SqliteDb(db_file="agno.db")
234+
235+
agent = Agent(
236+
db=db,
237+
enable_user_memories=True,
238+
)
239+
240+
agent.print_response("My name is Sarah and I prefer email over phone calls.")
241+
agent.print_response("What's the best way to reach me?")
242+
```
243+
244+
Example – Agentic Memory:
245+
246+
```python
247+
from agno.agent import Agent
248+
from agno.db.sqlite import SqliteDb
249+
250+
db = SqliteDb(db_file="agno.db")
251+
252+
agent = Agent(
253+
db=db,
254+
enable_agentic_memory=True,
255+
)
256+
```
257+
258+
Agno supports not only SQLite but also various databases such as PostgreSQL, and of course you can manually retrieve memories.
259+
260+
```python
261+
from agno.agent import Agent
262+
from agno.db.postgres import PostgresDb
263+
264+
db = PostgresDb(
265+
db_url="postgresql://user:password@localhost:5432/my_database",
266+
memory_table="my_memory_table",
267+
)
268+
269+
agent = Agent(db=db)
270+
271+
agent.print_response("I love sushi!", user_id="123")
272+
273+
memories = agent.get_user_memories(user_id="123")
274+
print(memories)
275+
```
276+
277+
### Knowledge
278+
279+
Knowledge serves as a knowledge base built from external information or documents, and it’s primarily used to build RAG systems.
280+
281+
```python
282+
import asyncio
283+
284+
from agno.agent import Agent
285+
from agno.db.postgres.postgres import PostgresDb
286+
from agno.knowledge.embedder.openai import OpenAIEmbedder
287+
from agno.knowledge.knowledge import Knowledge
288+
from agno.vectordb.pgvector import PgVector
289+
290+
db = PostgresDb(
291+
db_url="postgresql+psycopg://ai:ai@localhost:5532/ai",
292+
knowledge_table="knowledge_contents",
293+
)
294+
295+
knowledge = Knowledge(
296+
name="Basic SDK Knowledge Base",
297+
description="Agno 2.0 Knowledge Implementation",
298+
contents_db=db,
299+
vector_db=PgVector(
300+
table_name="vectors",
301+
db_url="postgresql+psycopg://ai:ai@localhost:5532/ai",
302+
embedder=OpenAIEmbedder(),
303+
),
304+
)
305+
306+
asyncio.run(
307+
knowledge.add_content_async(
308+
name="Recipes",
309+
url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf",
310+
metadata={"user_tag": "Recipes from website"},
311+
)
312+
)
313+
314+
agent = Agent(
315+
name="My Agent",
316+
description="Agno 2.0 Agent Implementation",
317+
knowledge=knowledge,
318+
search_knowledge=True,
319+
)
320+
321+
agent.print_response(
322+
"How do I make chicken and galangal in coconut milk soup?",
323+
markdown=True,
324+
)
325+
```
326+
327+
The code above is an example from the Agno docs. The Knowledge feature can look a bit complex, but it’s impressive that you can build a RAG system with code like this.
328+
329+
## Closing thoughts
330+
331+
Agno is an agent framework with broad capabilities: fast instantiation, memory efficiency, a simple API, and multi-agent support.
332+
It’s especially well-suited for teams that want to stand up production-grade agent infrastructure quickly with minimal code.
333+
334+
Beyond the features mentioned here, the Agno Agent Framework supports a wide range of components most agent systems need.
335+
It’s unlikely you’ll get blocked due to missing features, and the framework’s strength is that it stays simple while still leaving enough room for customization.
336+
337+
It also feels natural that Agno expands this system under the concept of AgentOS.
338+
The direction is clear: it’s aiming to cover not just an SDK, but the runtime environment as well. In that same context, it also makes sense that it offers a (paid) cloud option.
339+
340+
With so many agent SDKs and frameworks emerging, it’s hard to say exactly where Agno will land long-term.
341+
Still, if you look at structure, performance, and simplicity, it’s clearly an agent framework worth paying attention to right now.

0 commit comments

Comments
 (0)