Lattice
연구를 위한 작업공간
키보드 중심 Mac용 Gmail 클라이언트, AI 초안 기능을 제공하는 오픈소스 Superhuman 대안, 무료
Open-source Superhuman alternative: a keyboard-first Gmail client for Mac with AI drafts that use your own key. Free and open source.
생산성TypeScript · CSSGitHub @tommy-muckstack온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.