{
  "manifest_version": "1",
  "slug": "mastra",
  "title": "Mastra",
  "headline": "Run Mastra agents and workflows on your own VM",
  "description": "Run Mastra agents and scheduled workflows on an exe.dev VM: the server and Studio under systemd, memory in SQLite, models from the LLM integration, and a VM per thread.",
  "category": "ai-agents",
  "tags": [
    "mastra",
    "mastra ai",
    "mastra deploy",
    "mastra server",
    "mastra studio",
    "typescript agent framework",
    "ai agent workflows",
    "scheduled workflows",
    "agent sandbox",
    "libsql"
  ],
  "url": "https://exe.dev/deploy/mastra",
  "markdown_url": "https://exe.dev/deploy/mastra.md",
  "upstream": {
    "website": "https://mastra.ai",
    "source": "https://github.com/mastra-ai/mastra",
    "docs": "https://mastra.ai/docs/deployment/mastra-server",
    "license": "Apache-2.0 (ee/ directories under the Mastra Enterprise License)"
  },
  "example_vm_name": "my-mastra",
  "time": "10 minutes",
  "stack": [
    {
      "name": "Your project",
      "detail": "The create-mastra 1.37 starter, a git repository you edit",
      "data": "~/my-agents/src"
    },
    {
      "name": "Mastra server",
      "detail": "@mastra/core 1.81 on Node.js 24, with Studio, the mastra systemd service",
      "port": 8000
    },
    {
      "name": "Storage",
      "detail": "Threads, memory, workflow runs, and schedules in SQLite (LibSQL); traces in DuckDB",
      "data": "~/my-agents/mastra.db"
    },
    {
      "name": "GPT models",
      "detail": "OpenAI, through exe.dev's LLM integration"
    },
    {
      "name": "Thread VMs (optional)",
      "detail": "One exe.dev VM per conversation, through the mastra-vms integration"
    }
  ],
  "access": [
    {
      "url": "https://my-mastra.exe.xyz/",
      "who": "private",
      "what": "Studio, to chat with agents, run workflows, and read traces"
    },
    {
      "url": "https://my-mastra.exe.xyz/api/",
      "who": "private",
      "what": "Mastra's HTTP API, behind the same exe.dev login"
    },
    {
      "url": "ssh my-mastra.exe.xyz",
      "who": "private",
      "what": "the project, its data, and logs"
    }
  ],
  "delivers": [
    "Node.js 24 and a Mastra project from create-mastra in ~/my-agents, a git repository",
    "mastra.service enabled, serving the API and Studio on port 8000, private to the VM's owner, and back after a reboot",
    "Model calls through exe.dev's LLM integration, with no OpenAI API key on the VM",
    "Threads, memory, workflow runs, and schedules in ~/my-agents/mastra.db",
    "The hn-digest workflow, run once and scheduled for 07:00 UTC every day"
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe.dev/new?prompt=Set%20up%20Mastra%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe.dev%2Fdeploy%2Fmastra.md%20from%20top%20to%20bottom.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-mastra.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-mastra.%20Skip%20the%20step%20that%20creates%20the%20VM%3B%20you%20are%20on%20it.%0A%0AYou%20are%20done%20when%20all%20of%20these%20are%20true.%20Check%20each%20one%20yourself%3A%0A-%20Node.js%2024%20and%20a%20Mastra%20project%20from%20create-mastra%20in%20~%2Fmy-agents%2C%20a%20git%20repository%0A-%20mastra.service%20enabled%2C%20serving%20the%20API%20and%20Studio%20on%20port%208000%2C%20private%20to%20the%20VM%27s%20owner%2C%20and%20back%20after%20a%20reboot%0A-%20Model%20calls%20through%20exe.dev%27s%20LLM%20integration%2C%20with%20no%20OpenAI%20API%20key%20on%20the%20VM%0A-%20Threads%2C%20memory%2C%20workflow%20runs%2C%20and%20schedules%20in%20~%2Fmy-agents%2Fmastra.db%0A-%20The%20hn-digest%20workflow%2C%20run%20once%20and%20scheduled%20for%2007%3A00%20UTC%20every%20day%0A%0ARun%20%22Set%20up%20Mastra%20by%20hand%22%20from%20%22On%20the%20VM%22%2C%20skipping%20VM%20creation%20and%0ASSH%2C%20then%20%22Add%20a%20scheduled%20workflow%22.%20Wait%20for%20%2Fhealth%20before%20each%0Acurl%20to%20the%20server.%20Skip%20%22Give%20each%20conversation%20a%20VM%22%20unless%20the%20owner%0Aasks%3A%20only%20they%20can%20create%20its%20integration%2C%20from%20their%20own%20computer%3B%0Anever%20ask%20for%20an%20exe.dev%20or%20OpenAI%20API%20key%20instead.%20Keep%20port%208000%0Aprivate%3A%20never%20run%20share%20set-public.%20Finish%20with%20https%3A%2F%2F%3Cvm%3E.exe.xyz%2F%2C%0Ausing%20this%20VM%27s%20name.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "terminal": "curl -fsSL https://exe.dev/deploy/mastra/prompt.txt | ssh exe.dev new --prompt=/dev/stdin",
    "prompt": "Set up Mastra on this VM by following the exe.dev recipe at https://exe.dev/deploy/mastra.md from top to bottom.\n\nThe recipe's example VM name is my-mastra. This VM's name is the output of `hostname`: use it wherever the recipe writes my-mastra. Skip the step that creates the VM; you are on it.\n\nYou are done when all of these are true. Check each one yourself:\n- Node.js 24 and a Mastra project from create-mastra in ~/my-agents, a git repository\n- mastra.service enabled, serving the API and Studio on port 8000, private to the VM's owner, and back after a reboot\n- Model calls through exe.dev's LLM integration, with no OpenAI API key on the VM\n- Threads, memory, workflow runs, and schedules in ~/my-agents/mastra.db\n- The hn-digest workflow, run once and scheduled for 07:00 UTC every day\n\nRun \"Set up Mastra by hand\" from \"On the VM\", skipping VM creation and\nSSH, then \"Add a scheduled workflow\". Wait for /health before each\ncurl to the server. Skip \"Give each conversation a VM\" unless the owner\nasks: only they can create its integration, from their own computer;\nnever ask for an exe.dev or OpenAI API key instead. Keep port 8000\nprivate: never run share set-public. Finish with https://\u003cvm\u003e.exe.xyz/,\nusing this VM's name.\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe.dev/deploy/mastra/prompt.txt"
  },
  "updated": "2026-10-31",
  "verified": "2026-10-31",
  "related": [
    "claude-agent-sdk",
    "openai-agents-sdk",
    "cursor-agent-sdk",
    "typescript-sandboxes",
    "agents",
    "claude-code"
  ],
  "alternatives": [
    "Mastra platform",
    "Vercel",
    "Railway",
    "E2B",
    "Daytona"
  ],
  "files": [
    "https://exe.dev/deploy/mastra/exe-sandbox.ts",
    "https://exe.dev/deploy/mastra/hn-digest.ts",
    "https://exe.dev/deploy/mastra/vm-agent.ts"
  ]
}
