Why invite-only, and how to own your copy.
Musette is intentionally not a mass-market public signup platform. Here is the honest reason why, and how anyone can deploy a fully sovereign copy for zero cost.
The Three Reasons for Invite-Only
1. Health Data Duty
Bodyweight, age, and workout metrics are special-category health data under GDPR Article 9. A bounded user circle ensures every athlete's privacy is rigorously respected.
2. Free Tier Sovereignty
Musette runs on Cloudflare's serverless edge and SQLite Durable Objects. Keeping the active user base tight avoids server costs and eliminates any pressure to monetize.
3. Bounded AI Costs
Daily OpenAI calls are protected by strict hardware breakers ($2/day per deployment). Capping users prevents runaway bills while keeping coaching insights fast.
Self-Hosting in 10 Minutes
The code is fully open source. You can deploy an independent, private instance to your own Cloudflare account in under ten minutes with zero monthly server bills.
What you need
A free Cloudflare account, an OpenRouter or OpenAI API key, and Node.js installed locally.
1. Clone and install
git clone https://github.com/markjjm/shopping-list.git
cd shopping-list
npm install
2. Store your Worker secrets
npx wrangler secret put LIST_KEY --config worker/wrangler.toml
npx wrangler secret put ADMIN_KEY --config worker/wrangler.toml
npx wrangler secret put OPENROUTER_KEY --config worker/wrangler.toml # or OPENAI_API_KEY
3. Deploy to the Edge
# Deploy the sync Worker & Durable Objects
npm run deploy:worker
# Deploy public site to Cloudflare Pages
npm run deploy:site
When you self-host, you are completely sovereign. Your workout data, training readings, and meal plans exist only in your own private Cloudflare storage.
Holding an invite code?
Redeem your invite code to create an account on this instance.
Redeem Invite Code →