[{"data":1,"prerenderedAt":799},["ShallowReactive",2],{"blog-mastra-de":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":22,"sources":29,"cover":62,"og":63,"expertise":64,"locales":65,"lang":67,"title":69,"description":70,"coverAlt":71,"metaTitle":72,"takeaways":73,"faq":79,"toc":92,"blocks":117,"others":529},"mastra","2026-07-15",11,"agents",[9,10,11,12,13],"TypeScript","Agent framework","Workflows","MCP","Evals",[15,16,17,18,19,20,21],"mastra ai framework","mastra vs langgraph","typescript agent framework","mastra agent framework review","mastra workflows and memory","mastra mcp server","mastra pricing",[23,26],{"name":24,"url":25},"Mastra","https:\u002F\u002Fmastra.ai",{"name":27,"url":28},"Mastra on GitHub","https:\u002F\u002Fgithub.com\u002Fmastra-ai\u002Fmastra",[30,33,36,39,42,45,48,51,54,57,59],{"title":31,"url":32},"Mastra documentation: agents","https:\u002F\u002Fmastra.ai\u002Fdocs\u002Fagents\u002Foverview",{"title":34,"url":35},"Mastra documentation: workflows","https:\u002F\u002Fmastra.ai\u002Fdocs\u002Fworkflows\u002Foverview",{"title":37,"url":38},"Mastra documentation: memory","https:\u002F\u002Fmastra.ai\u002Fdocs\u002Fmemory\u002Foverview",{"title":40,"url":41},"Mastra documentation: MCP","https:\u002F\u002Fmastra.ai\u002Fdocs\u002Ftools-mcp\u002Fmcp-overview",{"title":43,"url":44},"Mastra documentation: guardrails","https:\u002F\u002Fmastra.ai\u002Fdocs\u002Fagents\u002Fguardrails",{"title":46,"url":47},"Mastra documentation: evals","https:\u002F\u002Fmastra.ai\u002Fdocs\u002Fevals\u002Foverview",{"title":49,"url":50},"Mastra documentation: observability","https:\u002F\u002Fmastra.ai\u002Fdocs\u002Fobservability\u002Foverview",{"title":52,"url":53},"Mastra documentation: model providers","https:\u002F\u002Fmastra.ai\u002Fmodels",{"title":55,"url":56},"Mastra pricing","https:\u002F\u002Fmastra.ai\u002Fpricing",{"title":58,"url":28},"mastra-ai\u002Fmastra on GitHub",{"title":60,"url":61},"Mastra Enterprise Edition License v2.0","https:\u002F\u002Fgithub.com\u002Fmastra-ai\u002Fmastra\u002Fblob\u002Fmain\u002Fee\u002FLICENSE","\u002Fimages\u002Fblog\u002Fmastra\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fmastra\u002Fog.jpg","ai-engineer",[66,67,68],"en","de","hu","Mastra im Test: TypeScript-Agenten mit echter Evaluationsschleife","Mastra bündelt Agenten, Workflows, Memory, MCP, Guardrails, Tracing und Evals in einem TypeScript-Framework. Was der Apache-2.0-Kern abdeckt, was die ee\u002F-Teilung kostet und wer einsteigen sollte.","Sieben kleine Module in einem großen Rahmen, ein Eckabschnitt ist abgetrennt.","Mastra: TypeScript-Agenten im Test · Balázs Csorba",[74,75,76,77,78],"Mastra ist das vollständigste TypeScript-Agentenframework in einem Repository: Agenten, Workflows, Memory, MCP-Server-Autorisierung, Guardrails, Tracing und Evals, Apache-2.0 für alles außerhalb der ee\u002F-Verzeichnisse.","Die Lizenz hat eine kommerzielle Kante. Code unter ee\u002F - derzeit Auth, der Agent Builder und der Editor - ist quelloffen verfügbar, und für den Produktivbetrieb braucht es sowohl einen Vertrag als auch einen Lizenzschlüssel.","Das Framework bewegt sich schnell: 99 Releases von @mastra\u002Fcore in den 30 Tagen bis 7. Oktober 2026, exakte Versionen zu pinnen und Evals in der CI zu fahren ist also Pflicht.","Die eigentliche Stärke ist die Schleife zwischen Code, Traces und Evals, nicht der Agenten-Loop selbst, der Commodity ist; Studio-Time-Travel und Experimente halten Teams auf der bezahlten Plattform.","Gegenüber LangGraph.js und dem Vercel AI SDK besitzt Mastra mehr Laufzeitumgebung und verlangt mehr Abhängigkeiten: @mastra\u002Fcore allein zieht 30 direkte Abhängigkeiten.",[80,83,86,89],{"q":81,"a":82},"Ist Mastra Open Source?","Größtenteils. Der Kern und der weitaus größte Teil des Monorepos stehen unter Apache-2.0 und werden als @mastra\u002Fcore veröffentlicht, das am 7. Oktober 2026 bei 1.75.0 stand. Verzeichnisse namens ee\u002F - @mastra\u002Fcore\u002Fauth\u002Fee, @mastra\u002Fcore\u002Fagent-builder\u002Fee und @mastra\u002Feditor\u002Fee - sind quelloffen zugänglich unter der Mastra Enterprise Edition License, die Entwicklung und Tests erlaubt, aber keinen Produktivbetrieb ohne Lizenzschlüssel und schriftlichen Vertrag.",{"q":84,"a":85},"Wie verhält sich Mastra zu LangGraph.js?","LangGraph.js ist eine Graph-Laufzeit mit dauerhafter Ausführung und Zustand, steht unter MIT und hat mehr wöchentliche Downloads: 4,55 Millionen gegenüber 2,23 Millionen für @mastra\u002Fcore in der Woche bis 4. Oktober 2026. Mastra bündelt dafür mehr um den Agenten herum, mit Memory, Guardrails, MCP-Server-Autorisierung, Tracing, Evals und einer gehosteten Plattform. Die Wahl hängt daran, ob die Graph-Primitives oder die umgebende Produktoberfläche fehlen.",{"q":87,"a":88},"Unterstützt Mastra MCP?","In beide Richtungen. MCPClient verbindet sich mit MCP-Servern über stdio und Streamable HTTP, mit requireToolApproval als Gate und allowedHosts zur Einschränkung ausgehender Hosts. MCPServer stellt Mastra-Agenten, Tools, Workflows, Prompts und Ressourcen unter \u002Fapi\u002Fmcp\u002F:serverId\u002Fmcp bereit und spricht die Revision 2026-07-28 des Protokolls.",{"q":90,"a":91},"Was kostet Mastra?","Das Framework ist kostenlos. Die gehostete Plattform nennt eine kostenlose Starter-Stufe mit 100k Observability-Events, 24 CPU-Stunden und 15 Tagen Aufbewahrung, eine Teams-Stufe für 250 USD pro Monat mit 1 Mio. Events, 250 CPU-Stunden, 6 Monaten Aufbewahrung, SSO und SOC-2-Dokumentation sowie eine individuelle Enterprise-Stufe. Eine dauerhaft laufende Instanz kostet zusätzlich 100 USD pro Projekt, und das Model Gateway legt 5,5 Prozent auf die Marktpreise der Token.",[93,96,99,102,105,108,111,114],{"id":94,"title":95},"what-it-is","Was Mastra tatsächlich ist",{"id":97,"title":98},"how-it-works","Wie es funktioniert",{"id":100,"title":101},"getting-started","Erste Schritte",{"id":103,"title":104},"observability-and-evals","Observability und Evals sind das eigentliche Produkt",{"id":106,"title":107},"pricing-and-licensing","Preise und die Lizenzteilung",{"id":109,"title":110},"where-it-shingles","Wo es hakt",{"id":112,"title":113},"verdict","Fazit",{"id":115,"title":116},"sources","Quellen",[118,122,130,133,167,207,208,242,248,256,260,275,277,297,298,301,303,317,324,325,333,355,358,359,362,401,404,409,410,413,467,470,471,474,486,492,493],{"type":119,"content":120},"paragraph",[121],"Mastra ist ein TypeScript-Framework für LLM-Agenten und eines der vollständigsten: Agenten, Workflow-Engine, Memory, MCP-Server-Autorisierung, Guardrails, Tracing, Evals und eine gehostete Plattform in einem Repository. Die Position hier ist eindeutig. Mastra ist der am besten unterstützte Weg, einen Agenten in eine bestehende Node- oder Next.js-Codebasis zu bringen, und die falsche Wahl für ein Python-Team oder für eine Gruppe, die nur den Tool-Calling-Loop braucht.",{"type":119,"content":123},[124,125,129],"Es liegt über der Modellschicht und unterhalb der Anwendung: Modelle gehen als ",{"tag":126,"children":127},"code",[128],"provider\u002Fmodel","-Strings hinein, und das Framework übernimmt den Agenten-Loop, den Workflow-Graphen, den Thread-Zustand und die Traces. Die direkten Wettbewerber sind LangGraph.js, das Vercel AI SDK, das OpenAI Agents SDK und neuere Einträge wie VoltAgent. Der Unterschied liegt nicht im Loop, der ist Commodity, sondern darin, wie viel der umgebenden Laufzeitumgebung jedes Framework bereit ist zu übernehmen.",{"type":131,"level":132,"id":94,"text":95},"heading",2,{"type":119,"content":134},[135,136,139,140,143,144,143,147,143,150,143,153,143,156,159,160,162,163,166],"Mastra ist ein Monorepo aus gescopeten npm-Paketen, nicht eine einzelne Bibliothek. Der Kern ist ",{"tag":126,"children":137},[138],"@mastra\u002Fcore",", alles andere hängt daran: ",{"tag":126,"children":141},[142],"@mastra\u002Fmemory",", ",{"tag":126,"children":145},[146],"@mastra\u002Flibsql",{"tag":126,"children":148},[149],"@mastra\u002Fpg",{"tag":126,"children":151},[152],"@mastra\u002Fobservability",{"tag":126,"children":154},[155],"@mastra\u002Fevals",{"tag":126,"children":157},[158],"@mastra\u002Fmcp"," und der Rest. Die ",{"tag":126,"children":161},[24],"-Klasse in ",{"tag":126,"children":164},[165],"src\u002Fmastra\u002Findex.ts"," ist das Registry-Objekt, das Agenten, Workflows, Storage, Logging und Observability verdrahtet, und aus ihr bezieht jeder andere Teil des Frameworks seine Dienste.",{"type":168,"ordered":169,"items":170},"list",false,[171,177,182,187,192,197,202],[172,176],{"tag":173,"children":174},"strong",[175],"Lizenz",": Apache-2.0 für alles außerhalb der ee\u002F-Verzeichnisse, darin quelloffen unter der Mastra Enterprise Edition License.",[178,181],{"tag":173,"children":179},[180],"Reife",": @mastra\u002Fcore stand am 7. Oktober 2026 bei 1.75.0; das Repository zeigt 28,6k Sterne und 2,9k Forks, die erste Version erschien im Oktober 2024.",[183,186],{"tag":173,"children":184},[185],"Verbreitung",": 2,23 Millionen npm-Downloads für @mastra\u002Fcore in der Woche bis 4. Oktober 2026, gegenüber 4,55 Millionen für @langchain\u002Flanggraph und 34,5 Millionen für das ai-Paket von Vercel.",[188,191],{"tag":173,"children":189},[190],"Release-Tempo",": 99 Releases von @mastra\u002Fcore in den 30 Tagen bis 7. Oktober 2026 und 301 in 90 Tagen, von insgesamt 1.656 seit Oktober 2024.",[193,196],{"tag":173,"children":194},[195],"Laufzeit",": Node 22.18 oder neuer, mit einem Hono-basierten Server, Deployern für Vercel, Netlify und Cloudflare oder jedem eigenen HTTP-Host.",[198,201],{"tag":173,"children":199},[200],"Modellzugriff",": ein Model Router, der einen provider\u002Fmodel-String auflöst, 213 Anbieter und 7.790 Modelle listet, Fallback-Ketten pro Modell unterstützt und den Anbieterschlüssel aus der Umgebung liest.",[203,206],{"tag":173,"children":204},[205],"Typen",": Zod, Valibot oder ArkType über Standard JSON Schema für Tools, Workflow-Schritte und strukturierte Ausgabe.",{"type":131,"level":132,"id":97,"text":98},{"type":119,"content":209},[210,211,214,215,218,219,222,223,143,226,143,229,218,232,235,236,241],"Zwei Primitive tragen die meiste Last. Ein ",{"tag":126,"children":212},[213],"Agent"," bindet Modell, Instruktionen und Tools und iteriert, bis das Modell eine endgültige Antwort oder eine Stop-Bedingung liefert. Ein Workflow aus ",{"tag":126,"children":216},[217],"createStep"," und ",{"tag":126,"children":220},[221],"createWorkflow"," mit ",{"tag":126,"children":224},[225],".then()",{"tag":126,"children":227},[228],".branch()",{"tag":126,"children":230},[231],".parallel()",{"tag":126,"children":233},[234],".commit()"," ist der deterministische Pfad für Prozesse mit bekannter Reihenfolge. Die Dokumentation ist eindeutig: Für eine definierte Pipeline ist der zweite Weg richtig, für offene Aufgaben der erste, was der Aufteilung in ",{"tag":237,"to":238,"children":239},"link","\u002Fblog\u002Fagent-loop-explained",[240],"den erklären Agent Loop"," entspricht.",{"type":243,"src":244,"alt":245,"wide":246,"caption":247},"image","\u002Fimages\u002Fblog\u002Fmastra\u002Fdiagram-7.webp","Mastra runtime: agent path, workflow path, observability A request reaches an agent, which calls a tool and a model in a loop. Below it sit workflow steps, memory and storage. Every run is traced into spans, logs and metrics that go to Mastra storage or to OpenTelemetry-compatible backends.",true,"Die Mastra-Laufzeit: ein Agent loopt über Tools und Modell, darunter liegen Workflow-Schritte und Memory, und jeder Lauf wird getract.",{"type":119,"content":249},[250,251,255],"Um diese beiden Primitive herum liegen die Teile, die einen Agenten produktionsfähig halten. Memory zerfällt in Nachrichtenhistorie, Working Memory, semantische Erinnerung und Observational Memory, bei der Hintergrund-Agenten ältere Turns zu Beobachtungen komprimieren, bevor das Kontextfenster voll ist. Storage ist austauschbar über LibSQL, Postgres, ClickHouse, MongoDB, MSSQL und DuckDB, und dieselbe Engine trägt Suspend und Resume bei Workflows. Ein Workflow kann damit auf eine menschliche Freigabe warten und Stunden später weiterlaufen, wie in ",{"tag":237,"to":252,"children":253},"\u002Fblog\u002Fhuman-in-the-loop-ai-agents",[254],"Human-in-the-the-loop-Mustern"," beschrieben.",{"type":131,"level":257,"id":258,"text":259},3,"mcp-support","MCP-Unterstützung ist das Unterscheidungsmerkmal",{"type":119,"content":261},[262,263,266,267,270,271,274],"Mastra ist eines der wenigen Frameworks, die MCP sowohl konsumieren als auch bereitstellen. ",{"tag":126,"children":264},[265],"MCPClient"," verbindet sich mit Servern über stdio oder Streamable HTTP, ",{"tag":126,"children":268},[269],"MCPServer"," stellt Mastra-Agenten, Tools, Workflows, Prompts und Ressourcen anderen Systemen zur Verfügung. Registrierte Server laufen unter ",{"tag":126,"children":272},[273],"\u002Fapi\u002Fmcp\u002F:serverId\u002Fmcp"," und sprechen die Revision 2026-07-28 des Protokolls, sodass ein Team mit internen Tools hinter einem MCP-Server den Agenten anschließen kann, ohne eine Integrationsschicht zu bauen.",{"type":126,"code":276},"import { Agent } from '@mastra\u002Fcore\u002Fagent'\nimport { Mastra } from '@mastra\u002Fcore\u002Fmastra'\nimport { MCPServer, MCPClient } from '@mastra\u002Fmcp'\n\n\u002F\u002F Expose Mastra primitives to other agents and systems\nconst mcpServer = new MCPServer({\n  id: 'support-mcp',\n  name: 'Support tools',\n  version: '1.0.0',\n  agents: { supportAgent },\n  tools: { refundTool },\n  workflows: { triage },\n})\n\n\u002F\u002F Consume remote MCP tools, gating the destructive ones\nconst client = new MCPClient({\n  servers: {\n    jira: {\n      url: new URL('https:\u002F\u002Fjira.example.com\u002Fmcp'),\n      requireToolApproval: ({ toolName }) => toolName.startsWith('delete_'),\n    },\n  },\n})\n\nconst assistant = new Agent({\n  id: 'assistant',\n  name: 'Assistant',\n  instructions: 'Answer from the available tools and cite the source.',\n  model: 'anthropic\u002Fclaude-sonnet-4-6',\n  tools: await client.listTools(),\n})\n\nexport const mastra = new Mastra({\n  agents: { assistant },\n  mcpServers: { mcpServer },\n})",{"type":119,"content":278},[279,280,283,284,287,288,291,292,296],"Die Sicherheitsdefaults sind besser als der Durchschnitt. ",{"tag":126,"children":281},[282],"requireToolApproval"," sperrt Tools nach Name oder Argumenten, stdio-Subprozesse erben nur eine kuratierte Umgebungsliste, sofern nicht ",{"tag":126,"children":285},[286],"inheritDefaultEnv"," gesetzt ist, ",{"tag":126,"children":289},[290],"allowedHosts"," begrenzt ausgehende HTTP-Hosts, und die Doku rät, Annotations von Servern, die man nicht kontrolliert, als nicht vertrauenswürdige Hinweise zu behandeln. Tool-Ergebnisse bleiben unvertrauenswürdige Modelleingaben, weshalb die Guardrail-Prozessoren und nicht die MCP-Schicht diesen Inhalt bereinigen müssen, wie in ",{"tag":237,"to":293,"children":294},"\u002Fblog\u002Fprompt-injection-lethal-trifecta-patterns",[295],"den Injektionsmustern",".",{"type":131,"level":132,"id":100,"text":101},{"type":119,"content":299},[300],"npm create mastra@latest erzeugt ein Projekt mit dem src\u002Fmastra-Layout, einem Dev-Server, Studio und einem Deployer. Die kleinste nützliche Oberfläche ist klein: ein Tool, ein Agent, eine Registry.",{"type":126,"code":302},"\u002F\u002F src\u002Fmastra\u002Ftools\u002Fstock-price.ts\nimport { createTool } from '@mastra\u002Fcore\u002Ftools'\nimport { z } from 'zod'\n\nexport const stockPrice = createTool({\n  id: 'stock-price',\n  description: 'Latest price for a ticker symbol',\n  inputSchema: z.object({ symbol: z.string().describe('Ticker, for example INGY') }),\n  outputSchema: z.object({ symbol: z.string(), price: z.number() }),\n  execute: async ({ symbol }) => ({ symbol, price: await quote(symbol) }),\n})\n\n\u002F\u002F src\u002Fmastra\u002Findex.ts\nimport { Mastra } from '@mastra\u002Fcore'\nimport { Agent } from '@mastra\u002Fcore\u002Fagent'\nimport { LibSQLStore } from '@mastra\u002Flibsql'\nimport { stockPrice } from '.\u002Ftools\u002Fstock-price'\n\nexport const agent = new Agent({\n  id: 'research',\n  name: 'Research agent',\n  instructions: 'Look prices up with the tool. Never guess a number.',\n  model: 'anthropic\u002Fclaude-sonnet-4-6',\n  tools: { stockPrice },\n})\n\nexport const mastra = new Mastra({\n  agents: { agent },\n  storage: new LibSQLStore({ id: 'mastra', url: 'file:.\u002Fmastra.db' }),\n})\n\n\u002F\u002F run.ts - Node 22.18 and later run TypeScript directly\nconst answer = await mastra.getAgentById('research').generate('INGY price')\nconsole.log(answer.text, answer.usage)",{"type":119,"content":304},[305,306,309,310,312,313,316],"Zwei Details überraschen Neulinge. Agenten besser über ",{"tag":126,"children":307},[308],"mastra.getAgentById()"," auflösen statt direkt zu importieren, denn ein direkter Import läuft zwar, verfehlt aber Storage, Logger und Telemetrie der Instanz, und solche Läufe fehlen in den Traces. Und der Modell-String ist das Router-Format ",{"tag":126,"children":311},[128],", gelesen aus einer Umgebungsvariablen wie ",{"tag":126,"children":314},[315],"ANTHROPIC_API_KEY",", und kein Provider-Objekt.",{"type":318,"variant":319,"title":320,"body":321},"callout","warn","Erst die Version pinnen",[322],[323],"In einem einzigen Monat erschienen 99 Releases von @mastra\u002Fcore. Ein ungepinter Bereich in der package.json ist ein geplanter Ausfall. Also exakte Versionen pinnen, die Evals beim Upgrade laufen lassen und einen Renovate- oder Dependabot-PR-Flow nutzen, statt zu mergen, was das Register gerade ausliefert.",{"type":131,"level":132,"id":103,"text":104},{"type":119,"content":326},[327,328,332],"Hier liegt der Teil, der das Framework begründet und nicht der Agenten-Loop. Jeder Agentenlauf, jeder Workflow-Schritt, jeder Tool- und Modellaufruf erzeugt einen Span, und Exporter schreiben diese Spans in den Mastra-Storage oder in jedes OpenTelemetry-kompatible Backend, mit benannten Integrationen für Langfuse, Arize Phoenix und Datadog. Metriken werden ohne zusätzliche Instrumentierung aus den Spans abgeleitet, und Studio ergänzt Graphansicht, Time Travel zum erneuten Abspielen eines einzelnen Schritts und einen Experiment-Tab. Teams, die das mit ",{"tag":237,"to":329,"children":330},"\u002Fblog\u002Fagent-observability-opentelemetry",[331],"OpenTelemetry-Tracing"," von Hand gebaut haben, erkennen die Form wieder.",{"type":168,"ordered":169,"items":334},[335,340,345,350],[336,339],{"tag":173,"children":337},[338],"Tracing und Logging",": Spans plus strukturierte Logs, korreliert über Trace- und Span-ID, sodass ein Logeintrag direkt zum Lauf führt, der ihn erzeugt hat.",[341,344],{"tag":173,"children":342},[343],"Metriken",": Tokenzahlen, Latenz und Kostenschätzungen beim Schließen eines Spans; die Aggregation braucht einen analytisch fähigen Store wie DuckDB, ClickHouse oder Postgres.",[346,349],{"tag":173,"children":347},[348],"Scorer",": vorgefertigte und eigene Scorer an einem Agenten oder an einem einzelnen Workflow-Schritt, mit deterministischer Stichprobe pro Trace, damit Scores über Läufe hinweg vergleichbar bleiben.",[351,354],{"tag":173,"children":352},[353],"Guardrails als Prozessoren",": Prompt-Injection-Erkennung, Moderation, PII-Maskierung, System-Prompt-Scrubbing und ein Kostenlimit, jeweils mit block-, redact- oder warn-Strategie.",{"type":119,"content":356},[357],"Eine Kante lohnt sich vor dem ersten CI-Lauf zu kennen. Scorer, die an einem Agenten oder Schritt hängen, registrieren sich selbst; Scorer, die direkt an runEvals() oder die Quick Checks übergeben werden, müssen zusätzlich auf der Mastra-Instanz registriert sein, sonst schlägt jeder Speichervorgang mit Scorer with id \u003Cid> not found fehl und die Scores erreichen den Store nie. Die Doku räumt ein, dass die Ergebnisse identisch sind, und genau das macht den Fehler irritierend.",{"type":131,"level":132,"id":106,"text":107},{"type":119,"content":360},[361],"Das Framework ist kostenlos, und an der gehosteten Plattform verdient der Anbieter sein Geld. Die Preisseite nennt drei Stufen, und der Zähler ist der interessante Teil: Observability-Events, CPU-Stunden, Datenausgang und ein Model Gateway, das 5,5 Prozent auf die Marktpreise der Token legt.",{"type":363,"head":364,"rows":373},"table",[365,367,369,371],[366],"Stufe",[368],"Preis",[370],"Observability",[372],"Rechenzeit und Aufbewahrung",[374,383,392],[375,377,379,381],[376],"Starter",[378],"0 USD pro Monat",[380],"100k Events, dann 10 USD je 100k",[382],"24 CPU-Stunden, dann 0,35 USD pro Stunde; 15 Tage Aufbewahrung",[384,386,388,390],[385],"Teams",[387],"250 USD pro Monat",[389],"1 Mio. Events, dann 8 USD je 100k",[391],"250 CPU-Stunden, dann 0,25 USD pro Stunde; 6 Monate Aufbewahrung",[393,395,397,399],[394],"Enterprise",[396],"Individuell",[398],"Individuelles Volumen und Aufbewahrung",[400],"RBAC, Audit-Logs, Verfügbarkeits-SLAs, Betrieb in eigener Cloud",{"type":119,"content":402},[403],"Zwei Posten verdienen Aufmerksamkeit. Eine dauerhaft laufende Instanz kostet 100 USD pro Projekt zusätzlich zur Stufe, und das Gateway berechnet Markpreis plus 5,5 Prozent auf Input- und Output-Token mit eigenem Schlüssel. Memory wird noch einmal abgerechnet, mit 10 USD pro Million Token über den ersten 100.000 beziehungsweise 1 Mio. hinaus, sodass ein gesprächiger Agent mit langem Kontext in drei Zählern auftaucht.",{"type":318,"variant":319,"title":405,"body":406},"Die Lizenzteilung sollte zweimal gelesen werden",[407],[408],"Alles außerhalb von ee\u002F ist Apache-2.0. Innerhalb von ee\u002F - derzeit @mastra\u002Fcore\u002Fauth\u002Fee, @mastra\u002Fcore\u002Fagent-builder\u002Fee und @mastra\u002Feditor\u002Fee - ist der Code quelloffen zugänglich, und die Mastra Enterprise Edition License v2.0, gültig seit 22. September 2026, verlangt für den Produktivbetrieb sowohl einen unterzeichneten Vertrag als auch einen gültigen Lizenzschlüssel. Betrieb ohne beides ist laut Lizenz nicht lizenzierte Nutzung. Authentifizierung ist kein Randfeature, diese Grenze also prüfen, bevor eine Architektur davon abhängt.",{"type":131,"level":132,"id":109,"text":110},{"type":119,"content":411},[412],"Die Schwächen zuerst. Das Release-Tempo ist das operative: 301 Releases in 90 Tagen bedeuten, dass sich die API des Frameworks unter einem verschiebt und das Lesen der Release Notes zur Arbeit gehört. Zweitens ist die Breite zweischneidig. Das Repository liefert Harness, Workspaces, Channels, Voice, Browser-Steuerung, Code Mode und Agent Factories mit, ein kleines Team zahlt also an Review-Fläche für Funktionen, die es nicht nutzt. Drittens ist Observational Memory nicht kostenlos, weil Hintergrund-Agenten die Historie auf jedem Turn komprimieren. Viertens sind gerade die Studio-Extras, Time Travel, Experimente und der Evaluate-Tab, der Grund, auf der bezahlten Stufe zu bleiben, und die fehlen, wenn die Traces an Langfuse gehen und alles andere selbst betrieben wird.",{"type":363,"head":414,"rows":422},[415,417,418,420],[416],"Kriterium",[24],[419],"LangGraph.js",[421],"Vercel AI SDK",[423,431,440,449,458],[424,425,427,429],[175],[426],"Apache-2.0-Kern, Enterprise in ee\u002F",[428],"MIT",[430],"Apache-2.0",[432,434,436,438],[433],"Abgedeckter Umfang",[435],"Agenten, Workflows, Memory, MCP, Evals, Plattform",[437],"Graph-Laufzeit, dauerhafte Ausführung",[439],"Modellaufrufe, Streaming, UI-Bausteine",[441,443,445,447],[442],"Evals und Traces",[444],"integriert, plus gehostete Plattform",[446],"LangSmith ist separat und kostenpflichtig",[448],"eigener Anbieter",[450,452,454,456],[451],"Passung",[453],"Produktteams, die Agenten in Node ausliefern",[455],"Python-orientierte Shops mit dauerhaften Graphen",[457],"Apps, die im Wesentlichen Modellausgaben streamen",[459,461,463,465],[460],"Wöchentliche Downloads, 4. Okt. 2026",[462],"2,23 Mio. (@mastra\u002Fcore)",[464],"4,55 Mio. (@langchain\u002Flanggraph)",[466],"34,5 Mio. (ai)",{"type":119,"content":468},[469],"Gegenüber dem OpenAI Agents SDK, das schlanker ist, unter MIT steht und nah an der Responses API bleibt, ist Mastra die portablere und zugleich schwerere Option. Die ehrliche Zusammenfassung: Mastra kauft Breite und eine echte Evaluationsschleife und zahlt dafür mit der Zahl der Abhängigkeiten, denn @mastra\u002Fcore allein zieht 30 direkte Abhängigkeiten, und mit dem Tempo, in dem sich diese Abhängigkeit ändert.",{"type":131,"level":132,"id":112,"text":113},{"type":119,"content":472},[473],"Mastra ist ein gut geführtes, ungewöhnlich vollständiges Framework mit einem klaren Schwerpunkt: Die Schleife zwischen Code, Traces und Evals ist besser als alles, was ein TypeScript-Team sonst zusammensetzen müsste. Der Haken ist, dass es ein bewegliches Ziel mit kommerzieller Schicht ist, und ausgerechnet die beiden Punkte, die Käufer am meisten interessieren, stabile APIs und eine unveränderte Lizenz, sind die schwächsten.",{"type":168,"ordered":246,"items":475},[476,478,480,482,484],[477],"Nehmen, wenn der Agent in einer bestehenden Node- oder Next.js-Anwendung ausgeliefert wird und das Team Tracing, Evals und eine Workflow-Engine will, ohne sechs Pakete zusammenzusetzen.",[479],"Nehmen, wenn menschliche Freigabe, lange unterbrochene Workflows und MCP-Toolserver Anforderungen sind und keine Kür.",[481],"Nehmen mit gepinnten Versionen und einer Eval-Suite in der CI, weil sonst das Release-Takt den Upgrade-Plan bestimmt.",[483],"Weglassen, wenn der Modellanbieter feststeht und die Oberfläche ein einzelner Chat-Endpunkt ist: Das Vercel AI SDK oder das OpenAI Agents SDK ist leichter zu durchdenken.",[485],"Weglassen, wenn der Stack Python ist oder wenn die ee\u002F-Grenze durch etwas läuft, wovon das Produkt abhängt.",{"type":318,"variant":487,"title":488,"body":489},"note","In einem Satz",[490],[491],"Mastra ist das am besten integrierte TypeScript-Agentenframework auf dem Markt, vorausgesetzt, man behandelt es als Plattform mit offenem Quellcode-Kern statt als stabile Bibliothek und akzeptiert, dass die gehostete Stufe, nicht der Code, das Geschäftsmodell des Anbieters ist.",{"type":131,"level":132,"id":115,"text":116},{"type":168,"ordered":246,"items":494},[495,499,502,505,508,511,514,517,520,523,526],[496],{"tag":497,"href":32,"children":498},"a",[31],[500],{"tag":497,"href":35,"children":501},[34],[503],{"tag":497,"href":38,"children":504},[37],[506],{"tag":497,"href":41,"children":507},[40],[509],{"tag":497,"href":44,"children":510},[43],[512],{"tag":497,"href":47,"children":513},[46],[515],{"tag":497,"href":50,"children":516},[49],[518],{"tag":497,"href":53,"children":519},[52],[521],{"tag":497,"href":56,"children":522},[55],[524],{"tag":497,"href":28,"children":525},[58],[527],{"tag":497,"href":61,"children":528},[60],[530,587,660,730],{"slug":531,"published":532,"minutes":6,"category":7,"tags":533,"keywords":538,"about":549,"sources":559,"cover":581,"og":582,"expertise":64,"locales":583,"lang":67,"title":584,"description":585,"coverAlt":586},"agent-tool-design-descriptions-errors","2026-10-17",[534,535,536,12,537],"AI agents","Tool use","Function calling","Agent design",[539,540,541,542,543,544,545,546,547,548],"agent tool design","writing tool descriptions for llm","function calling best practices","tool use error handling","mcp tool design","tool calling is_error","how many tools should an agent have","tool search defer_loading","agent computer interface","llm tool schema design",[550,553,556],{"name":551,"url":552},"Intelligent agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIntelligent_agent",{"name":554,"url":555},"Model Context Protocol","https:\u002F\u002Fmodelcontextprotocol.io\u002F",{"name":557,"url":558},"Poka-yoke","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPoka-yoke",[560,563,566,569,572,575,578],{"title":561,"url":562},"Anthropic Engineering: Writing effective tools for agents, with agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fwriting-tools-for-agents",{"title":564,"url":565},"Anthropic Engineering: Building effective agents (Dec 2024)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fbuilding-effective-agents",{"title":567,"url":568},"Claude Platform Docs: Define tools","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fdefine-tools",{"title":570,"url":571},"Claude Platform Docs: Handle tool calls","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fhandle-tool-calls",{"title":573,"url":574},"Claude Platform Docs: Tool search tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Ftool-search-tool",{"title":576,"url":577},"Model Context Protocol specification 2025-11-25: Tools","https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2025-11-25\u002Fserver\u002Ftools",{"title":579,"url":580},"OpenAI API Docs: Function calling","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Ffunction-calling","\u002Fimages\u002Fblog\u002Fagent-tool-design-descriptions-errors\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fagent-tool-design-descriptions-errors\u002Fog.jpg",[66,67,68],"Tools für KI-Agenten gestalten: Namen, Beschreibungen, Schemas und Fehlermeldungen","Agent-Tools, die richtig gewählt und aufgerufen werden: aufgabenorientierte Tools, Beschreibungen, Schemas, kompakte Antworten und verwertbare Fehlermeldungen.","Ein Sockel mit drei Schlitzen; über dem mittleren steht ein passend breiter Block, daneben zwei Blöcke falscher Breite.",{"slug":588,"published":532,"minutes":6,"category":7,"tags":589,"keywords":595,"about":608,"sources":618,"cover":654,"og":655,"expertise":64,"locales":656,"lang":67,"title":657,"description":658,"coverAlt":659},"coding-agents-legacy-codebase-migration",[590,591,592,593,594],"Legacy migration","Coding agents","Strangler fig","Testing","Code review",[596,597,598,599,600,601,602,603,604,605,606,607],"legacy code migration ai","coding agent legacy codebase","strangler fig pattern ai","characterization tests legacy code","ai code migration review","agent assisted refactoring","legacy modernization coding agent","differential testing migration","shadow traffic migration","ai code review gate","test harness before migration","llm code migration",[609,612,615],{"name":610,"url":611},"Legacy code","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLegacy_code",{"name":613,"url":614},"Characterization test","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCharacterization_test",{"name":616,"url":617},"Strangler fig pattern","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FStrangler_fig_pattern",[619,622,624,627,630,633,636,639,642,645,648,651],{"title":620,"url":621},"Martin Fowler: Strangler Fig (2024)","https:\u002F\u002Fmartinfowler.com\u002Fbliki\u002FStranglerFigApplication.html",{"title":623,"url":614},"Wikipedia: Characterization test",{"title":625,"url":626},"Google Research: Accelerating code migrations with AI (2024)","https:\u002F\u002Fresearch.google\u002Fblog\u002Faccelerating-code-migrations-with-ai\u002F",{"title":628,"url":629},"Ziftci et al.: Migrating Code At Scale With LLMs At Google (arXiv 2504.09691)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2504.09691",{"title":631,"url":632},"Anthropic: Effective harnesses for long-running agents (2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-harnesses-for-long-running-agents",{"title":634,"url":635},"Anthropic: Redesigning source control at Anthropic (2026)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fredesigning-source-control",{"title":637,"url":638},"METR: Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity","https:\u002F\u002Fmetr.org\u002Fblog\u002F2025-07-10-early-2025-ai-experienced-os-dev-study\u002F",{"title":640,"url":641},"Chand et al.: Why Industry Migrates and When It Trusts LLMs (ESEM 2026)","https:\u002F\u002Fdrops.dagstuhl.de\u002Fentities\u002Fdocument\u002F10.4230\u002FLIPIcs.ESEM.2026.85",{"title":643,"url":644},"Li et al.: Environment-in-the-Loop: Rethinking Code Migration with LLM-based Agents (arXiv 2602.09944)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2602.09944",{"title":646,"url":647},"AWS: Amazon Q Developer just reached a $260 million dollar milestone (2024)","https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdevops\u002Famazon-q-developer-just-reached-a-260-million-dollar-milestone\u002F",{"title":649,"url":650},"OpenAI: Why SWE-bench Verified no longer measures frontier coding capabilities (2026)","https:\u002F\u002Fopenai.com\u002Findex\u002Fwhy-we-no-longer-evaluate-swe-bench-verified\u002F",{"title":652,"url":653},"GitHub Docs: About GitHub Copilot cloud agent","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fconcepts\u002Fagents\u002Fcoding-agent\u002Fabout-coding-agent","\u002Fimages\u002Fblog\u002Fcoding-agents-legacy-codebase-migration\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fcoding-agents-legacy-codebase-migration\u002Fog.jpg",[66,67,68],"Legacy-Codebase mit Coding-Agenten migrieren: ein Strangler-Fig-Playbook","Wie Coding-Agenten eine Legacy-Migration tragen: Characterization-Tests zuerst, ein Seam pro Task, Review-Gates und differentielle Verifikation.","Ein Stapel Schichten, bei dem die obersten zwei durch neue ersetzt werden, daneben eine Naht und ein Haken.",{"slug":661,"published":532,"minutes":662,"category":7,"tags":663,"keywords":667,"about":679,"sources":689,"cover":724,"og":725,"expertise":64,"locales":726,"lang":67,"title":727,"description":728,"coverAlt":729},"background-agents-async-pr-workflow",12,[591,664,665,594,666],"Pull requests","CI","Automation",[668,669,670,671,672,673,674,675,676,677,678],"background coding agent","async coding agent","cloud coding agent pull request","copilot coding agent limits","codex cloud tasks","claude code cloud sessions","jules coding agent limits","agent pull request review","coding agent sandbox","agent CI gating","cost per merged pull request",[680,683,686],{"name":681,"url":682},"Software agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_agent",{"name":684,"url":685},"Pull request","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDistributed_version_control",{"name":687,"url":688},"Continuous integration","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FContinuous_integration",[690,691,694,697,700,703,706,709,712,715,718,721],{"title":652,"url":653},{"title":692,"url":693},"GitHub Docs: Risks and mitigations for Copilot cloud agent","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fconcepts\u002Fagents\u002Fcloud-agent\u002Frisks-and-mitigations",{"title":695,"url":696},"OpenAI Developers: Codex cloud environments","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fcloud\u002Fenvironments",{"title":698,"url":699},"Anthropic: Use Claude Code in the cloud","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fclaude-code-on-the-web",{"title":701,"url":702},"Google Jules: Limits and plans","https:\u002F\u002Fjules.google\u002Fdocs\u002Fusage-limits\u002F",{"title":704,"url":705},"Google Jules: Getting started","https:\u002F\u002Fjules.google\u002Fdocs\u002F",{"title":707,"url":708},"GitHub Docs: About protected branches","https:\u002F\u002Fdocs.github.com\u002Fen\u002Frepositories\u002Fconfiguring-branches-and-merges-in-your-repository\u002Fmanaging-protected-branches\u002Fabout-protected-branches",{"title":710,"url":711},"GitHub Docs: Models and pricing for GitHub Copilot","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Freference\u002Fcopilot-billing\u002Fmodels-and-pricing",{"title":713,"url":714},"OpenAI Developers: Codex pricing","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fpricing",{"title":716,"url":717},"Ehsani et al.: Where Do AI Coding Agents Fail? An Empirical Study of Failed Agentic Pull Requests in GitHub (MSR 2026, arXiv 2601.15195)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2601.15195",{"title":719,"url":720},"Peralta et al.: Why Are Agentic Pull Requests Merged or Rejected? An Empirical Study (MSR 2026, arXiv 2605.22534)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2605.22534",{"title":722,"url":723},"DORA: State of AI-assisted Software Development 2025","https:\u002F\u002Fdora.dev\u002Fdora-report-2025","\u002Fimages\u002Fblog\u002Fbackground-agents-async-pr-workflow\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fbackground-agents-async-pr-workflow\u002Fog.jpg",[66,67,68],"Coding-Agenten im Hintergrund: Pull Requests, Queues und Review","Wie asynchrone Coding-Agenten Tasks einreihen, in Sandboxes laufen, Draft-PRs öffnen und CI passieren. Grenzen, Kosten, Review und Fehlerbilder.","Eine Karte in einer Ablage fächert sich zu fünf Feldern auf, alle Pfeile führen zu einer Seite hinter einem Tor.",{"slug":731,"published":732,"minutes":733,"category":7,"tags":734,"keywords":740,"about":752,"sources":760,"cover":793,"og":794,"expertise":64,"locales":795,"lang":67,"title":796,"description":797,"coverAlt":798},"context-rot-compaction-long-running-agents","2026-10-16",10,[735,736,737,738,739],"Context rot","Compaction","Context engineering","Long-running agents","Agent memory",[741,742,743,744,745,746,747,748,749,750,751],"context rot","context rot LLM","compaction AI agents","context engineering","long-running agents context window","Claude compaction API","context editing clear tool results","OpenAI responses compaction","lost in the middle LLM","agent context management","sub-agents context isolation",[753,756,759],{"name":754,"url":755},"Context window","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model#Context_window",{"name":757,"url":758},"Attention (machine learning)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAttention_(machine_learning)",{"name":551,"url":552},[761,764,767,770,773,775,778,781,784,787,790],{"title":762,"url":763},"Chroma: Context Rot: How Increasing Input Tokens Impacts LLM Performance (Jul 2025)","https:\u002F\u002Fresearch.trychroma.com\u002Fcontext-rot",{"title":765,"url":766},"Liu et al.: Lost in the Middle: How Language Models Use Long Contexts (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.03172",{"title":768,"url":769},"Modarressi et al.: NoLiMa: Long-Context Evaluation Beyond Literal Matching (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.05167",{"title":771,"url":772},"Anthropic: Effective context engineering for AI agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-context-engineering-for-ai-agents",{"title":774,"url":632},"Anthropic: Effective harnesses for long-running agents (Nov 2025)",{"title":776,"url":777},"Claude API docs: Compaction at a token threshold","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-threshold",{"title":779,"url":780},"Claude API docs: Compaction on demand","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-on-demand",{"title":782,"url":783},"Claude API docs: Context editing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcontext-editing",{"title":785,"url":786},"Claude API docs: Memory tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fmemory-tool",{"title":788,"url":789},"OpenAI API docs: Compaction","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fcompaction",{"title":791,"url":792},"Cognition: Don't Build Multi-Agents","https:\u002F\u002Fcognition.ai\u002Fblog\u002Fdont-build-multi-agents","\u002Fimages\u002Fblog\u002Fcontext-rot-compaction-long-running-agents\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fcontext-rot-compaction-long-running-agents\u002Fog.jpg",[66,67,68],"Context Rot bei langlaufenden Agenten: Leeren, Compaction, Memory und Sub-Agenten","Warum die Genauigkeit von LLMs mit wachsendem Kontext sinkt und wie Leeren, Compaction, Notizen und Sub-Agenten lange Agentenläufe stabil halten.","Eine kleine Presse drückt einen hohen Blätterstapel zu einem kurzen, zwei Notizen zweigen ab.",1792261157907]