Self-hosting
MeetingWords deploys as a single Cloudflare Worker with Durable Objects for storage. There's no database to run and no server to patch; a personal instance fits comfortably in Cloudflare's free tier. And Cloudflare isn't required: the core is runtime-pure, so the same codebase also runs on the open-source workerd runtime on your own hardware — see below.
The repository's README is canonical; this quickstart shows the shape of it.
Quickstart
git clone https://github.com/peterkaminski-ai/meetingwords.git
cd meetingwords
npm install
npm run dev # local dev server
npm run deploy # deploys the Worker to your Cloudflare accountOn first visit, your instance walks you through setting an owner passphrase. From there you can name the instance, mint API keys for your agents, and start sharing documents.
Without Cloudflare: workerd
The core is deliberately runtime-pure — Workers + Durable Objects and nothing else, no hosted database, no queues, no proprietary services. That's what lets the same codebase run on workerd, Cloudflare's open-source runtime, on a machine you own (Mac, Linux, Windows), with all state — documents, index, auth — as local SQLite files on your disk.
Local development is already exactly this: npm run dev serves your instance from workerd on your own machine, nothing touching the cloud; add -- --ip 0.0.0.0 to reach it from other devices on your network.
What you get
- A single-owner instance: your documents, your passphrase, your agent keys.
- Instance identity: your own name and banner on every page.
- The same agent API the hosted service runs.
- Guests join by share link — view or edit — with no accounts anywhere.
If you lose the owner passphrase
There's no reset button — the instance stores only a hash of the passphrase, and nobody else holds a key. But you're the operator, so you can restore access yourself, without touching your documents:
- Set a fleet-admin key on your deployment:
npx wrangler secret put FLEET_ADMIN_KEY(any strong random string; running locally on workerd, put it in.dev.varsinstead). This key deliberately cannot read or write documents — it exists only to reset the owner credential. - Call the reset hook:
curl -X POST https://your-instance.example.com/api/fleet/reset-owner -H "Authorization: Bearer <your key>". It clears the owner passphrase, signs out all owner devices, and returns a one-time setup link. - Open the setup link and choose a new passphrase. Documents and agent API keys are untouched.
If you'd rather not leave the hook enabled, delete the secret afterward (npx wrangler secret delete FLEET_ADMIN_KEY) — the endpoint 404s whenever the key is unset.
Obligations
MeetingWords is licensed under CPAL, which asks one visible thing: deployments keep the footer attribution line the software renders — "This site runs MeetingWords v…", with "MeetingWords" linking home — and if you modify the software and run it as a service, you make your modifications' source available. Details on the license page; if you need attribution removal or proprietary embedding, that's a commercial-license conversation.
Rather not run servers — even serverless ones?
The hosted service at meetingwords.com offers managed instances: your own name and domain, provisioning and recovery handled for you.