尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A private diary that writes back. You choose who you need right now (Dear diary, Best friend, Spouse, Mom, or "You decide"), write, and get a short reply in that voice, ending with a handwritten "I know."
This repository is the web version, ready for Vercel.
| Part | What it does |
|---|---|
index.html | The whole app (built from src/iknow.html). |
standalone.js | Lets the app run on its own website: replies go through /api/sample, exports become normal downloads, and the diary is stored in the phone's own browser. |
api/sample.js | A Vercel serverless function. It adds your Anthropic API key and calls the Claude Messages API. It stores and logs nothing. |
vercel.json | Security headers. No build step is needed. |
Where the diary lives: only in the browser on the phone that uses it (localStorage). There is no account and no database. Clearing browser data or switching phones loses the diary, so users should use Settings → Export my diary now and then.
What leaves the phone: only the text needed to write a reply, sent through /api/sample to Anthropic's API.
Add these under Project → Settings → Environment Variables, then redeploy:
| Variable | Required | Purpose |
|---|---|---|
ANTHROPIC_API_KEY | Yes | Your key from console.anthropic.com. Without it, replies show "Replies aren't switched on yet". |
IKNOW_ACCESS_CODE | Recommended | An invite code. When set, each phone must enter it once before replies work, so strangers who find the link can't spend your API credit. |
IKNOW_DEVICE_SECRET | Recommended | Turns on phone-specific codes (replaces IKNOW_ACCESS_CODE). A long phrase only you know, at least 20 characters. Changing it switches off every phone's code at once. |
IKNOW_REQUEST_WHATSAPP | With phone codes | Your WhatsApp number with country code, e.g. 919800000000. The app's "Request a code" button opens WhatsApp to this number with the phone's ID filled in. |
IKNOW_REQUEST_EMAIL | Optional | An email address for code requests, as well as or instead of WhatsApp. |
IKNOW_REVOKED_DEVICES | Optional | Link IDs or phone IDs to switch off, separated by commas, e.g. X9A5-Y3RJ, NY4C-ECWJ. |
BLOB_READ_WRITE_TOKEN | For sign-in links | Added automatically when you connect a Vercel Blob store to the project (Storage → Create → Blob). |
ANTHROPIC_WORKSPACE_ID | Only if needed | Needed only when your API key isn't tied to a workspace (Anthropic then says the request "must include the anthropic-workspace-id header"). Copy the ID from console.anthropic.com → Workspaces. Easier: create the key inside a workspace instead. |
ANTHROPIC_MODEL | No | Model for replies. Default claude-sonnet-5-5. |
ANTHROPIC_MODEL_QUICK | No | Model for quick tasks (picking a voice, style summaries). Default claude-haiku-5-5. |
The function also limits each IP address to 20 requests a minute (best effort).
Access is managed by a small service (Supabase Edge Function iknow-access, source in supabase/functions/iknow-access/) with its own private database schema iknow.
/owner and create your username and password. To prove it's you, it checks your current IKNOW_ACCESS_CODE (read from your phone automatically if you've used the app there). Only a PBKDF2 hash of the password is stored.IKNOW_REQUEST_WHATSAPP is set)./owner. It takes effect on that phone within about 30 seconds. No Vercel settings, no redeploys.Once the owner account exists, the shared invite code no longer gives anyone access; it is only used as a fallback if the access service is unreachable. Stored per phone: a hash of a random token made by that browser, the name they typed, status and dates. No diary text.
Needs IKNOW_DEVICE_SECRET and a Vercel Blob store connected to the project.
/owner, enter your secret, tap Make a sign-in link, then Copy a message to send.The Blob store holds only iknow-used/<linkId> markers. No names, no diary text. Replies are checked by signature, so there is no lookup per reply.
With IKNOW_DEVICE_SECRET set, every phone (or browser) gets its own ID, like NY4C-ECWJ, the first time it asks for a reply.
/owner on this site (e.g. know-zeta.vercel.app/owner), enter your secret and their phone ID, and get their code, e.g. 772M-GECM.No database is used: a code is a signature of the phone ID made with your secret, so the server can check it without storing anything. The owner page works the code out in your own browser and sends nothing anywhere.
A new browser, a private window, or clearing browser data gives that phone a new ID, so it needs a new code (its old diary is gone in that case anyway).
Edit src/iknow.html, then rebuild index.html:
python3 build.py
src/iknow.html is the same file that runs inside Claude as an artifact. build.py only adds the standalone adapter and web-accurate privacy wording.
Tele-MANAS 14416 / 1-800-891-4416 (India, free, 24×7) and emergency 112. Dear Mann is not therapy, medical, legal or emergency advice.