尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Open-source Superhuman clone: keyboard-first Gmail client with AI. Part of yourappisdead.
翻譯準備中
正在載入完整 README。
檢視完整 README ↗A keyboard-first Gmail client with a built-in AI assistant. Runs on your Mac, talks to Gmail and Claude with your own keys, and has no server of its own.
It is a from-scratch recreation of the Superhuman experience: split inbox (Important /
Other), j k e h triage, snooze, a Cmd+K command palette, undo toasts, and
"write with AI" drafts. The whole thing is a few thousand lines of TypeScript.
Prerequisites: macOS, Node 22 (nvm use reads .nvmrc), npm.
git clone <this repo> && cd SuperhumanIsDead
./scripts/setup.sh # installs dependencies, runs tests, builds
npm run dev # launches the app with hot reload
On first launch you can press Try the sample inbox to see the whole UI with fake data. To use your real mail you need two keys, both entered in the app's setup screen and stored encrypted on your Mac.
Gmail access needs an OAuth client that belongs to you. Google does not let apps share one.
https://www.googleapis.com/auth/gmail.modify. Under Test users add your
own Gmail address. You do not need to publish or verify the app for personal use.127.0.0.1. Google shows an "unverified app" warning because
this is your own test app; click Continue.Summaries, AI drafts and AI inbox sorting use Claude. Create a key at https://console.anthropic.com and paste it into the setup screen. Without it everything else still works.
| Key | Action |
|---|---|
j / k | Next / previous conversation |
e | Mark done (archive). In Done, moves back to inbox |
h | Snooze (1–5 picks a preset, or choose a time) |
r / a / f | Reply / reply all / forward |
c | Compose |
s / u / x | Star / unread / select |
z | Undo the last action |
⌘K | Command palette |
/ | Search (Gmail search syntax) |
Tab / ⇧Tab | Next / previous split |
g i g o g s g h g t g d g e | Go to Important, Other, Starred, Snoozed, Sent, Drafts, Done |
⌘J | AI: summarize the conversation (in the composer: write the draft) |
⌘⇧R | AI: draft a reply |
⌘↵ | Send |
? | All shortcuts |
src/main Electron main process: OAuth loopback flow, encrypted store (safeStorage),
Gmail REST proxy with token refresh, Claude proxy (streaming), snooze scheduler
src/preload The window.duper bridge (contextIsolation + sandbox on)
src/shared Pure modules: MIME builder, Gmail parser, split rules, key bindings. Unit tested.
src/renderer React UI: thread list, reading pane, composer, palette, overlays, demo inbox
safeStorage and never leave the machine. Mail content goes to Google and, only when
you invoke an AI action, to Anthropic.npm run dist:mac # produces dist/SuperhumanIsDead-<version>.dmg (unsigned unless you add an identity)
Set CSC_NAME or CSC_LINK/CSC_KEY_PASSWORD for electron-builder to sign and notarize.
npm test # vitest over src/shared
npm run typecheck
docs/SUPERHUMAN_SPEC_PROMPT.md is a prompt for an agent with a Superhuman account to
produce a measured spec (tokens, layout, motion, keyboard map). The resulting
docs/SUPERHUMAN_SPEC.md is the acceptance checklist; src/renderer/src/styles.css
holds every token in one place so the match is a matter of editing values.
MIT
web/ holds the single marketing page and /login (Firebase project yourappisdead,
email/password + Google). Copy web/.env.example to web/.env with the web app config, then:
npm run dev:web # local preview
npm run build:web # static files in out/web, served under /superhumanisdead/
Design tokens and the font (Inter, OFL, closest open match to Superhuman's sans) come from
the shared IsDead design system; refresh with npm run sync:design.
The full Superhuman keyboard map lives in src/shared/keys.ts (⌘K → Keyboard shortcuts shows it).
Highlights: E done, ⇧E not done, H remind me (natural language, "only if nobody replies"),
# trash, ! spam, ? Ask AI, 0 calendar (- T = to move days), g ; snippets,
;name inline snippets and ⌘; picker in the composer, ⌘⇧L send later, ⌘⇧H remind if no reply,
⌘⇧Z send instantly, ⌘⇧↵ send and mark done. Undo send uses the delay set in Settings.
Calendar uses the calendar.events scope (read and write): sign out and back in after upgrading.
N/P next/previous message, O expand, Space/⇧Space page, ← folder and label menu, ⌘O links and attachments, ⌘P print.V move, L labels, Y remove the label you are viewing, ⇧Y remove all labels, [ / ] remove then next/previous, ⇧M mute, ⌘U unsubscribe (asks first).Ctrl+1–9 switch account; ⌘K → Add another account.⇧C, ⇧R, ⇧↵, ⇧F open the draft in a floating window; ⌘⇧P pops it in/out, ⌘D toggles focus between draft and thread.⌘B ⌘I ⌘U ⌘K ⌘⇧X ⌘⇧7/8/9 (bold, italic, underline, link, strike, numbered, bullets, quote), ⌘⇧A attach (or drop files), ⌘⇧I Instant Intro, ⌘⇧F change From, :name emoji.2 week view, B quick-create ("Lunch with Ada tomorrow 1pm for 45m"), ⇧B full form. Guests only get an invitation if you add them, and the form says so.Settings → Read statuses. Turn it on and every email you send carries an invisible 1×1 image from a server you host
(node tools/pixel-server.mjs). Recipients are not told and some mail apps preload images, so treat it as a hint. Nothing is added unless both the host and the toggle are set.
npm run build, serve out/renderer (python3 -m http.server 5181 -d out/renderer), then SMOKE_CHROME=/usr/bin/google-chrome node scripts/smoke.mjs. It drives the sample inbox in a browser with a stubbed preload; no Google, no email.
This project is part of yourappisdead, a marketplace of free, open-source clones of paid SaaS apps. It is an independent clone built from public product behavior; it is not affiliated with, endorsed by, or using any code or assets from the original product. All brand names belong to their owners.
LICENSE).isdead-design.The website (web/) sends PostHog events to the shared IsDead project. See docs/ANALYTICS.md. The desktop app sends nothing.