Skip to content

Mastra Adapter

Generate TypeScript Mastra agent code from your agent.yaml manifest.

Usage

bash
export ANTHROPIC_API_KEY=your-api-key-here
agentspec generate agent.yaml --framework mastra --output ./generated/

Get an API key at console.anthropic.com.

Generated Files

FileWhen generated
src/agent.tsAlways — agent definition and runAgent() helper
src/tools.tsWhen spec.tools is non-empty
mastra.config.tsAlways — Mastra instance with telemetry
package.jsonAlways — dependencies
.env.exampleAlways
README.mdAlways

Manifest → Code Mapping

agent.yaml fieldGenerated code
spec.model.provider: openaiimport { openai } from '@ai-sdk/openai'
spec.model.provider: anthropicimport { anthropic } from '@ai-sdk/anthropic'
spec.model.provider: googleimport { google } from '@ai-sdk/google'
spec.model.provider: groqimport { createGroq } from '@ai-sdk/groq'
spec.model.idFirst argument to provider function: openai('gpt-4o')
spec.model.parameters.temperaturetemperature: N in generate options
spec.model.apiKey: $env:VARapiKey: process.env.VAR in provider factory
spec.prompts.systeminstructions field on the Agent
spec.tools[]createTool({ id, description, execute }) in src/tools.ts
spec.memorynew Memory({ storage: new LibSQLStore(...) })
spec.observabilitytelemetry: { serviceName, enabled: true } in mastra.config.ts
spec.requires.envVars[]validateEnv() called at module top-level

src/agent.ts Structure

typescript
// src/agent.ts (excerpt)
import { Agent } from '@mastra/core'
import { Memory } from '@mastra/core/memory'
import { LibSQLStore } from '@mastra/libsql'
import { openai } from '@ai-sdk/openai'
import { logWorkout, getWorkoutHistory } from './tools.js'

validateEnv()

const model = openai('gpt-4o')
const memory = new Memory({ storage: new LibSQLStore({ url: process.env.LIBSQL_URL ?? 'file:./agent.db' }) })

export const myAgent = new Agent({
  name: 'GymCoach',
  instructions: loadSystemPrompt(),
  model,
  tools: { logWorkout, getWorkoutHistory },
  memory,
})

export async function runAgent(userInput: string, threadId = 'default'): Promise<string> {
  const result = await myAgent.generate(userInput, { threadId, resourceId: 'user' })
  return result.text
}

See also

Released under the Apache 2.0 License.