尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Calm, just a message away. Calm-1 is an AI wellbeing companion that people message on WhatsApp, with an admin dashboard where the Calm team operates, evaluates and improves it.
Calm-1 is not a therapist, a medical provider or an emergency service, and it says so.
npm install
npm run dev # http://localhost:3000
Open the app and Continue as local owner. In development, no passcode is needed unless you set ADMIN_PASSCODE.
Go to Overview → Conversation simulator. Send "hi" to see onboarding exactly as a new WhatsApp user would see it.
To get real replies, add your key to .env.local:
cp .env.example .env.local
# set ANTHROPIC_API_KEY=sk-ant-…
Without a key, the simulator reports "Claude is not configured". It never makes up a reply.
Optional: open Overview → Demo → Load demo data (or run npm run seed:demo) to see the dashboard with synthetic data. It's labelled "Demo data" everywhere and never mixes with production metrics.
Local development stores everything in an encrypted JSON file in ./.data/. The background worker also runs in-process, which handles memory extraction, summaries and check-ins. Production uses Supabase; see docs/DEPLOYMENT.md.
| Command | What it does |
|---|---|
npm run dev | Dashboard + API + in-process worker |
npm test | Vitest suite (61 tests, including the full end-to-end journey) |
npm run typecheck | TypeScript strict check |
npm run build / npm start | Production build / serve |
npm run worker | Dedicated background worker (production, long-running host) |
npm run seed:demo | Load labelled synthetic demo data |
npm run safety:eval | Run the safety evaluation suite (-- --model adds Claude review) |
WhatsApp → POST /api/whatsapp/webhook
→ signature check (X-Hub-Signature-256) → de-duplicate (webhook_events)
→ identify user (keyed phone hash) → enqueue job (per-user lock → strict ordering)
→ worker: mark read + typing → [voice: download → transcribe]
→ engine: commands (STOP / MEMORY / DELETE…) → onboarding & consent
→ rate & cost limits → input safety (rules + model review)
→ context (recent history, rolling summary, retrieved memories, local time)
→ Claude + wellbeing tools (permission-checked)
→ output validation (unapproved links removed, safety checks, crisis resources)
→ persist (encrypted) → background memory extraction / summarisation
→ send via Cloud API → delivery statuses update the message
The dashboard simulator calls the same handleInbound() engine with channel: "simulator".
Next.js 15 (App Router) · TypeScript (strict) · Tailwind CSS with a custom design system · Lucide · Recharts · Framer Motion · Supabase Postgres (RLS) · Supabase Auth · Anthropic Claude (@anthropic-ai/sdk) · Meta WhatsApp Cloud API · Postgres-backed job queue · Upstash Redis rate limiting (optional) · Vitest.