Agno와 Mastra — 프로덕션 런타임(Production Runtimes)
Agno(Python)와 Mastra(TypeScript)는 2026년의 프로덕션 런타임(production runtime) 조합입니다. Agno는 마이크로초(μs) 단위의 에이전트 인스턴스화(agent instantiation)와 무상태(stateless) FastAPI 백엔드(backend)를 목표로 합니다. Mastra는 Vercel AI SDK 위에서 에이전트(Agents), 도구(Tools), 워크플로(Workflows), 통합 모델 라우팅(Unified Model Routing), 합성 저장소(Composite Storage)를 함께 제공합니다.
유형: Learn
언어: Python, TypeScript
선수 학습: Phase 14 · 01 (에이전트 루프(Agent Loop)), Phase 14 · 13 (LangGraph)
소요 시간: 약 45분
학습 목표
- Agno의 성능 목표가 무엇이고, 어떤 상황에서 그 목표가 의미를 갖는지 식별합니다.
- Mastra의 세 가지 원시 요소(primitives)인 에이전트(Agents), 도구(Tools), 워크플로(Workflows)와 지원되는 서버 어댑터(server adapter)들을 말할 수 있습니다.
- 무상태 세션 범위(stateless session-scoped) FastAPI 백엔드가 Agno의 권장 프로덕션 경로인 이유를 설명합니다.
- 주어진 스택(stack)에서 Agno와 Mastra 중 무엇을 골라야 하는지 판단합니다. Python 중심인지 TypeScript 중심인지가 핵심 기준입니다.
문제
LangGraph, AutoGen, CrewAI 같은 프레임워크는 무겁습니다. "내가 쓰는 런타임 위에서, 빠르게, 그냥 에이전트 루프만" 원하는 팀은 Agno(Python)나 Mastra(TypeScript)에 손을 뻗습니다. 두 런타임 모두 프레임워크가 직접 소유하던 일부 원시 요소를 포기하는 대신, 더 빠른 실행 속도와 주변 스택에 더 단단히 들어맞는 형태를 얻는 길을 택했습니다.
개념
Agno
- Python 런타임이며, 이전 이름은 Phi-data였습니다.
- "그래프도, 체인도, 복잡한 패턴도 없이, 순수한 Python만(no graphs, chains, or convoluted patterns — just pure python)"을 지향합니다.
- 공식 문서가 제시하는 성능 목표는 에이전트 한 개를 만드는 데 약 2μs, 에이전트당 메모리 약 3.75 KiB, 약 23개의 모델 제공자(model provider) 지원입니다.
- 프로덕션 권장 경로는 무상태 세션 범위(stateless session-scoped) FastAPI 백엔드입니다. 요청이 들어올 때마다 새 에이전트를 만들고, 세션 상태는 데이터베이스(DB)에 둡니다.
- 텍스트(text), 이미지(image), 오디오(audio), 비디오(video), 파일(file)을 다루는 네이티브 멀티모달(multimodal)과 에이전트 기반 검색 증강(agentic RAG)을 기본 기능으로 제공합니다.
이 속도 목표는 짧게 살아 있는 에이전트가 초당 수천 개씩 만들어지는 상황, 예를 들어 채팅 팬인(chat fan-in)이나 평가 파이프라인(evaluation pipeline) 같은 경우에 의미가 큽니다. 반대로 하나의 에이전트가 10분 동안 한 번 도는 워크로드에서는 이 차이가 크게 영향을 주지 않습니다.
Mastra
- TypeScript 기반이며, Vercel AI SDK 위에 구축됩니다.
- 세 가지 원시 요소는 **에이전트(Agents), 도구(Tools; Zod로 타입이 지정됨), 워크플로(Workflows)**입니다.
- 통합 모델 라우터(Unified Model Router)는 2026년 3월 기준 94개 제공자에 걸친 3,300개 이상의 모델을 단일 클라이언트로 호출할 수 있게 해줍니다.
- 합성 저장소(Composite Storage)는 메모리(memory), 워크플로(workflows), 관찰성(observability)을 각각 다른 백엔드(backend)에 보낼 수 있도록 합니다. 대규모 관찰성 백엔드로는 ClickHouse가 권장됩니다.
- 라이선스는 Apache 2.0이지만,
ee/ 디렉터리는 소스 공개형 엔터프라이즈 라이선스(source-available enterprise license)에 해당합니다.
- 서버 어댑터(server adapter)로 Express, Hono, Fastify, Koa를 지원하며, Next.js와 Astro는 1급(first-class) 통합 대상입니다.
- 디버깅을 위한 Mastra Studio(localhost:4111)를 함께 제공합니다.
- 2026년 1월 1.0 시점 기준으로 GitHub 별(star) 2.2만 개 이상, 주간 npm 다운로드 30만 회 이상을 기록했습니다.
포지셔닝
두 런타임 모두 LangGraph가 되려는 것이 아닙니다. 경쟁의 축은 다음과 같습니다.
- 언어 적합성(Language fit). Python 중심 팀에는 Agno, TypeScript 중심 팀에는 Mastra가 어울립니다.
- 런타임 사용감(Runtime ergonomics). Agno는 거의 0에 가까운 오버헤드(overhead)를 목표로 하고, Mastra는 Vercel 생태계와 깊게 통합됩니다.
- 관찰성(Observability). 둘 다 Langfuse, Phoenix, Opik(24강)과 연동되지만, Mastra Studio는 Mastra가 직접 만든 1급(first-party) 도구라는 점이 차이입니다.
무엇을 언제 고를 것인가
- Agno — Python 백엔드, 수명이 짧은 에이전트가 많은 경우, 강한 성능 요구, FastAPI를 중심으로 한 팀에 적합합니다.
- Mastra — TypeScript 백엔드, Next.js / Vercel 배포, 여러 제공자에 걸친 통합 모델 라우팅(multi-provider model routing), Zod로 타입을 지정한 도구가 필요한 경우에 적합합니다.
- LangGraph(13강) — 지속 가능한 상태(durable state)와 명시적인 그래프 추론이 원시 속도보다 더 중요할 때 선택합니다.
- OpenAI / Claude Agent SDK — 제공자가 제품화해 둔 형태를 그대로 쓰고 싶을 때 선택합니다(16~17강).
이 패턴이 어긋나는 지점
- 성능을 위한 성능(Perf-for-perf's-sake). 워크로드가 요청당 느린 에이전트 호출 하나뿐인데도 "2μs"라는 숫자가 멋져 보인다는 이유만으로 Agno를 고르는 경우입니다. 이 워크로드에서는 오버헤드가 병목이 아닙니다.
- 생태계 종속(ecosystem lock-in). Mastra의 Vercel 친화적 통합은 Vercel 위에서는 강점이지만, 다른 환경에서는 오히려 단점이 됩니다.
- 엔터프라이즈 라이선스 혼동. Mastra의
ee/ 디렉터리는 소스 공개형(source-available)일 뿐 Apache 2.0이 아닙니다. 포크(fork)를 계획한다면 해당 라이선스를 반드시 읽어야 합니다.
직접 만들기
이 강의는 비교형 성격이 강합니다. 두 프레임워크를 모두 공정하게 보여주는 단일 코드 산출물을 만들기는 어렵습니다. 대신 code/main.py는 나란히 비교하는(side-by-side) 장난감 예제를 제공합니다. "에이전트를 실행하고, 출력을 스트리밍하며, 세션을 지속한다"는 최소 흐름을 두 번 구현하는데, 한 번은 Agno 형태로, 한 번은 Mastra 형태로 작성했습니다.
다음 명령으로 실행합니다.
python3 code/main.py
구조는 서로 다르지만 기능적으로는 동일한 두 개의 트레이스(trace)가 출력됩니다.
사용해보기
- Agno — 속도와 FastAPI 형태가 필요한 Python 백엔드에 사용합니다.
- Mastra — 다수의 제공자(provider)와 워크플로 원시 요소가 필요한 TypeScript 백엔드에 사용합니다.
- 두 런타임 모두 자체 제공자가 만든 1급(first-party) 관찰성 훅(observability hook)을 제공합니다. 두 런타임 모두 Langfuse와 연동됩니다.
산출물 만들기
outputs/skill-runtime-picker.md는 스택(stack), 지연 시간 예산(latency budget), 운영 형태(operational shape)를 기준으로 Agno, Mastra, LangGraph, 제공자 SDK(provider SDK) 중 무엇을 선택할지 결정합니다.
연습문제
- (쉬움) Agno 공식 문서를 읽어보세요. 표준 라이브러리만 사용한 ReAct 루프(01강)를 Agno로 옮겨봅니다. 무엇이 사라지고 무엇이 남는지 정리합니다.
- (중간) Mastra 공식 문서를 읽고 같은 루프를 Mastra로 옮깁니다. 도구 타이핑(tool typing)에서 무엇이 달라지는지, 그리고 Zod로 타입을 정의하는 것과 아예 타입이 없는 것의 차이를 설명합니다.
- (중간) 직접 벤치마크를 수행해 봅니다. 여러분의 스택에서 에이전트 인스턴스화 지연 시간을 측정하세요. Agno의 2μs라는 수치가 여러분의 워크로드에 실제로 중요한가요?
- (어려움) 마이그레이션을 설계해보세요. Python에서 CrewAI를 운영해 왔다면 Agno로 옮길 때 무엇이 깨지나요?
- (어려움) Mastra의
ee/ 라이선스 조항(license terms)을 읽어봅니다. 오픈소스 포크(fork)에 영향을 줄 만한 제한 사항은 무엇인가요?
핵심 용어
| 용어 | 흔한 설명 | 실제 의미 |
|---|
| Agno | "빠른 Python 에이전트" | 무상태 세션 범위(stateless session-scoped) 에이전트 런타임 |
| Mastra | "Vercel AI SDK 위에서 도는 TypeScript 에이전트" | 에이전트(Agents) + 도구(Tools) + 워크플로(Workflows) + 모델 라우터(Model Router) |
| 통합 모델 라우터(Unified Model Router) | "여러 제공자에 동시에 접근" | 94개 제공자에 걸친 3,300개 이상 모델을 호출하는 단일 클라이언트 |
| 합성 저장소(Composite Storage) | "여러 백엔드 사용" | 메모리, 워크플로, 관찰성을 각각 다른 저장소로 보내는 구성 |
| Mastra Studio | "로컬 디버거" | localhost:4111에서 에이전트 내부를 들여다보는 UI |
| 소스 공개형(Source-available) | "OSS가 아님" | 소스를 읽는 것은 허용하지만 상업적 사용을 제한하는 라이선스 |
더 읽을거리