You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.3 KiB
1.3 KiB
Concept: Mastra Data Storage
Purpose: Persistence layer for cases, documents, assessments, and observability.
Last Updated: 2026-01-09
Core Idea
Mastra uses a dual-storage approach: a local SQLite database (via Drizzle ORM) for business entities and a built-in LibSQLStore for Mastra-specific execution data (traces, spans).
Key Points
- Business Entities: Managed in
src/db/schema.ts. Includescases,documents,assessments, andoutputs. - Mastra Store:
LibSQLStorehandlesmastra_traces,mastra_ai_spans, andmastra_scorers. - V3 Extensions: Specific tables for
timeline_events,evidence_gaps,sub_claims, andvulnerability_flags. - Observability:
prompt_execution_tracesprovides detailed cost and token tracking per AI call. - File Storage: Large blobs (PDFs, JSON outputs) are stored in
./tmp/with paths referenced in the DB.
Quick Example
// Business Schema (Drizzle)
export const cases = sqliteTable('cases', {
id: text('id').primaryKey(),
status: text('status').default('new'),
});
// Mastra Store Config
storage: new LibSQLStore({
url: process.env.MASTRA_DB_PATH || 'file:./mastra.db',
}),
Reference: src/db/schema.ts, src/mastra/index.ts
Related:
- concepts/core.md
- lookup/mastra-config.md