Agent runtimes: Agno & Mastra
The first agent frameworks were orchestration libraries you wire together. A newer class — agent runtimes — ships the whole production stack (model, memory, tools, RAG, workflows, evals, deploy) as one batteries-included package, optimized for speed and a language ecosystem. Agno for Python, Mastra for TypeScript.
What you'll learn
- What an agent runtime bundles, versus an orchestration library
- Agno — the fast, batteries-included Python runtime
- Mastra — the TypeScript runtime for the web/JS ecosystem
- How to choose — by language ecosystem and by lightweight vs full-stack
Before you start
The first wave of agent frameworks — LangChain, LangGraph, AutoGen, CrewAI — are orchestration libraries: powerful, but you assemble the pieces (model client, memory store, tool layer, RAG, evals) yourself. A newer class, agent runtimes, takes a different stance: ship the whole production stack as one batteries-included package, optimized for speed and tightly integrated with a single language ecosystem. Two lead it — Agno for Python, Mastra for TypeScript.
What a runtime bundles
The selling point is that everything you’d otherwise wire together comes in the box, with one consistent API:
Agno — the fast Python runtime
Agno is Python-native and obsessed with performance: agents instantiate in microseconds with a tiny per-agent memory footprint, so you can run many at once. It’s model-agnostic and comes with built-in memory, knowledge (vector RAG), tools, structured output, multi-modal support, and agent teams — define an agent in a few lines and the stack is already there.
# Reference — runs locally with `pip install agno`, not in the browser.
from agno.agent import Agent
from agno.models.anthropic import Claude
from agno.tools.duckduckgo import DuckDuckGoTools
agent = Agent(
model=Claude(id="claude-sonnet-4-6"),
tools=[DuckDuckGoTools()], # tools, memory, knowledge are built in
markdown=True,
)
agent.print_response("Summarize this week's agent-framework news.")
Mastra — the TypeScript runtime
Mastra brings agents to the JavaScript/TypeScript world — Node, Next.js, serverless — where most web products actually live. It bundles agents, deterministic graph workflows, RAG, evals, memory, and observability, and slots into the web/serverless deploy story (e.g. Vercel). For a full-stack team already in TypeScript, it removes the “now drop into a separate Python service for the agent” friction.
// Reference — part of a TypeScript/Node project, not runnable here.
import { Agent } from "@mastra/core/agent";
import { anthropic } from "@ai-sdk/anthropic";
export const researchAgent = new Agent({
name: "research-agent",
instructions: "Research a topic and summarize the findings.",
model: anthropic("claude-sonnet-4-6"),
tools: { /* web search, retrieval, ... */ },
});
Choosing one
In one breath
- Agent runtimes ship the whole production stack — model, memory, tools, RAG, workflows, evals, deploy — as one batteries-included package tuned for speed and a language, versus orchestration libraries you assemble yourself.
- Agno is the Python runtime: performance-obsessed (microsecond agent creation, tiny footprint), model-agnostic, with built-in memory/knowledge/tools/teams.
- Mastra is the TypeScript runtime: agents + graph workflows + RAG + evals + memory + observability, native to the JS/Node/Next.js web ecosystem.
- Choose by ecosystem and shape: Python and lightweight speed → Agno; a TypeScript web/serverless product → Mastra.
- The boundary with orchestration libraries is bundling, not capability — and it’s blurring as both sides converge.
Quick check
Quick check
Next
Agent runtimes are one corner of the framework landscape; compare the conversational AutoGen, the graph-based LangGraph, and the role-based CrewAI, all sitting on the framework-agnostic orchestration patterns.