Introduction
Notewright is a self-hostable, open-core meeting follow-up engine that runs on Cloudflare Workers. It syncs meeting notes and transcripts from a pluggable notes source (Granola is built in) into a Cloudflare D1 database, extracts follow-up action items with an LLM, and creates them in a pluggable follow-up sink (Linear is built in). It is headless and composed entirely in TypeScript.
Open core
Section titled “Open core”The model is open core: you scaffold your own instance, compose exactly the providers you want, and deploy it to your own Cloudflare account. The repository itself is a library monorepo, not a turnkey app, so there is no shared hosted service and no provider keys ever leave your account.
How a meeting becomes a follow-up
Section titled “How a meeting becomes a follow-up”- Notes sources implement
NotesSourceProvider; follow-up sinks implementFollowUpProvider. Providers ship as separate npm packages. Your instance composes exactly one notes provider and one follow-up provider viadefineApp({ notes, followUp }). The composition is TypeScript-enforced; there are noNOTES_PROVIDER/FOLLOWUP_PROVIDERenvironment selectors. - Storage is Cloudflare D1 only. There is no Neon or external Postgres.
- AI runs through Cloudflare AI Gateway with bring-your-own-key (BYOK), so the Worker never holds an Anthropic key directly.
- Speaker context: a
SpeakerContextAgentDurable Object resolves and caches per-meeting speaker identities. The follow-up pipeline consumes that resolution to attribute action-item excerpts to real speakers. It is invoked on demand by the pipeline (no cron of its own).
The packages
Section titled “The packages”Notewright is published as five packages:
| Package | What it is |
|---|---|
@notewright/core | The headless Worker: agents, sync, extraction, and store. |
create-notewright | The npm create notewright initializer that scaffolds a new instance. |
@notewright/granola-notes-provider | Granola notes source provider. |
@notewright/linear-follow-up-provider | Linear follow-up sink provider. |
@notewright/noop-follow-up-provider | No-op follow-up sink (for testing or notes-only deployments). |
Where to go next
Section titled “Where to go next”- Prerequisites lists what you need before you start.
- Quick start scaffolds and composes an instance.
- AI Gateway setup is required before extraction will run.
- Deploy ships the instance to Cloudflare.
- Concepts explains the architecture in depth.