@mastra/mcp-docs-server 1.0.0-beta.1 → 1.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/organized/changelogs/%40internal%2Fchangeset-cli.md +1 -15
- package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +1 -7
- package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +201 -1
- package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +1 -55
- package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +276 -76
- package/.docs/organized/changelogs/%40mastra%2Fastra.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fauth.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Fchroma.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +200 -0
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fcodemod.md +26 -0
- package/.docs/organized/changelogs/%40mastra%2Fconvex.md +89 -0
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +392 -192
- package/.docs/organized/changelogs/%40mastra%2Fcouchbase.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +200 -0
- package/.docs/organized/changelogs/%40mastra%2Fduckdb.md +42 -0
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Felasticsearch.md +61 -0
- package/.docs/organized/changelogs/%40mastra%2Fevals.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Flance.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Floggers.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp-registry-registry.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fopensearch.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +263 -63
- package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Frag.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Freact.md +154 -1
- package/.docs/organized/changelogs/%40mastra%2Fs3vectors.md +18 -0
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +42 -0
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +274 -74
- package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-gladia.md +92 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google-gemini-live.md +67 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +201 -1
- package/.docs/organized/changelogs/create-mastra.md +201 -1
- package/.docs/organized/changelogs/mastra.md +201 -1
- package/.docs/organized/code-examples/agui.md +1 -0
- package/.docs/organized/code-examples/ai-elements.md +2 -2
- package/.docs/organized/code-examples/ai-sdk-useChat.md +2 -2
- package/.docs/organized/code-examples/ai-sdk-v5.md +3 -2
- package/.docs/organized/code-examples/assistant-ui.md +2 -2
- package/.docs/organized/code-examples/bird-checker-with-express.md +1 -1
- package/.docs/organized/code-examples/bird-checker-with-nextjs-and-eval.md +2 -2
- package/.docs/organized/code-examples/bird-checker-with-nextjs.md +2 -2
- package/.docs/organized/code-examples/client-side-tools.md +1 -1
- package/.docs/organized/code-examples/crypto-chatbot.md +2 -2
- package/.docs/organized/code-examples/fireworks-r1.md +1 -1
- package/.docs/organized/code-examples/heads-up-game.md +1 -1
- package/.docs/organized/code-examples/mcp-configuration.md +0 -3
- package/.docs/organized/code-examples/mcp-server-adapters.md +720 -0
- package/.docs/organized/code-examples/memory-per-resource-example.md +1 -1
- package/.docs/organized/code-examples/memory-with-processors.md +1 -1
- package/.docs/organized/code-examples/openapi-spec-writer.md +1 -1
- package/.docs/organized/code-examples/processors-with-ai-sdk.md +14 -0
- package/.docs/organized/code-examples/quick-start.md +2 -2
- package/.docs/organized/code-examples/server-app-access.md +342 -0
- package/.docs/organized/code-examples/server-express-adapter.md +87 -0
- package/.docs/organized/code-examples/server-hono-adapter.md +85 -0
- package/.docs/organized/code-examples/stock-price-tool.md +1 -21
- package/.docs/organized/code-examples/workflow-ai-recruiter.md +1 -1
- package/.docs/organized/code-examples/workflow-with-inline-steps.md +1 -1
- package/.docs/organized/code-examples/workflow-with-memory.md +1 -1
- package/.docs/organized/code-examples/workflow-with-separate-steps.md +1 -1
- package/.docs/organized/code-examples/workflow-with-suspend-resume.md +1 -1
- package/.docs/raw/agents/adding-voice.mdx +56 -10
- package/.docs/raw/agents/agent-approval.mdx +189 -0
- package/.docs/raw/agents/agent-memory.mdx +1 -1
- package/.docs/raw/agents/guardrails.mdx +70 -30
- package/.docs/raw/agents/networks.mdx +3 -3
- package/.docs/raw/agents/overview.mdx +18 -167
- package/.docs/raw/agents/processors.mdx +430 -0
- package/.docs/raw/agents/structured-output.mdx +224 -0
- package/.docs/raw/agents/using-tools.mdx +14 -14
- package/.docs/raw/auth/auth0.mdx +1 -1
- package/.docs/raw/auth/clerk.mdx +1 -1
- package/.docs/raw/auth/firebase.mdx +1 -1
- package/.docs/raw/auth/index.mdx +1 -1
- package/.docs/raw/auth/jwt.mdx +1 -1
- package/.docs/raw/auth/supabase.mdx +1 -1
- package/.docs/raw/auth/workos.mdx +1 -1
- package/.docs/raw/community/contributing-templates.mdx +1 -1
- package/.docs/raw/community/discord.mdx +2 -2
- package/.docs/raw/community/licensing.mdx +1 -1
- package/.docs/raw/course/01-first-agent/05-running-playground.md +5 -5
- package/.docs/raw/course/01-first-agent/09-testing-your-agent.md +3 -3
- package/.docs/raw/course/01-first-agent/13-testing-your-tool.md +3 -3
- package/.docs/raw/course/01-first-agent/17-testing-memory.md +2 -2
- package/.docs/raw/course/04-workflows/07-using-playground.md +1 -1
- package/.docs/raw/deployment/{server-deployment.mdx → building-mastra.mdx} +4 -4
- package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +2 -2
- package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +3 -3
- package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +2 -2
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/cloudflare-deployer.mdx +1 -1
- package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +2 -2
- package/.docs/raw/deployment/cloud-providers/index.mdx +26 -29
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/netlify-deployer.mdx +45 -14
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/vercel-deployer.mdx +1 -1
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/dashboard.mdx +3 -3
- package/.docs/raw/deployment/mastra-cloud/observability.mdx +53 -0
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/overview.mdx +3 -3
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/setting-up.mdx +4 -4
- package/.docs/raw/deployment/monorepo.mdx +3 -3
- package/.docs/raw/deployment/overview.mdx +7 -7
- package/.docs/raw/deployment/web-framework.mdx +6 -6
- package/.docs/raw/evals/{off-the-shelf-scorers.mdx → built-in-scorers.mdx} +17 -15
- package/.docs/raw/evals/custom-scorers.mdx +4 -6
- package/.docs/raw/evals/overview.mdx +5 -6
- package/.docs/raw/evals/running-in-ci.mdx +2 -4
- package/.docs/raw/getting-started/{installation.mdx → manual-install.mdx} +6 -80
- package/.docs/raw/getting-started/mcp-docs-server.mdx +63 -6
- package/.docs/raw/getting-started/project-structure.mdx +2 -2
- package/.docs/raw/getting-started/start.mdx +72 -0
- package/.docs/raw/getting-started/studio.mdx +32 -7
- package/.docs/raw/guides/agent-frameworks/ai-sdk.mdx +147 -0
- package/.docs/raw/guides/build-your-ui/ai-sdk-ui.mdx +627 -0
- package/.docs/raw/{frameworks/agentic-uis → guides/build-your-ui}/assistant-ui.mdx +71 -19
- package/.docs/raw/guides/build-your-ui/copilotkit.mdx +206 -0
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/astro.mdx +24 -26
- package/.docs/raw/{frameworks/servers → guides/getting-started}/express.mdx +4 -5
- package/.docs/raw/guides/{quickstarts/nextjs.mdx → getting-started/next-js.mdx} +26 -25
- package/.docs/raw/guides/getting-started/quickstart.mdx +97 -0
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/sveltekit.mdx +24 -26
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/vite-react.mdx +7 -7
- package/.docs/raw/guides/guide/ai-recruiter.mdx +2 -3
- package/.docs/raw/guides/guide/chef-michel.mdx +2 -3
- package/.docs/raw/guides/guide/notes-mcp-server.mdx +2 -2
- package/.docs/raw/guides/guide/research-assistant.mdx +7 -8
- package/.docs/raw/guides/guide/stock-agent.mdx +4 -6
- package/.docs/raw/guides/guide/web-search.mdx +12 -10
- package/.docs/raw/guides/guide/whatsapp-chat-bot.mdx +421 -0
- package/.docs/raw/guides/index.mdx +3 -35
- package/.docs/raw/guides/migrations/agentnetwork.mdx +4 -4
- package/.docs/raw/guides/migrations/ai-sdk-v4-to-v5.mdx +119 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/agent.mdx +121 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/client.mdx +42 -2
- package/.docs/raw/guides/migrations/upgrade-to-v1/evals.mdx +31 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/mastra.mdx +27 -3
- package/.docs/raw/guides/migrations/upgrade-to-v1/mcp.mdx +1 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/memory.mdx +28 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/overview.mdx +25 -3
- package/.docs/raw/guides/migrations/upgrade-to-v1/storage.mdx +80 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/tools.mdx +68 -3
- package/.docs/raw/guides/migrations/upgrade-to-v1/vectors.mdx +25 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/workflows.mdx +174 -1
- package/.docs/raw/guides/migrations/vnext-to-standard-apis.mdx +2 -2
- package/.docs/raw/index.mdx +3 -3
- package/.docs/raw/mcp/overview.mdx +358 -0
- package/.docs/raw/mcp/publishing-mcp-server.mdx +139 -0
- package/.docs/raw/memory/conversation-history.mdx +1 -1
- package/.docs/raw/memory/memory-processors.mdx +265 -80
- package/.docs/raw/memory/overview.mdx +2 -2
- package/.docs/raw/memory/semantic-recall.mdx +9 -9
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +3 -8
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +150 -0
- package/.docs/raw/memory/storage/memory-with-pg.mdx +3 -8
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +3 -8
- package/.docs/raw/memory/threads-and-resources.mdx +4 -4
- package/.docs/raw/memory/working-memory.mdx +16 -8
- package/.docs/raw/{logging.mdx → observability/logging.mdx} +7 -7
- package/.docs/raw/observability/overview.mdx +3 -4
- package/.docs/raw/observability/tracing/bridges/otel.mdx +200 -0
- package/.docs/raw/observability/tracing/exporters/arize.mdx +37 -1
- package/.docs/raw/observability/tracing/exporters/braintrust.mdx +20 -1
- package/.docs/raw/observability/tracing/exporters/cloud.mdx +2 -2
- package/.docs/raw/observability/tracing/exporters/default.mdx +1 -1
- package/.docs/raw/observability/tracing/exporters/langfuse.mdx +84 -1
- package/.docs/raw/observability/tracing/exporters/langsmith.mdx +13 -1
- package/.docs/raw/observability/tracing/exporters/otel.mdx +123 -25
- package/.docs/raw/observability/tracing/exporters/posthog.mdx +127 -0
- package/.docs/raw/observability/tracing/overview.mdx +80 -9
- package/.docs/raw/observability/tracing/processors/sensitive-data-filter.mdx +1 -2
- package/.docs/raw/rag/chunking-and-embedding.mdx +16 -17
- package/.docs/raw/rag/overview.mdx +4 -3
- package/.docs/raw/rag/retrieval.mdx +44 -39
- package/.docs/raw/rag/vector-databases.mdx +94 -3
- package/.docs/raw/reference/agents/agent.mdx +19 -16
- package/.docs/raw/reference/agents/generate.mdx +67 -99
- package/.docs/raw/reference/agents/generateLegacy.mdx +3 -3
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDefaultOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDescription.mdx +1 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +1 -1
- package/.docs/raw/reference/agents/getLLM.mdx +2 -2
- package/.docs/raw/reference/agents/getMemory.mdx +1 -1
- package/.docs/raw/reference/agents/getModel.mdx +1 -1
- package/.docs/raw/reference/agents/getTools.mdx +69 -0
- package/.docs/raw/reference/agents/getVoice.mdx +1 -1
- package/.docs/raw/reference/agents/listAgents.mdx +1 -1
- package/.docs/raw/reference/agents/listScorers.mdx +1 -1
- package/.docs/raw/reference/agents/listTools.mdx +2 -2
- package/.docs/raw/reference/agents/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/agents/network.mdx +33 -72
- package/.docs/raw/reference/ai-sdk/chat-route.mdx +127 -0
- package/.docs/raw/reference/ai-sdk/handle-chat-stream.mdx +117 -0
- package/.docs/raw/reference/ai-sdk/handle-network-stream.mdx +64 -0
- package/.docs/raw/reference/ai-sdk/handle-workflow-stream.mdx +116 -0
- package/.docs/raw/reference/ai-sdk/network-route.mdx +99 -0
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-stream.mdx +289 -0
- package/.docs/raw/reference/ai-sdk/with-mastra.mdx +119 -0
- package/.docs/raw/reference/ai-sdk/workflow-route.mdx +110 -0
- package/.docs/raw/reference/auth/auth0.mdx +1 -1
- package/.docs/raw/reference/auth/clerk.mdx +1 -1
- package/.docs/raw/reference/auth/firebase.mdx +1 -1
- package/.docs/raw/reference/auth/jwt.mdx +1 -1
- package/.docs/raw/reference/auth/supabase.mdx +1 -1
- package/.docs/raw/reference/auth/workos.mdx +1 -1
- package/.docs/raw/reference/cli/create-mastra.mdx +1 -1
- package/.docs/raw/reference/cli/mastra.mdx +19 -6
- package/.docs/raw/reference/client-js/agents.mdx +252 -68
- package/.docs/raw/reference/client-js/error-handling.mdx +1 -1
- package/.docs/raw/reference/client-js/logs.mdx +1 -1
- package/.docs/raw/reference/client-js/mastra-client.mdx +4 -4
- package/.docs/raw/reference/client-js/memory.mdx +48 -2
- package/.docs/raw/reference/client-js/observability.mdx +1 -1
- package/.docs/raw/reference/client-js/telemetry.mdx +1 -1
- package/.docs/raw/reference/client-js/tools.mdx +1 -1
- package/.docs/raw/reference/client-js/vectors.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows.mdx +93 -64
- package/.docs/raw/reference/core/addGateway.mdx +59 -0
- package/.docs/raw/reference/core/getAgent.mdx +1 -1
- package/.docs/raw/reference/core/getAgentById.mdx +1 -1
- package/.docs/raw/reference/core/getDeployer.mdx +1 -1
- package/.docs/raw/reference/core/getGateway.mdx +59 -0
- package/.docs/raw/reference/core/getGatewayById.mdx +62 -0
- package/.docs/raw/reference/core/getLogger.mdx +2 -2
- package/.docs/raw/reference/core/getMCPServer.mdx +2 -2
- package/.docs/raw/reference/core/getMCPServerById.mdx +2 -2
- package/.docs/raw/reference/core/getMemory.mdx +73 -0
- package/.docs/raw/reference/core/getScorer.mdx +1 -1
- package/.docs/raw/reference/core/getScorerById.mdx +1 -1
- package/.docs/raw/reference/core/getServer.mdx +3 -3
- package/.docs/raw/reference/core/getStorage.mdx +1 -1
- package/.docs/raw/reference/core/getStoredAgentById.mdx +183 -0
- package/.docs/raw/reference/core/getTelemetry.mdx +1 -1
- package/.docs/raw/reference/core/getVector.mdx +1 -1
- package/.docs/raw/reference/core/getWorkflow.mdx +1 -1
- package/.docs/raw/reference/core/listAgents.mdx +1 -1
- package/.docs/raw/reference/core/listGateways.mdx +53 -0
- package/.docs/raw/reference/core/listLogs.mdx +2 -2
- package/.docs/raw/reference/core/listLogsByRunId.mdx +2 -2
- package/.docs/raw/reference/core/listMCPServers.mdx +2 -2
- package/.docs/raw/reference/core/listMemory.mdx +70 -0
- package/.docs/raw/reference/core/listScorers.mdx +1 -1
- package/.docs/raw/reference/core/listStoredAgents.mdx +151 -0
- package/.docs/raw/reference/core/listVectors.mdx +1 -1
- package/.docs/raw/reference/core/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/core/mastra-class.mdx +17 -1
- package/.docs/raw/reference/core/mastra-model-gateway.mdx +227 -0
- package/.docs/raw/reference/core/setLogger.mdx +2 -2
- package/.docs/raw/reference/core/setStorage.mdx +1 -1
- package/.docs/raw/reference/core/setTelemetry.mdx +2 -2
- package/.docs/raw/reference/deployer/cloudflare.mdx +1 -1
- package/.docs/raw/reference/deployer/deployer.mdx +1 -1
- package/.docs/raw/reference/deployer/netlify.mdx +2 -3
- package/.docs/raw/reference/deployer/vercel.mdx +1 -1
- package/.docs/raw/reference/evals/answer-relevancy.mdx +29 -99
- package/.docs/raw/reference/evals/answer-similarity.mdx +13 -259
- package/.docs/raw/reference/evals/bias.mdx +30 -88
- package/.docs/raw/reference/evals/completeness.mdx +32 -91
- package/.docs/raw/reference/evals/content-similarity.mdx +29 -89
- package/.docs/raw/reference/evals/context-precision.mdx +29 -131
- package/.docs/raw/reference/evals/context-relevance.mdx +12 -12
- package/.docs/raw/reference/evals/create-scorer.mdx +1 -1
- package/.docs/raw/reference/evals/faithfulness.mdx +29 -102
- package/.docs/raw/reference/evals/hallucination.mdx +29 -104
- package/.docs/raw/reference/evals/keyword-coverage.mdx +29 -108
- package/.docs/raw/reference/evals/mastra-scorer.mdx +1 -1
- package/.docs/raw/reference/evals/noise-sensitivity.mdx +12 -12
- package/.docs/raw/reference/evals/prompt-alignment.mdx +16 -16
- package/.docs/raw/reference/evals/run-evals.mdx +1 -1
- package/.docs/raw/reference/evals/scorer-utils.mdx +362 -0
- package/.docs/raw/reference/evals/textual-difference.mdx +28 -101
- package/.docs/raw/reference/evals/tone-consistency.mdx +26 -99
- package/.docs/raw/reference/evals/tool-call-accuracy.mdx +8 -8
- package/.docs/raw/reference/evals/toxicity.mdx +30 -93
- package/.docs/raw/reference/index.mdx +1 -0
- package/.docs/raw/reference/logging/pino-logger.mdx +2 -2
- package/.docs/raw/reference/memory/createThread.mdx +1 -1
- package/.docs/raw/reference/memory/deleteMessages.mdx +1 -1
- package/.docs/raw/reference/memory/getThreadById.mdx +1 -1
- package/.docs/raw/reference/memory/listThreadsByResourceId.mdx +1 -1
- package/.docs/raw/reference/memory/memory-class.mdx +6 -8
- package/.docs/raw/reference/memory/query.mdx +1 -1
- package/.docs/raw/reference/memory/recall.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/bridges/otel.mdx +177 -0
- package/.docs/raw/reference/observability/tracing/configuration.mdx +1 -5
- package/.docs/raw/reference/observability/tracing/exporters/arize.mdx +30 -1
- package/.docs/raw/reference/observability/tracing/exporters/braintrust.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/exporters/cloud-exporter.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/exporters/console-exporter.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/exporters/default-exporter.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/exporters/langfuse.mdx +44 -1
- package/.docs/raw/reference/observability/tracing/exporters/langsmith.mdx +18 -2
- package/.docs/raw/reference/observability/tracing/exporters/otel.mdx +34 -44
- package/.docs/raw/reference/observability/tracing/exporters/posthog.mdx +132 -0
- package/.docs/raw/reference/observability/tracing/instances.mdx +1 -5
- package/.docs/raw/reference/observability/tracing/interfaces.mdx +30 -5
- package/.docs/raw/reference/observability/tracing/processors/sensitive-data-filter.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/spans.mdx +1 -5
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +2 -2
- package/.docs/raw/reference/processors/language-detector.mdx +11 -4
- package/.docs/raw/reference/processors/message-history-processor.mdx +131 -0
- package/.docs/raw/reference/processors/moderation-processor.mdx +13 -6
- package/.docs/raw/reference/processors/pii-detector.mdx +13 -6
- package/.docs/raw/reference/processors/processor-interface.mdx +803 -0
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +11 -4
- package/.docs/raw/reference/processors/semantic-recall-processor.mdx +197 -0
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +4 -5
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +3 -3
- package/.docs/raw/reference/processors/tool-call-filter.mdx +125 -0
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +2 -2
- package/.docs/raw/reference/processors/working-memory-processor.mdx +221 -0
- package/.docs/raw/reference/rag/chunk.mdx +1 -1
- package/.docs/raw/reference/rag/database-config.mdx +1 -1
- package/.docs/raw/reference/rag/document.mdx +1 -1
- package/.docs/raw/reference/rag/embeddings.mdx +6 -6
- package/.docs/raw/reference/rag/extract-params.mdx +1 -1
- package/.docs/raw/reference/rag/graph-rag.mdx +1 -1
- package/.docs/raw/reference/rag/metadata-filters.mdx +1 -1
- package/.docs/raw/reference/rag/rerank.mdx +2 -3
- package/.docs/raw/reference/rag/rerankWithScorer.mdx +1 -2
- package/.docs/raw/reference/server/create-route.mdx +328 -0
- package/.docs/raw/reference/server/express-adapter.mdx +260 -0
- package/.docs/raw/reference/server/hono-adapter.mdx +242 -0
- package/.docs/raw/reference/server/mastra-server.mdx +345 -0
- package/.docs/raw/reference/server/routes.mdx +250 -0
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +38 -1
- package/.docs/raw/reference/storage/cloudflare.mdx +1 -1
- package/.docs/raw/reference/storage/convex.mdx +164 -0
- package/.docs/raw/reference/storage/dynamodb.mdx +1 -1
- package/.docs/raw/reference/storage/lance.mdx +34 -1
- package/.docs/raw/reference/storage/libsql.mdx +38 -1
- package/.docs/raw/reference/storage/mongodb.mdx +40 -1
- package/.docs/raw/reference/storage/mssql.mdx +38 -1
- package/.docs/raw/reference/storage/postgresql.mdx +38 -1
- package/.docs/raw/reference/storage/upstash.mdx +1 -1
- package/.docs/raw/reference/streaming/ChunkType.mdx +25 -4
- package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +1 -1
- package/.docs/raw/reference/streaming/agents/stream.mdx +84 -124
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +8 -10
- package/.docs/raw/reference/streaming/workflows/{resumeStreamVNext.mdx → resumeStream.mdx} +51 -11
- package/.docs/raw/reference/streaming/workflows/stream.mdx +84 -25
- package/.docs/raw/reference/streaming/workflows/timeTravelStream.mdx +170 -0
- package/.docs/raw/reference/templates/overview.mdx +2 -5
- package/.docs/raw/reference/tools/client.mdx +2 -3
- package/.docs/raw/reference/tools/create-tool.mdx +135 -4
- package/.docs/raw/reference/tools/document-chunker-tool.mdx +1 -1
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +7 -7
- package/.docs/raw/reference/tools/mcp-client.mdx +131 -23
- package/.docs/raw/reference/tools/mcp-server.mdx +56 -8
- package/.docs/raw/reference/tools/vector-query-tool.mdx +16 -17
- package/.docs/raw/reference/vectors/astra.mdx +1 -1
- package/.docs/raw/reference/vectors/chroma.mdx +82 -2
- package/.docs/raw/reference/vectors/convex.mdx +429 -0
- package/.docs/raw/reference/vectors/couchbase.mdx +25 -18
- package/.docs/raw/reference/vectors/duckdb.mdx +462 -0
- package/.docs/raw/reference/vectors/elasticsearch.mdx +310 -0
- package/.docs/raw/reference/vectors/lance.mdx +39 -23
- package/.docs/raw/reference/vectors/libsql.mdx +36 -3
- package/.docs/raw/reference/vectors/mongodb.mdx +36 -3
- package/.docs/raw/reference/vectors/opensearch.mdx +38 -17
- package/.docs/raw/reference/vectors/pg.mdx +44 -37
- package/.docs/raw/reference/vectors/pinecone.mdx +70 -3
- package/.docs/raw/reference/vectors/qdrant.mdx +37 -2
- package/.docs/raw/reference/vectors/s3vectors.mdx +1 -1
- package/.docs/raw/reference/vectors/turbopuffer.mdx +75 -1
- package/.docs/raw/reference/vectors/upstash.mdx +1 -1
- package/.docs/raw/reference/vectors/vectorize.mdx +1 -1
- package/.docs/raw/reference/voice/azure.mdx +96 -81
- package/.docs/raw/reference/voice/cloudflare.mdx +1 -1
- package/.docs/raw/reference/voice/composite-voice.mdx +72 -29
- package/.docs/raw/reference/voice/deepgram.mdx +1 -1
- package/.docs/raw/reference/voice/elevenlabs.mdx +1 -1
- package/.docs/raw/reference/voice/google-gemini-live.mdx +1 -1
- package/.docs/raw/reference/voice/google.mdx +160 -21
- package/.docs/raw/reference/voice/mastra-voice.mdx +1 -1
- package/.docs/raw/reference/voice/murf.mdx +1 -1
- package/.docs/raw/reference/voice/openai-realtime.mdx +3 -3
- package/.docs/raw/reference/voice/openai.mdx +1 -1
- package/.docs/raw/reference/voice/playai.mdx +1 -1
- package/.docs/raw/reference/voice/sarvam.mdx +1 -1
- package/.docs/raw/reference/voice/speechify.mdx +1 -1
- package/.docs/raw/reference/voice/voice.addInstructions.mdx +3 -4
- package/.docs/raw/reference/voice/voice.addTools.mdx +2 -2
- package/.docs/raw/reference/voice/voice.answer.mdx +2 -2
- package/.docs/raw/reference/voice/voice.close.mdx +2 -2
- package/.docs/raw/reference/voice/voice.connect.mdx +2 -2
- package/.docs/raw/reference/voice/voice.events.mdx +1 -1
- package/.docs/raw/reference/voice/voice.getSpeakers.mdx +1 -1
- package/.docs/raw/reference/voice/voice.listen.mdx +87 -53
- package/.docs/raw/reference/voice/voice.off.mdx +2 -2
- package/.docs/raw/reference/voice/voice.on.mdx +2 -2
- package/.docs/raw/reference/voice/voice.send.mdx +2 -2
- package/.docs/raw/reference/voice/voice.speak.mdx +76 -41
- package/.docs/raw/reference/voice/voice.updateConfig.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +1 -1
- package/.docs/raw/reference/workflows/run-methods/restart.mdx +142 -0
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +45 -1
- package/.docs/raw/reference/workflows/run-methods/start.mdx +48 -4
- package/.docs/raw/reference/workflows/run-methods/timeTravel.mdx +310 -0
- package/.docs/raw/reference/workflows/run.mdx +28 -6
- package/.docs/raw/reference/workflows/step.mdx +65 -1
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +69 -4
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow.mdx +44 -2
- package/.docs/raw/server-db/custom-adapters.mdx +386 -0
- package/.docs/raw/server-db/custom-api-routes.mdx +6 -6
- package/.docs/raw/server-db/mastra-client.mdx +3 -4
- package/.docs/raw/server-db/{production-server.mdx → mastra-server.mdx} +22 -12
- package/.docs/raw/server-db/middleware.mdx +31 -31
- package/.docs/raw/server-db/request-context.mdx +3 -4
- package/.docs/raw/server-db/server-adapters.mdx +312 -0
- package/.docs/raw/server-db/storage.mdx +12 -1
- package/.docs/raw/streaming/events.mdx +1 -1
- package/.docs/raw/streaming/overview.mdx +27 -16
- package/.docs/raw/streaming/tool-streaming.mdx +58 -19
- package/.docs/raw/streaming/workflow-streaming.mdx +6 -12
- package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -3
- package/.docs/raw/tools-mcp/mcp-overview.mdx +4 -6
- package/.docs/raw/tools-mcp/overview.mdx +1 -1
- package/.docs/raw/voice/overview.mdx +88 -41
- package/.docs/raw/voice/speech-to-speech.mdx +5 -5
- package/.docs/raw/voice/speech-to-text.mdx +2 -3
- package/.docs/raw/voice/text-to-speech.mdx +2 -3
- package/.docs/raw/workflows/agents-and-tools.mdx +43 -5
- package/.docs/raw/workflows/control-flow.mdx +534 -3
- package/.docs/raw/workflows/error-handling.mdx +5 -4
- package/.docs/raw/workflows/human-in-the-loop.mdx +160 -213
- package/.docs/raw/workflows/inngest-workflow.mdx +1 -1
- package/.docs/raw/workflows/input-data-mapping.mdx +1 -1
- package/.docs/raw/workflows/overview.mdx +67 -47
- package/.docs/raw/workflows/snapshots.mdx +5 -3
- package/.docs/raw/workflows/suspend-and-resume.mdx +121 -204
- package/.docs/raw/workflows/time-travel.mdx +313 -0
- package/.docs/raw/workflows/workflow-state.mdx +190 -0
- package/CHANGELOG.md +88 -0
- package/dist/{chunk-5NJC7NRO.js → chunk-4CM2BQNP.js} +24 -4
- package/dist/prepare-docs/package-changes.d.ts.map +1 -1
- package/dist/prepare-docs/prepare.js +1 -1
- package/dist/stdio.js +17 -19
- package/package.json +10 -14
- package/.docs/raw/deployment/serverless-platforms/index.mdx +0 -58
- package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +0 -688
- package/.docs/raw/frameworks/agentic-uis/cedar-os.mdx +0 -123
- package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +0 -382
- package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +0 -179
- package/.docs/raw/frameworks/web-frameworks/next-js.mdx +0 -379
- package/.docs/raw/getting-started/templates.mdx +0 -73
- package/.docs/raw/mastra-cloud/observability.mdx +0 -51
- package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +0 -47
- package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +0 -153
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Memory with LibSQL | Memory
|
|
2
|
+
title: "Memory with LibSQL | Memory"
|
|
3
3
|
description: Example for how to use Mastra's memory system with LibSQL storage and vector database backend.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -28,7 +28,6 @@ To add LibSQL memory to an agent use the `Memory` class and create a new `storag
|
|
|
28
28
|
```typescript title="src/mastra/agents/example-libsql-agent.ts" showLineNumbers copy
|
|
29
29
|
import { Memory } from "@mastra/memory";
|
|
30
30
|
import { Agent } from "@mastra/core/agent";
|
|
31
|
-
import { openai } from "@ai-sdk/openai";
|
|
32
31
|
import { LibSQLStore } from "@mastra/libsql";
|
|
33
32
|
|
|
34
33
|
export const libsqlAgent = new Agent({
|
|
@@ -36,7 +35,7 @@ export const libsqlAgent = new Agent({
|
|
|
36
35
|
name: "LibSQL Agent",
|
|
37
36
|
instructions:
|
|
38
37
|
"You are an AI agent with the ability to automatically recall memories from previous interactions.",
|
|
39
|
-
model: openai
|
|
38
|
+
model: "openai/gpt-5.1",
|
|
40
39
|
memory: new Memory({
|
|
41
40
|
storage: new LibSQLStore({
|
|
42
41
|
id: 'libsql-agent-storage',
|
|
@@ -64,7 +63,6 @@ Add the following to your agent:
|
|
|
64
63
|
```typescript title="src/mastra/agents/example-libsql-agent.ts" showLineNumbers copy
|
|
65
64
|
import { Memory } from "@mastra/memory";
|
|
66
65
|
import { Agent } from "@mastra/core/agent";
|
|
67
|
-
import { openai } from "@ai-sdk/openai";
|
|
68
66
|
import { LibSQLStore, LibSQLVector } from "@mastra/libsql";
|
|
69
67
|
import { fastembed } from "@mastra/fastembed";
|
|
70
68
|
|
|
@@ -73,7 +71,7 @@ export const libsqlAgent = new Agent({
|
|
|
73
71
|
name: "LibSQL Agent",
|
|
74
72
|
instructions:
|
|
75
73
|
"You are an AI agent with the ability to automatically recall memories from previous interactions.",
|
|
76
|
-
model: openai
|
|
74
|
+
model: "openai/gpt-5.1",
|
|
77
75
|
memory: new Memory({
|
|
78
76
|
storage: new LibSQLStore({
|
|
79
77
|
id: 'libsql-agent-storage',
|
|
@@ -140,6 +138,3 @@ for await (const chunk of stream.textStream) {
|
|
|
140
138
|
}
|
|
141
139
|
```
|
|
142
140
|
|
|
143
|
-
## Related
|
|
144
|
-
|
|
145
|
-
- [Calling Agents](/examples/v1/agents/calling-agents)
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Example: Memory with MongoDB | Memory"
|
|
3
|
+
description: Example for how to use Mastra's memory system with MongoDB storage and vector capabilities.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Memory with MongoDB
|
|
7
|
+
|
|
8
|
+
This example demonstrates how to use Mastra's memory system with MongoDB as the storage backend.
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
|
|
12
|
+
This example uses the `openai` model and requires a MongoDB database. Make sure to add the following to your `.env` file:
|
|
13
|
+
|
|
14
|
+
```bash title=".env" copy
|
|
15
|
+
OPENAI_API_KEY=<your-api-key>
|
|
16
|
+
MONGODB_URI=<your-connection-string>
|
|
17
|
+
MONGODB_DB_NAME=<your-db-name>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
And install the following package:
|
|
21
|
+
|
|
22
|
+
```bash copy
|
|
23
|
+
npm install @mastra/mongodb@beta
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Adding memory to an agent
|
|
27
|
+
|
|
28
|
+
To add MongoDB memory to an agent use the `Memory` class and create a new `storage` key using `MongoDBStore`. The configuration supports both local and remote MongoDB instances.
|
|
29
|
+
|
|
30
|
+
```typescript title="src/mastra/agents/example-mongodb-agent.ts" showLineNumbers copy
|
|
31
|
+
import { Memory } from "@mastra/memory";
|
|
32
|
+
import { Agent } from "@mastra/core/agent";
|
|
33
|
+
import { MongoDBStore } from "@mastra/mongodb";
|
|
34
|
+
|
|
35
|
+
export const mongodbAgent = new Agent({
|
|
36
|
+
id: "mongodb-agent",
|
|
37
|
+
name: "mongodb-agent",
|
|
38
|
+
instructions:
|
|
39
|
+
"You are an AI agent with the ability to automatically recall memories from previous interactions.",
|
|
40
|
+
model: "openai/gpt-5.1",
|
|
41
|
+
memory: new Memory({
|
|
42
|
+
storage: new MongoDBStore({
|
|
43
|
+
url: process.env.MONGODB_URI!,
|
|
44
|
+
dbName: process.env.MONGODB_DB_NAME!,
|
|
45
|
+
}),
|
|
46
|
+
options: {
|
|
47
|
+
threads: {
|
|
48
|
+
generateTitle: true,
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
}),
|
|
52
|
+
});
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Vector embeddings with MongoDB
|
|
56
|
+
|
|
57
|
+
Embeddings are numeric vectors used by memory's `semanticRecall` to retrieve related messages by meaning (not keywords).
|
|
58
|
+
|
|
59
|
+
> Note: You must use a deployment hosted on MongoDB Atlas to successfully use the MongoDB Vector database.
|
|
60
|
+
|
|
61
|
+
This setup uses FastEmbed, a local embedding model, to generate vector embeddings.
|
|
62
|
+
To use this, install `@mastra/fastembed`:
|
|
63
|
+
|
|
64
|
+
```bash copy
|
|
65
|
+
npm install @mastra/fastembed@beta
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Add the following to your agent:
|
|
69
|
+
|
|
70
|
+
```typescript title="src/mastra/agents/example-mongodb-agent.ts" showLineNumbers copy
|
|
71
|
+
import { Memory } from "@mastra/memory";
|
|
72
|
+
import { Agent } from "@mastra/core/agent";
|
|
73
|
+
import { MongoDBStore, MongoDBVector } from "@mastra/mongodb";
|
|
74
|
+
import { fastembed } from "@mastra/fastembed";
|
|
75
|
+
|
|
76
|
+
export const mongodbAgent = new Agent({
|
|
77
|
+
id: "mongodb-agent",
|
|
78
|
+
name: "mongodb-agent",
|
|
79
|
+
instructions:
|
|
80
|
+
"You are an AI agent with the ability to automatically recall memories from previous interactions.",
|
|
81
|
+
model: "openai/gpt-5.1",
|
|
82
|
+
memory: new Memory({
|
|
83
|
+
storage: new MongoDBStore({
|
|
84
|
+
url: process.env.MONGODB_URI!,
|
|
85
|
+
dbName: process.env.MONGODB_DB_NAME!,
|
|
86
|
+
}),
|
|
87
|
+
vector: new MongoDBVector({
|
|
88
|
+
uri: process.env.MONGODB_URI!,
|
|
89
|
+
dbName: process.env.MONGODB_DB_NAME!,
|
|
90
|
+
}),
|
|
91
|
+
embedder: fastembed,
|
|
92
|
+
options: {
|
|
93
|
+
lastMessages: 10,
|
|
94
|
+
semanticRecall: {
|
|
95
|
+
topK: 3,
|
|
96
|
+
messageRange: 2,
|
|
97
|
+
},
|
|
98
|
+
threads: {
|
|
99
|
+
generateTitle: true, // generates descriptive thread titles automatically
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
}),
|
|
103
|
+
});
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Usage example
|
|
107
|
+
|
|
108
|
+
Use `memoryOptions` to scope recall for this request. Set `lastMessages: 5` to limit recency-based recall, and use `semanticRecall` to fetch the `topK: 3` most relevant messages, including `messageRange: 2` neighboring messages for context around each match.
|
|
109
|
+
|
|
110
|
+
```typescript title="src/test-mongodb-agent.ts" showLineNumbers copy
|
|
111
|
+
import "dotenv/config";
|
|
112
|
+
|
|
113
|
+
import { mastra } from "./mastra";
|
|
114
|
+
|
|
115
|
+
const threadId = "123";
|
|
116
|
+
const resourceId = "user-456";
|
|
117
|
+
|
|
118
|
+
const agent = mastra.getAgent("mongodbAgent");
|
|
119
|
+
|
|
120
|
+
const message = await agent.stream("My name is Mastra", {
|
|
121
|
+
memory: {
|
|
122
|
+
thread: threadId,
|
|
123
|
+
resource: resourceId,
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
await message.textStream.pipeTo(new WritableStream());
|
|
128
|
+
|
|
129
|
+
const stream = await agent.stream("What's my name?", {
|
|
130
|
+
memory: {
|
|
131
|
+
thread: threadId,
|
|
132
|
+
resource: resourceId,
|
|
133
|
+
},
|
|
134
|
+
memoryOptions: {
|
|
135
|
+
lastMessages: 5,
|
|
136
|
+
semanticRecall: {
|
|
137
|
+
topK: 3,
|
|
138
|
+
messageRange: 2,
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
for await (const chunk of stream.textStream) {
|
|
144
|
+
process.stdout.write(chunk);
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Related
|
|
149
|
+
|
|
150
|
+
- [Calling Agents](/docs/v1/agents/overview)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Memory with Postgres | Memory
|
|
2
|
+
title: "Memory with Postgres | Memory"
|
|
3
3
|
description: Example for how to use Mastra's memory system with PostgreSQL storage and vector capabilities.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -29,7 +29,6 @@ To add PostgreSQL memory to an agent use the `Memory` class and create a new `st
|
|
|
29
29
|
```typescript title="src/mastra/agents/example-pg-agent.ts" showLineNumbers copy
|
|
30
30
|
import { Memory } from "@mastra/memory";
|
|
31
31
|
import { Agent } from "@mastra/core/agent";
|
|
32
|
-
import { openai } from "@ai-sdk/openai";
|
|
33
32
|
import { PostgresStore } from "@mastra/pg";
|
|
34
33
|
|
|
35
34
|
export const pgAgent = new Agent({
|
|
@@ -37,7 +36,7 @@ export const pgAgent = new Agent({
|
|
|
37
36
|
name: "PG Agent",
|
|
38
37
|
instructions:
|
|
39
38
|
"You are an AI agent with the ability to automatically recall memories from previous interactions.",
|
|
40
|
-
model: openai
|
|
39
|
+
model: "openai/gpt-5.1",
|
|
41
40
|
memory: new Memory({
|
|
42
41
|
storage: new PostgresStore({
|
|
43
42
|
id: 'pg-agent-storage',
|
|
@@ -65,7 +64,6 @@ Add the following to your agent:
|
|
|
65
64
|
```typescript title="src/mastra/agents/example-pg-agent.ts" showLineNumbers copy
|
|
66
65
|
import { Memory } from "@mastra/memory";
|
|
67
66
|
import { Agent } from "@mastra/core/agent";
|
|
68
|
-
import { openai } from "@ai-sdk/openai";
|
|
69
67
|
import { PostgresStore, PgVector } from "@mastra/pg";
|
|
70
68
|
import { fastembed } from "@mastra/fastembed";
|
|
71
69
|
|
|
@@ -74,7 +72,7 @@ export const pgAgent = new Agent({
|
|
|
74
72
|
name: "PG Agent",
|
|
75
73
|
instructions:
|
|
76
74
|
"You are an AI agent with the ability to automatically recall memories from previous interactions.",
|
|
77
|
-
model: openai
|
|
75
|
+
model: "openai/gpt-5.1",
|
|
78
76
|
memory: new Memory({
|
|
79
77
|
storage: new PostgresStore({
|
|
80
78
|
id: 'pg-agent-storage',
|
|
@@ -138,6 +136,3 @@ for await (const chunk of stream.textStream) {
|
|
|
138
136
|
}
|
|
139
137
|
```
|
|
140
138
|
|
|
141
|
-
## Related
|
|
142
|
-
|
|
143
|
-
- [Calling Agents](/examples/v1/agents/calling-agents)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Memory with Upstash | Memory
|
|
2
|
+
title: "Memory with Upstash | Memory"
|
|
3
3
|
description: Example for how to use Mastra's memory system with Upstash Redis storage and vector capabilities.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -34,7 +34,6 @@ To add Upstash memory to an agent use the `Memory` class and create a new `stora
|
|
|
34
34
|
```typescript title="src/mastra/agents/example-upstash-agent.ts" showLineNumbers copy
|
|
35
35
|
import { Memory } from "@mastra/memory";
|
|
36
36
|
import { Agent } from "@mastra/core/agent";
|
|
37
|
-
import { openai } from "@ai-sdk/openai";
|
|
38
37
|
import { UpstashStore } from "@mastra/upstash";
|
|
39
38
|
|
|
40
39
|
export const upstashAgent = new Agent({
|
|
@@ -42,7 +41,7 @@ export const upstashAgent = new Agent({
|
|
|
42
41
|
name: "Upstash Agent",
|
|
43
42
|
instructions:
|
|
44
43
|
"You are an AI agent with the ability to automatically recall memories from previous interactions.",
|
|
45
|
-
model: openai
|
|
44
|
+
model: "openai/gpt-5.1",
|
|
46
45
|
memory: new Memory({
|
|
47
46
|
storage: new UpstashStore({
|
|
48
47
|
id: 'upstash-agent-storage',
|
|
@@ -71,7 +70,6 @@ Add the following to your agent:
|
|
|
71
70
|
```typescript title="src/mastra/agents/example-upstash-agent.ts" showLineNumbers copy
|
|
72
71
|
import { Memory } from "@mastra/memory";
|
|
73
72
|
import { Agent } from "@mastra/core/agent";
|
|
74
|
-
import { openai } from "@ai-sdk/openai";
|
|
75
73
|
import { UpstashStore, UpstashVector } from "@mastra/upstash";
|
|
76
74
|
import { fastembed } from "@mastra/fastembed";
|
|
77
75
|
|
|
@@ -80,7 +78,7 @@ export const upstashAgent = new Agent({
|
|
|
80
78
|
name: "Upstash Agent",
|
|
81
79
|
instructions:
|
|
82
80
|
"You are an AI agent with the ability to automatically recall memories from previous interactions.",
|
|
83
|
-
model: openai
|
|
81
|
+
model: "openai/gpt-5.1",
|
|
84
82
|
memory: new Memory({
|
|
85
83
|
storage: new UpstashStore({
|
|
86
84
|
id: 'upstash-agent-storage',
|
|
@@ -146,6 +144,3 @@ for await (const chunk of stream.textStream) {
|
|
|
146
144
|
}
|
|
147
145
|
```
|
|
148
146
|
|
|
149
|
-
## Related
|
|
150
|
-
|
|
151
|
-
- [Calling Agents](/examples/v1/agents/calling-agents)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Memory threads and resources | Memory
|
|
2
|
+
title: "Memory threads and resources | Memory"
|
|
3
3
|
description: "Learn how Mastra's memory system works with working memory, conversation history, and semantic recall."
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -56,7 +56,7 @@ export const testAgent = new Agent({
|
|
|
56
56
|
options: {
|
|
57
57
|
threads: {
|
|
58
58
|
generateTitle: {
|
|
59
|
-
model: openai
|
|
59
|
+
model: "openai/gpt-4.1-nano",
|
|
60
60
|
instructions:
|
|
61
61
|
"Generate a concise title based on the user's first message",
|
|
62
62
|
},
|
|
@@ -80,8 +80,8 @@ export const testAgent = new Agent({
|
|
|
80
80
|
model: ({ requestContext }) => {
|
|
81
81
|
const userTier = requestContext.get("userTier");
|
|
82
82
|
return userTier === "premium"
|
|
83
|
-
? openai
|
|
84
|
-
: openai
|
|
83
|
+
? "openai/gpt-5.1"
|
|
84
|
+
: "openai/gpt-4.1-nano";
|
|
85
85
|
},
|
|
86
86
|
instructions: ({ requestContext }) => {
|
|
87
87
|
const language = requestContext.get("userLanguage") || "English";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Working Memory | Memory
|
|
2
|
+
title: "Working Memory | Memory"
|
|
3
3
|
description: "Learn how to configure working memory in Mastra to store persistent user data, preferences."
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -24,17 +24,16 @@ Working memory can persist at two different scopes:
|
|
|
24
24
|
|
|
25
25
|
Here's a minimal example of setting up an agent with working memory:
|
|
26
26
|
|
|
27
|
-
```typescript {
|
|
27
|
+
```typescript {11-14}
|
|
28
28
|
import { Agent } from "@mastra/core/agent";
|
|
29
29
|
import { Memory } from "@mastra/memory";
|
|
30
|
-
import { openai } from "@ai-sdk/openai";
|
|
31
30
|
|
|
32
31
|
// Create agent with working memory enabled
|
|
33
32
|
const agent = new Agent({
|
|
34
33
|
id: "personal-assistant",
|
|
35
34
|
name: "PersonalAssistant",
|
|
36
35
|
instructions: "You are a helpful personal assistant.",
|
|
37
|
-
model: openai
|
|
36
|
+
model: "openai/gpt-5.1",
|
|
38
37
|
memory: new Memory({
|
|
39
38
|
options: {
|
|
40
39
|
workingMemory: {
|
|
@@ -132,6 +131,7 @@ Resource-scoped working memory requires specific storage adapters that support t
|
|
|
132
131
|
- **LibSQL** (`@mastra/libsql`)
|
|
133
132
|
- **PostgreSQL** (`@mastra/pg`)
|
|
134
133
|
- **Upstash** (`@mastra/upstash`)
|
|
134
|
+
- **MongoDB** (`@mastra/mongodb`)
|
|
135
135
|
|
|
136
136
|
## Custom Templates
|
|
137
137
|
|
|
@@ -268,10 +268,18 @@ When a schema is provided, the agent receives the working memory as a JSON objec
|
|
|
268
268
|
}
|
|
269
269
|
```
|
|
270
270
|
|
|
271
|
+
### Merge Semantics for Schema-Based Memory
|
|
272
|
+
|
|
273
|
+
Schema-based working memory uses **merge semantics**, meaning the agent only needs to include fields it wants to add or update. Existing fields are preserved automatically.
|
|
274
|
+
|
|
275
|
+
- **Object fields are deep merged:** Only provided fields are updated; others remain unchanged
|
|
276
|
+
- **Set a field to `null` to delete it:** This explicitly removes the field from memory
|
|
277
|
+
- **Arrays are replaced entirely:** When an array field is provided, it replaces the existing array (arrays are not merged element-by-element)
|
|
278
|
+
|
|
271
279
|
## Choosing Between Template and Schema
|
|
272
280
|
|
|
273
|
-
- Use a **template** (Markdown) if you want the agent to maintain memory as a free-form text block, such as a user profile or scratchpad.
|
|
274
|
-
- Use a **schema** if you need structured, type-safe data that can be validated and programmatically accessed as JSON.
|
|
281
|
+
- Use a **template** (Markdown) if you want the agent to maintain memory as a free-form text block, such as a user profile or scratchpad. Templates use **replace semantics** — the agent must provide the complete memory content on each update.
|
|
282
|
+
- Use a **schema** if you need structured, type-safe data that can be validated and programmatically accessed as JSON. Schemas use **merge semantics** — the agent only provides fields to update, and existing fields are preserved.
|
|
275
283
|
- Only one mode can be active at a time: setting both `template` and `schema` is not supported.
|
|
276
284
|
|
|
277
285
|
## Example: Multi-step Retention
|
|
@@ -378,6 +386,6 @@ await memory.updateWorkingMemory({
|
|
|
378
386
|
|
|
379
387
|
## Examples
|
|
380
388
|
|
|
381
|
-
- [Working memory with template](/
|
|
382
|
-
- [Working memory with schema](/
|
|
389
|
+
- [Working memory with template](https://github.com/mastra-ai/mastra/tree/main/examples/memory-with-template)
|
|
390
|
+
- [Working memory with schema](https://github.com/mastra-ai/mastra/tree/main/examples/memory-with-schema)
|
|
383
391
|
- [Per-resource working memory](https://github.com/mastra-ai/mastra/tree/main/examples/memory-per-resource-example) - Complete example showing resource-scoped memory persistence
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Logging | Observability
|
|
2
|
+
title: "Logging | Observability"
|
|
3
3
|
description: Learn how to use logging in Mastra to monitor execution, capture application behavior, and improve the accuracy of AI applications.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -7,14 +7,14 @@ description: Learn how to use logging in Mastra to monitor execution, capture ap
|
|
|
7
7
|
|
|
8
8
|
Mastra's logging system captures function execution, input data, and output responses in a structured format.
|
|
9
9
|
|
|
10
|
-
When deploying to Mastra Cloud, logs are shown on the [Logs](/docs/v1/mastra-cloud/observability) page. In self-hosted or custom environments, logs can be directed to files or external services depending on the configured transports.
|
|
10
|
+
When deploying to Mastra Cloud, logs are shown on the [Logs](/docs/v1/deployment/mastra-cloud/observability) page. In self-hosted or custom environments, logs can be directed to files or external services depending on the configured transports.
|
|
11
11
|
|
|
12
|
-
## PinoLogger
|
|
12
|
+
## Configuring logs with PinoLogger
|
|
13
13
|
|
|
14
|
-
When [initializing a new Mastra project](/
|
|
14
|
+
When [initializing a new Mastra project](/guides/v1/getting-started/quickstart) using the CLI, `PinoLogger` is included by default.
|
|
15
15
|
|
|
16
16
|
```typescript title="src/mastra/index.ts" showLineNumbers copy
|
|
17
|
-
import { Mastra } from "@mastra/core";
|
|
17
|
+
import { Mastra } from "@mastra/core/mastra";
|
|
18
18
|
import { PinoLogger } from "@mastra/loggers";
|
|
19
19
|
|
|
20
20
|
export const mastra = new Mastra({
|
|
@@ -28,7 +28,7 @@ export const mastra = new Mastra({
|
|
|
28
28
|
|
|
29
29
|
> See the [PinoLogger](/reference/v1/logging/pino-logger) API reference for all available configuration options.
|
|
30
30
|
|
|
31
|
-
##
|
|
31
|
+
## Customizing logs
|
|
32
32
|
|
|
33
33
|
Mastra provides access to a logger instance via the `mastra.getLogger()` method, available inside both workflow steps and tools. The logger supports standard severity levels: `debug`, `info`, `warn`, and `error`.
|
|
34
34
|
|
|
@@ -79,7 +79,7 @@ export const testTool = createTool({
|
|
|
79
79
|
});
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
### Logging with additional data
|
|
83
83
|
|
|
84
84
|
Logger methods accept an optional second argument for additional data. This can be any value, such as an object, string, or number.
|
|
85
85
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Observability Overview | Observability
|
|
2
|
+
title: "Observability Overview | Observability"
|
|
3
3
|
description: Monitor and debug applications with Mastra's Observability features.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -43,11 +43,10 @@ export const mastra = new Mastra({
|
|
|
43
43
|
|
|
44
44
|
With this basic setup, you will see Traces and Logs in both Studio and in Mastra Cloud.
|
|
45
45
|
|
|
46
|
-
We also support various external tracing providers like Langfuse, Braintrust, and any OpenTelemetry-compatible platform (Datadog, New Relic, SigNoz, etc.). See more about this in the [Tracing](/docs/v1/observability/tracing/overview) documentation.
|
|
46
|
+
We also support various external tracing providers like MLflow, Langfuse, Braintrust, and any OpenTelemetry-compatible platform (Datadog, New Relic, SigNoz, etc.). See more about this in the [Tracing](/docs/v1/observability/tracing/overview) documentation.
|
|
47
47
|
|
|
48
48
|
## What's Next?
|
|
49
49
|
|
|
50
50
|
- **[Set up Tracing](/docs/v1/observability/tracing/overview)**: Configure tracing for your application
|
|
51
|
-
- **[Configure Logging](/docs/v1/logging)**: Add structured logging
|
|
52
|
-
- **[View Examples](/examples/v1/observability/basic-tracing)**: See observability in action
|
|
51
|
+
- **[Configure Logging](/docs/v1/observability/logging)**: Add structured logging
|
|
53
52
|
- **[API Reference](/reference/v1/observability/tracing/instances)**: Detailed configuration options
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "OpenTelemetry Bridge | Tracing | Observability"
|
|
3
|
+
description: "Integrate Mastra tracing with existing OpenTelemetry infrastructure"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OpenTelemetry Bridge
|
|
7
|
+
|
|
8
|
+
:::warning
|
|
9
|
+
|
|
10
|
+
The OpenTelemetry Bridge is currently **experimental**. APIs and configuration options may change in future releases.
|
|
11
|
+
|
|
12
|
+
:::
|
|
13
|
+
|
|
14
|
+
The OpenTelemetry (OTEL) Bridge enables bidirectional integration between Mastra's tracing system and existing OpenTelemetry infrastructure. Unlike exporters that send trace data to external platforms, the bridge creates native OTEL spans that participate in your distributed tracing context.
|
|
15
|
+
|
|
16
|
+
:::info Looking to send traces without existing OTEL infrastructure?
|
|
17
|
+
|
|
18
|
+
If you don't have existing OpenTelemetry instrumentation, the [OpenTelemetry Exporter](/docs/v1/observability/tracing/exporters/otel) may be simpler — it sends traces directly without requiring an OTEL SDK setup.
|
|
19
|
+
|
|
20
|
+
:::
|
|
21
|
+
|
|
22
|
+
## When to Use the Bridge
|
|
23
|
+
|
|
24
|
+
Use the OtelBridge when you:
|
|
25
|
+
|
|
26
|
+
- Have existing OTEL instrumentation in your application (HTTP servers, database clients, etc.)
|
|
27
|
+
- Want Mastra operations to appear as child spans of your existing OTEL traces
|
|
28
|
+
- Need OTEL-instrumented code inside Mastra tools to maintain proper parent-child relationships
|
|
29
|
+
- Are building a distributed system where trace context must propagate across services
|
|
30
|
+
|
|
31
|
+
## How It Works
|
|
32
|
+
|
|
33
|
+
The OtelBridge provides two-way integration:
|
|
34
|
+
|
|
35
|
+
**From OTEL to Mastra:**
|
|
36
|
+
- Reads from OTEL ambient context (AsyncLocalStorage) automatically
|
|
37
|
+
- Inherits trace ID and parent span ID from active OTEL spans
|
|
38
|
+
- Respects OTEL sampling decisions — if a trace is not sampled, Mastra won't create spans for it
|
|
39
|
+
- No manual trace ID passing required when OTEL auto-instrumentation is active
|
|
40
|
+
|
|
41
|
+
**From Mastra to OTEL:**
|
|
42
|
+
- Creates native OTEL spans for Mastra operations (agents, LLM calls, tools, workflows)
|
|
43
|
+
- Maintains proper parent-child relationships in distributed traces
|
|
44
|
+
- Allows OTEL-instrumented code (HTTP clients, database calls) within Mastra operations to nest correctly
|
|
45
|
+
|
|
46
|
+
## Installation
|
|
47
|
+
|
|
48
|
+
```bash npm2yarn
|
|
49
|
+
npm install @mastra/otel-bridge
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The bridge works with your existing OpenTelemetry setup. Depending on your configuration, you may also need some of these packages:
|
|
53
|
+
|
|
54
|
+
- `@opentelemetry/sdk-node` - Core Node.js SDK for OTEL
|
|
55
|
+
- `@opentelemetry/auto-instrumentations-node` - Auto-instrumentation for common libraries
|
|
56
|
+
- `@opentelemetry/exporter-trace-otlp-proto` - OTLP exporter (Protobuf over HTTP)
|
|
57
|
+
- `@opentelemetry/exporter-trace-otlp-http` - OTLP exporter (JSON over HTTP)
|
|
58
|
+
- `@opentelemetry/exporter-trace-otlp-grpc` - OTLP exporter (gRPC)
|
|
59
|
+
- `@opentelemetry/sdk-trace-base` - Base tracing SDK (for BatchSpanProcessor, etc.)
|
|
60
|
+
- `@opentelemetry/core` - Core utilities (for W3CTraceContextPropagator, etc.)
|
|
61
|
+
|
|
62
|
+
## Configuration
|
|
63
|
+
|
|
64
|
+
Using the OtelBridge requires two steps:
|
|
65
|
+
|
|
66
|
+
1. Configure OpenTelemetry instrumentation in your application
|
|
67
|
+
2. Add the OtelBridge to your Mastra observability config
|
|
68
|
+
|
|
69
|
+
### Step 1: OpenTelemetry Instrumentation
|
|
70
|
+
|
|
71
|
+
Create an instrumentation file that initializes OTEL. This must run before your application code:
|
|
72
|
+
|
|
73
|
+
```typescript title="instrumentation.ts" showLineNumbers copy
|
|
74
|
+
import { NodeSDK } from "@opentelemetry/sdk-node";
|
|
75
|
+
import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
|
|
76
|
+
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
|
|
77
|
+
import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
78
|
+
import { W3CTraceContextPropagator } from "@opentelemetry/core";
|
|
79
|
+
|
|
80
|
+
const sdk = new NodeSDK({
|
|
81
|
+
serviceName: "my-service",
|
|
82
|
+
spanProcessors: [
|
|
83
|
+
new BatchSpanProcessor(
|
|
84
|
+
new OTLPTraceExporter({
|
|
85
|
+
url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT || "http://localhost:4318/v1/traces",
|
|
86
|
+
})
|
|
87
|
+
),
|
|
88
|
+
],
|
|
89
|
+
instrumentations: [getNodeAutoInstrumentations()],
|
|
90
|
+
textMapPropagator: new W3CTraceContextPropagator(),
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
sdk.start();
|
|
94
|
+
|
|
95
|
+
export { sdk };
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Step 2: Mastra Configuration
|
|
99
|
+
|
|
100
|
+
Add the OtelBridge to your Mastra observability config:
|
|
101
|
+
|
|
102
|
+
```typescript title="src/mastra/index.ts" showLineNumbers copy
|
|
103
|
+
import { Mastra } from "@mastra/core";
|
|
104
|
+
import { Observability } from "@mastra/observability";
|
|
105
|
+
import { OtelBridge } from "@mastra/otel-bridge";
|
|
106
|
+
|
|
107
|
+
export const mastra = new Mastra({
|
|
108
|
+
observability: new Observability({
|
|
109
|
+
configs: {
|
|
110
|
+
default: {
|
|
111
|
+
serviceName: "my-service",
|
|
112
|
+
bridge: new OtelBridge(),
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
}),
|
|
116
|
+
agents: {
|
|
117
|
+
/* your agents */
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
No Mastra exporters are required when using the bridge — traces are sent via your OTEL SDK configuration. You can optionally add Mastra exporters if you want to send traces to additional destinations.
|
|
123
|
+
|
|
124
|
+
### Running Your Application
|
|
125
|
+
|
|
126
|
+
Use the `--import` flag to ensure instrumentation loads before your application:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
tsx --import ./instrumentation.ts ./src/index.ts
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Semantic Conventions
|
|
133
|
+
|
|
134
|
+
The OtelBridge exports Mastra spans using [OpenTelemetry Semantic Conventions for GenAI v1.38.0](https://github.com/open-telemetry/semantic-conventions/tree/v1.38.0/docs/gen-ai). This includes standardized span names (`chat {model}`, `execute_tool {tool_name}`, etc.) and attributes (`gen_ai.usage.input_tokens`, `gen_ai.request.model`, etc.).
|
|
135
|
+
|
|
136
|
+
For details on span naming and attributes, see the [OpenTelemetry Exporter semantic conventions](/docs/v1/observability/tracing/exporters/otel#opentelemetry-semantic-conventions).
|
|
137
|
+
|
|
138
|
+
## Trace Hierarchy
|
|
139
|
+
|
|
140
|
+
With the OtelBridge, your traces maintain proper hierarchy across OTEL and Mastra boundaries:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
HTTP POST /api/chat (from Hono middleware)
|
|
144
|
+
└── agent.assistant (from Mastra via OtelBridge)
|
|
145
|
+
├── chat gpt-4o (LLM call)
|
|
146
|
+
├── tool.execute search (tool execution)
|
|
147
|
+
│ └── HTTP GET api.example.com (from OTEL auto-instrumentation)
|
|
148
|
+
└── chat gpt-4o (follow-up LLM call)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Multi-Service Distributed Tracing
|
|
152
|
+
|
|
153
|
+
The OtelBridge enables trace propagation across service boundaries. When Service A calls Service B via HTTP, trace context propagates automatically:
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
Service A: HTTP POST /api/process
|
|
157
|
+
└── HTTP POST service-b/api/analyze (outgoing call)
|
|
158
|
+
|
|
159
|
+
Service B: HTTP POST /api/analyze (incoming call - same trace!)
|
|
160
|
+
└── agent.analyzer (Mastra agent inherits trace context)
|
|
161
|
+
└── chat gpt-4o
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Both services must have:
|
|
165
|
+
1. OTEL instrumentation configured
|
|
166
|
+
2. W3C Trace Context propagator enabled
|
|
167
|
+
3. Mastra with OtelBridge configured
|
|
168
|
+
|
|
169
|
+
## Using Tags
|
|
170
|
+
|
|
171
|
+
Tags help you categorize and filter traces in your OTEL backend. Add tags when executing agents or workflows:
|
|
172
|
+
|
|
173
|
+
```typescript
|
|
174
|
+
const result = await agent.generate({
|
|
175
|
+
messages: [{ role: "user", content: "Hello" }],
|
|
176
|
+
tracingOptions: {
|
|
177
|
+
tags: ["production", "experiment-v2", "user-request"],
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Tags are exported as a JSON string in the `mastra.tags` span attribute for broad backend compatibility. Common use cases include:
|
|
183
|
+
|
|
184
|
+
- Environment labels: `"production"`, `"staging"`
|
|
185
|
+
- Experiment tracking: `"experiment-v1"`, `"control-group"`
|
|
186
|
+
- Priority levels: `"priority-high"`, `"batch-job"`
|
|
187
|
+
|
|
188
|
+
## Troubleshooting
|
|
189
|
+
|
|
190
|
+
If traces aren't appearing or connecting as expected:
|
|
191
|
+
|
|
192
|
+
- Verify OTEL SDK is initialized before Mastra (use `--import` flag or import at top of entry point)
|
|
193
|
+
- Ensure the OtelBridge is added to your observability config
|
|
194
|
+
- Check that your OTEL backend is running and accessible
|
|
195
|
+
|
|
196
|
+
## Related
|
|
197
|
+
|
|
198
|
+
- [Tracing Overview](/docs/v1/observability/tracing/overview)
|
|
199
|
+
- [OpenTelemetry Exporter](/docs/v1/observability/tracing/exporters/otel) - For sending traces to OTEL backends
|
|
200
|
+
- [OtelBridge Reference](/reference/v1/observability/tracing/bridges/otel) - API documentation
|