Skip to content

Storage

Notewright stores everything in Cloudflare D1. There is no Neon, no external Postgres, and no other datastore to operate.

The synced meetings and their transcripts live in a D1 database bound as DB in wrangler.jsonc:

"d1_databases": [
{ "binding": "DB", "database_name": "notewright-db", "database_id": "" }
]

You create the database and apply migrations during Deploy:

Terminal window
bunx wrangler d1 create my-notes-db # copy database_id into wrangler.jsonc
bunx wrangler d1 migrations apply my-notes-db --remote

The notes source writes meetings and transcripts into D1 during sync. The follow-up pipeline and the notewright meetings commands read from it.

Each agent (the follow-up agent, the speaker-context agent, and the notes sync agent) keeps its own state in its Durable Object’s SQLite storage, separate from the D1 database:

  • Follow-up agent: processed-run markers, task mappings, and failure rows.
  • Speaker-context agent: cached speaker resolutions keyed by transcript version.
  • Sync agent: last sync status and timing.

DO storage is provisioned by the DO migrations in wrangler.jsonc (v2, v3, and the provider’s granola-v1). notewright doctor checks that the migration files present locally match what the configuration declares and what the remote database has applied. See doctor preflight.