Skip to content
/

Agno

agno · agno-agi/agno · ★ 40k · last commit 2026-05-26

Primitive shape
No installable primitives
00

Summary

Agno — Summary

Agno (formerly Phidata) is a full-stack Python SDK for building and deploying production agent platforms, with 40k+ GitHub stars and backed by Y Combinator. It provides an Agent dataclass and a Team class that expose four coordination modes (coordinate, route, broadcast, tasks), enabling hierarchical multi-agent systems where teams can contain other teams. The framework ships 100+ pre-built tool integrations, pluggable vector/relational database adapters for persistent memory, MCP client support via context providers, and a production REST API runtime with SSE/WebSocket streaming, JWT-based RBAC, multi-tenant isolation, and cron scheduling — all of which can be hosted on any Docker-compatible cloud. Observability is first-class via OpenTelemetry tracing, audit logs, and a managed dashboard at app.agno.com (optional). The Agent dataclass supports fallback model chains (fallback_models, fallback_config), agentic state tools, session-state persistence, human approval gates, and an auto-improving learning machine (LearningMachine) that evolves with usage. Compared to seeds, Agno most closely resembles claude-flow in ambition (full-stack SDK, multi-agent, external memory), but differs by shipping a full production API runtime rather than just a CLI tool and MCP server.

01

Overview

Agno — Overview

Origin

Originally shipped as "Phidata" by Ashpreet Bedi (YC). Renamed to Agno in 2025 and repositioned from a tool-augmented LLM library to a full "agent platform SDK." The current README positions it as "Build, run, and manage agent platforms" — a pivot toward infra/runtime rather than just agent programming.

Philosophy

From the README:

"Build agents using any agent framework. Run them as production services with tracing, scheduling, and RBAC. Manage using a single control plane."

"Agno allows you to own your agent stack. Maintain control of your data, context, tools, permissions, memory and human-review loops."

The core philosophy: agents should be first-class production services with the same operational guarantees (auth, multi-tenancy, audit, scheduling) as any microservice.

Design pillars

  1. Framework-agnostic composition: Agent and Team classes accept model: Model objects from any provider (Anthropic, OpenAI, Google, Mistral, etc.) through a unified Model protocol.
  2. Team modes: coordinate (supervisor picks member, crafts task, synthesizes response), route (delegate to specialist and return directly), broadcast (parallel fan-out to all members), tasks (autonomous task-list decomposition until completion).
  3. Production runtime: 50+ REST endpoints, SSE + WebSocket, JWT RBAC, multi-user/multi-tenant isolation.
  4. Pluggable memory: session state in any supported DB; knowledge base via vector stores; user memory via MemoryManager.
  5. Context providers: live data from Slack, Google Drive, wikis, MCP servers, custom sources.
  6. LearningMachine: agents observe their own runs and evolve cultural knowledge (CulturalKnowledge), stored as db.schemas.culture rows.

Target audience

Teams moving AI agents from prototype to production who want a unified SDK + runtime + control-plane rather than assembling those three separately.

02

Architecture

Agno — Architecture

Distribution

  • Type: pip-package (core SDK) + optional managed cloud service
  • PyPI name: agno
  • Install: pip install agno
  • Required runtime: Python ≥ 3.10
  • License: Apache-2.0

Repository layout

libs/
  agno/agno/         # Core framework
    agent/           # Agent dataclass + run modules
    team/            # Team dataclass + TeamMode enum
    tools/           # 100+ tool integrations
    models/          # Model protocol + provider adapters
    memory/          # MemoryManager
    knowledge/       # KnowledgeProtocol
    vectordb/        # Vector store adapters
    db/              # Relational DB adapters
    session/         # AgentSession, TeamSession, WorkflowSession
    skills/          # Skills container
    hooks/           # Lifecycle hooks
    scheduler/       # Cron scheduling
    approval/        # Human approval gates
    guardrails/      # BaseGuardrail
    eval/            # BaseEval
    tracing/         # OpenTelemetry
    learn/           # LearningMachine
    workflow/        # Workflow engine
  agno_infra/        # Infrastructure helpers
cookbook/            # 500+ examples (organized by topic)

Key classes (from agent/agent.py)

  • Agent — main dataclass; fields include: model, fallback_models, fallback_config, name, id, user_id, session_id, session_state, memory, knowledge, tools, guardrails, evals, skills, hooks, approval
  • Team — wraps List[Union[Agent, Team]]; mode: TeamMode; can nest teams recursively

Team modes

class TeamMode(str, Enum):
    coordinate = "coordinate"   # supervisor pattern
    route = "route"             # router pattern
    broadcast = "broadcast"     # parallel fan-out
    tasks = "tasks"             # autonomous task decomposition

Tool ecosystem

100+ pre-built toolkit classes in agno/tools/: arxiv.py, bravesearch.py, docker.py, confluence.py, crawl4ai.py, discord.py, github.py, gmail.py, jira.py, postgres.py, slack.py, stripe.py, etc.

Memory backends

  • File-based (default)
  • PostgreSQL with pgvector
  • SQLite
  • LanceDB
  • Pinecone
  • Qdrant
  • ChromaDB
  • Neo4j

Target AI tools

Any provider via the Model protocol. Explicit adapters for: Anthropic, OpenAI, Google, Mistral, Cohere, Groq, Ollama, Amazon Bedrock, Together AI, DeepSeek, and more.

03

Components

Agno — Components

Core framework primitives

Name Type Purpose
Agent dataclass Single-agent unit; model + tools + memory + approval
Team dataclass Multi-agent container; 4 coordination modes
TeamMode enum coordinate / route / broadcast / tasks
Model protocol Abstract LLM adapter; 15+ provider implementations
FallbackConfig dataclass Error-specific model routing rules
Toolkit class Base class for tool groups; 100+ implementations
Function class Single tool (Python function → LLM-callable)
MemoryManager class Persistent memory across sessions
KnowledgeProtocol protocol Vector/graph knowledge base interface
BaseGuardrail abstract Input/output safety gates
BaseEval abstract Evaluation harness
Skills class Capability bundle for agents
LearningMachine class Auto-improving agent via cultural knowledge
CompressionManager class Token-efficient context compaction
CultureManager class Cultural knowledge storage
RunContext dataclass Per-run execution context
Registry class Agent/team registry for the runtime
AgentSession / TeamSession / WorkflowSession dataclass Typed session state

Tool categories (partial — 100+ total)

Category Example tools
Search BraveSearch, DuckDuckGo, BaiduSearch, ArXiv
Browser BrowserBase, Crawl4AI, ApifyTools
Code DockerTools, DaytonaTools
Communication Slack, Discord, GmailTools, Telegram
Productivity Confluence, Jira, ClickUp, CalCom
Data PostgreSQL, CSV, Excel
AI DALL-E, CartesiaTools, ElevenLabs
Dev BitBucket, GitHub
Cloud AWS Lambda, AWS SES

No commands, hooks, or shipped MCP servers

Agno does not ship slash-commands, Claude Code hooks, or bundled MCP servers. MCP is consumed as a ContextProvider.

Production API endpoints (runtime)

50+ REST endpoints for agent invocation, session management, memory CRUD, scheduling, RBAC — documented at docs.agno.com/runtime/serve-as-api.

05

Prompts

Agno — Prompts

System instruction pattern (from Agent dataclass)

Agent(
    model=Claude(id="claude-sonnet-4-6"),
    instructions="""You are a support agent in our bank.
Give the customer support and judge the risk level of their query.
Always be concise and accurate.""",
    ...
)

Technique: Static string instruction injected as system prompt. The Agent.instructions field accepts str, list[str], or a callable (RunContext) -> str for dynamic instructions.

Dynamic instructions pattern

@support_agent.instructions
async def add_customer_name(ctx: RunContext[SupportDependencies]) -> str:
    customer_name = await ctx.deps.db.customer_name(id=ctx.deps.customer_id)
    return f"The customer's name is {customer_name!r}"

Technique: Decorator-based dynamic instruction injection using dependency-injected RunContext. The return value is appended to the system prompt at run time.

Tool docstring as LLM description

@support_agent.tool
async def customer_balance(
        ctx: RunContext[SupportDependencies], include_pending: bool
) -> float:
    """Returns the customer's current account balance."""
    ...

Technique: Python docstring drives the LLM's description field for the tool schema. Parameter descriptions extracted from docstring → JSON Schema properties. This mirrors PydanticAI's pattern (Agno adopted it).

CLAUDE.md prompt (repo-level, for coding agents working on Agno's codebase)

## Testing Cookbooks
Apart from implementing features, your most important task will be to test 
and maintain the cookbooks in `cookbook/` directory.
> See `cookbook/08_learning/` for the golden standard.

Technique: Meta-prompt targeting coding agents (Claude Code, Codex) that work on the Agno codebase itself. Sets the golden standard as a reference example.

LearningMachine (auto-improvement prompt pattern)

The LearningMachine class stores CulturalKnowledge rows about past run patterns. These rows are injected as context in future runs, effectively making the agent's system prompt evolve based on observed usage. The exact prompt template is internal.

09

Uniqueness

Agno — Uniqueness

Differs from seeds

Most similar to claude-flow in scope (both are full-stack SDK + runtime + multi-agent), but with three decisive differences: (1) Agno targets any LLM provider via a typed Model protocol while claude-flow is strongly Claude-oriented; (2) Agno ships a production REST API runtime with JWT RBAC and multi-tenancy as first-class features — claude-flow is a CLI tool + MCP server without a production API layer; (3) Agno's team modes include a broadcast (parallel fan-out to all members simultaneously) that has no equivalent in the seeds. Compared to BMAD-METHOD, which also does multi-agent via persona-md files and LangGraph, Agno uses code-class definitions (Agent/Team dataclasses) not markdown personas. The LearningMachine + CultureManager auto-improvement loop has no equivalent in any seed.

Positioning

Agno targets the gap between "LangChain experiment" and "production microservice." It aims to be the runtime layer that makes an agent deployable, observable, and multi-tenant — a position no seed occupies explicitly.

Distinctive features

  1. Four team modes — the only framework in this batch with a typed enum of multi-agent coordination patterns
  2. LearningMachine — agents observe their own runs and store cultural knowledge; future runs are influenced by past behavior
  3. 50+ REST API endpoints — more than any seed or peer in this batch
  4. Fallback model routingfallback_config allows error-type-specific model fallback (e.g., switch to Gemini on Anthropic rate limit)
  5. Human approval gates — built-in pause-and-resume for tool calls requiring approval

Observable failure modes

  1. Complexity overhead: 40+ constructor fields on Agent — production configuration requires careful management
  2. Cloud dependency for full observability: the monitoring dashboard is managed, not self-hosted
  3. No isolation: no container or worktree per agent run — all agents share the host filesystem
  4. Token cost: context providers + knowledge base + session history can result in very large system prompts
  5. Rename churn: formerly Phidata; some cookbook examples and community posts reference old package name
04

Workflow

Agno — Workflow

Simple agent workflow

Phase Artifact
1. Instantiate Agent(model=..., tools=[...]) Agent object
2. Call agent.run("prompt") or agent.run_sync(...) RunOutput
3. Access result.content or result.tool_calls Final response

Team workflow (coordinate mode)

Phase Artifact
1. Define member agents List[Agent]
2. Instantiate Team(members=[...], mode=TeamMode.coordinate) Team object
3. Call team.run("objective") TeamRunOutput
4. Team leader decomposes, delegates, synthesizes Member responses merged

Tasks mode (autonomous)

Phase Artifact
1. Define Team(mode=TeamMode.tasks) Team with shared task list
2. team.run(goal) Leader creates task list
3. Tasks delegated to members until all complete Completed task list
4. Final synthesis TeamRunOutput

Human approval gate

agent = Agent(
    approval=HumanApproval(
        tools_requiring_approval=["execute_sql", "send_email"]
    )
)

Agent pauses and emits an approval request event over SSE/WebSocket; resumes on confirmation.

Scheduling

agent = Agent(scheduler=CronScheduler(cron="0 9 * * *"))

Built-in cron scheduler; no external infrastructure required.

Memory workflow

  1. Agent run stores messages in AgentSession (DB-backed)
  2. MemoryManager.summarize() compacts old messages to summary
  3. On next run, session is loaded from DB
  4. Cross-session summaries are used as context

Approval gates count

1 (human approval gate; optional, tool-specific)

06

Memory Context

Agno — Memory & Context

Memory architecture

Agno has four distinct memory layers:

Layer Class Scope Storage
Run state RunContext.state Single run In-memory
Session state AgentSession.session_state Session lifetime DB-backed
User memory MemoryManager Per user, cross-session DB-backed
Knowledge base KnowledgeProtocol Global / per agent Vector DB

Session state

Agent(
    session_state={"task_list": [], "user_preferences": {}},
    add_session_state_to_context=True,   # inject into system prompt
    enable_agentic_state=True,           # give agent tools to update state
)

Session state persists to the configured database (PostgreSQL, SQLite, etc.). The agent can be given tools (enable_agentic_state=True) to update its own state during a run.

Memory compaction

CompressionManager handles token-efficient context compaction. When message history exceeds a threshold, old messages are summarized and stored as a SessionSummary. Future runs load the summary rather than raw messages.

Cross-session handoff

cross_session_handoff: yes — session summaries (SessionSummary) enable semantic continuity across sessions. The session ID is persistent; on reconnect, the agent loads the summary.

Knowledge base

KnowledgeProtocol implementations:

  • Vector stores: LanceDB, Pinecone, Qdrant, ChromaDB, pgvector
  • Hybrid search: vector + full-text
  • Graph: Neo4j

Context providers

Live data from Slack, Google Drive, wikis, custom sources, and MCP servers is injected as context before each run.

State files

Framework writes to configured DB; no fixed file paths. Default: in-memory SQLite for development, PostgreSQL for production.

Audit log

OpenTelemetry traces are emitted for every run. Run history is queryable via the runtime API and visible in app.agno.com dashboard.

07

Orchestration

Agno — Orchestration

Multi-agent

Yes. Team class supports nested teams: Team(members=[agent1, agent2, Team([agent3, agent4])]).

Orchestration patterns (TeamMode)

Mode Pattern Description
coordinate hierarchical Leader picks member, crafts task, synthesizes
route sequential Router delegates to one specialist; returns directly
broadcast parallel-fan-out Leader sends same task to all members simultaneously
tasks task-decomposition-tree Leader decomposes goal into shared task list; members claim + complete

Max concurrent agents

Unknown (limited by asyncio event loop and provider rate limits; no hard cap in SDK).

Isolation mechanism

None in the SDK itself — no containers, no worktrees. Production isolation is achieved via the runtime's JWT RBAC and multi-tenant DB schemas.

Multi-model

Yes. Agent fields:

  • model: primary model
  • fallback_models: list of fallback models tried on failure
  • fallback_config: error-specific routing (e.g., route RateLimitError to a different provider)

No predefined model-role mapping (planner/executor) in the SDK; user defines roles via team structure.

Execution mode

interactive-loop (streaming) and one-shot (synchronous) both supported. Production runtime runs as a web service with SSE event stream.

Crash recovery

Session state persisted to DB; on restart, the agent reloads session and can resume from last known state.

Context compaction

Yes — CompressionManager + SessionSummaryManager handles token overflow.

Consensus

None. Team coordination is hierarchical (leader decides), not consensus-based.

Prompt chaining

Yes — TeamMode.tasks creates a task list where each completed task's output feeds the next task's context, forming an implicit chain.

Streaming output

Yes — SSE and WebSocket streaming from the production runtime.

08

Ui Cli Surface

Agno — UI & CLI Surface

CLI binary

Unknown — no explicit bin/ entry found in the public repo. The agno Python package may expose a CLI via entry_points; the CLAUDE.md references ./scripts/dev_setup.sh and ./scripts/format.sh but these are developer scripts, not a public CLI.

Local UI / dashboard

Managed cloud dashboard at app.agno.com (not self-hosted). The README shows a screenshot of a dark-themed monitoring UI with agent run history, trace view, and performance metrics. A self-hosted version of the control plane is documented as available but the source is not in the public repo.

IDE integration

The repo ships:

  • CLAUDE.md — instructions for Claude Code working on the Agno codebase
  • AGENTS.md — parallel instructions for Codex/OpenAI agents
  • .cursorrules — Cursor IDE coding conventions

The MCP docs server (docs.agno.com/mcp) exposes Agno documentation as an MCP server, usable in Claude Code, Cursor, Windsurf via MCP config.

Production REST API

50+ endpoints for:

  • Agent invocation (sync, streaming)
  • Session management (create, read, update, delete)
  • Memory operations
  • Knowledge base queries
  • Scheduling (create/cancel cron jobs)
  • RBAC (users, roles, permissions)

Observability

  • OpenTelemetry: all runs emit OTEL traces
  • Run history: queryable via API
  • Audit logs: yes (OpenTelemetry-based)
  • Human approval events: streamed over SSE/WebSocket
  • External platforms: Langfuse, Helicone, and any OTEL-compatible collector

Interfaces

Agents can be exposed via:

  • Slack (built-in integration)
  • Telegram
  • WhatsApp
  • Discord
  • AG-UI protocol
  • A2A (Agent-to-Agent) protocol

Related frameworks

same archetype · same primary tool · same memory type

Claude-Flow / Ruflo ★ 55k

Eliminates single-agent context limits and sequential bottlenecks by orchestrating fault-tolerant swarms of specialized AI agents…

Hermes Agent (NousResearch) ★ 168k

Self-improving personal AI agent with closed learning loop, 7 terminal backends, and messaging gateway — not tied to any AI…

OpenCode ★ 165k

Terminal-first AI coding agent with multi-model routing, native desktop app, and a typed .opencode/ configuration system for…

OpenHands ★ 75k

Open-source AI software development platform (open-source Devin alternative) with Docker sandbox isolation, 77.6% SWE-bench…

DeerFlow ★ 70k

Long-horizon superagent that researches, codes, and creates by orchestrating parallel sub-agents with isolated contexts in Docker…

oh-my-openagent (omo) ★ 60k

Multi-provider AI agent orchestration for OpenCode: escape vendor lock-in by routing Sisyphus (Claude/Kimi/GLM) and Hephaestus…