尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗An AI chat app built around one annoying problem: you're deep in a conversation, something in a reply catches your eye, you ask about it, and now the whole chat has wandered off. Twenty messages later the thing you actually cared about is buried.
Flow lets you go on tangents without wrecking the main thread. And because the good stuff from a chat usually deserves to live somewhere, it comes with a notes app (Obsidian-style, plain Markdown files) that the AI can read and write.
Every chat in Flow is a tree, not a line.
⌘K. A side panel opens where you can ask about just that bit. The highlight stays in the reply as a link back to your side question.src/lib/context.ts, tested by npm run test:context).Branching is also cheap. Side threads share the main thread's prompt cache up to the fork point, so asking on the side doesn't mean paying to resend the whole conversation.
The chat itself has the things you'd expect, plus a few you'd want:
$x^2$, $$…$$, \(…\)). "$5 and $10" still reads as money, not a formula.On the Home side there's a notes app that works on a folder of Markdown files, so it plays nicely with Obsidian. Point FLOW_VAULT_PATH at an existing vault and it just works.
[[Links]] between notes, with suggestions as you type [[. You can also link to chats, which show up in light red with a line on top./> to make a collapsible section.![[Pasted image ….png]], the same way Obsidian does it.The λ button in the bottom right opens an AI panel beside your notes. It's one conversation, separate from your chats, that stays put as you move between notes. It always knows which note you have open and can actually edit it: reorganize it, add to it, brainstorm into it. You can watch the edits land live, and Undo changes puts it back.
It also knows what's around the note:
[[…]] are sent along automatically,npm install
cp .env.local.example .env.local # add your ANTHROPIC_API_KEY
npm run dev
Then open http://localhost:3000.
No API key? Everything still runs. Without one, Flow uses a mock model. Every reply lists exactly which messages its thread sent, which turns out to be a nice way to see the context isolation working. With a key set, you can still force the mock for free testing by running localStorage.setItem("flow.mock", "1") in the browser console.
Your data stays local. Chats live in SQLite (data/flow.db), uploads in data/attachments/, and notes in data/vault/ (or your own vault). All of it is git-ignored.
Flow has a demo mode for sharing it with people (say, on a resume) without your API key or your notes:
ANTHROPIC_API_KEY, and simulated without one. Anyone with the link is spending your credit, so there's a daily cap: 300 AI requests a day across all visitors and 40 per visitor (FLOW_DEMO_AI_PER_DAY, FLOW_DEMO_AI_PER_VISITOR). Past it, replies are simulated until the next day (UTC). Also set a spend limit in the Anthropic Console.demo/), so nobody sees anyone else's changes. Sandboxes live in temporary storage and are deleted after 6 hours unused.Turn it on with the environment variable FLOW_DEMO=1.
Deploying to Vercel:
FLOW_DEMO = 1. Add ANTHROPIC_API_KEY too for real replies (see the cap above), or leave it out to keep them simulated.KV_REST_API_URL / KV_REST_API_TOKEN variables Flow looks for.main redeploys after that.Why Redis: Vercel runs several copies of the server, each with its own temporary disk, and a visitor's requests can land on any of them. The real copy of each sandbox lives in Redis (about 70 KB each); each server's disk is just a cache of it. Without Redis, a visitor would see their changes come and go.
To try demo mode locally without disturbing the dev server:
NEXT_DIST_DIR=.next-demo FLOW_DEMO=1 npx next build && NEXT_DIST_DIR=.next-demo FLOW_DEMO=1 npx next start -p 3001
The full list is in Settings (⌘,). The ones you'll actually use:
| Key | What it does |
|---|---|
⌘K | In a chat: ask on the side about the highlight (or the latest reply). In a note: link the selection to a page |
Esc / ⇧Esc | Close the side panel and go up a level / jump back to the main thread |
⌥↑ ⌥↓ | Flip between side threads |
⌘\ | Show or hide the side panel |
⌘⇧\ | Show or hide the left sidebar |
W A S D | Move around the map (click the sidebar first) |
[[ | Link to a note or chat |
⌘⌥← | Back to the note you came from |
Right-click handles the rest: renaming and deleting chats and files, linking a highlight to a page.
Built with Next.js 15, React 19, TypeScript, Tailwind 4, SQLite (better-sqlite3), CodeMirror 6 and the Anthropic SDK. Everything runs on Claude Haiku 5.5 (fast and cheap); switching to Sonnet is one line in src/lib/llm.ts.
If you want to poke around:
| File | What's in it |
|---|---|
src/lib/context.ts | What each thread gets to see: the tree-walking that keeps tangents out of the main thread |
src/lib/llm.ts | Streaming from Claude, web tools, prompt caching, and the note assistant's editing loop |
src/lib/live-markdown.ts | The live-preview editor (CodeMirror decorations) |
src/lib/wikilinks.ts | [[links]], chat links, image embeds, paste and drop |
src/lib/toggles.ts | Collapsible toggles in notes |
src/lib/math.ts | Telling math dollars from money dollars |
src/lib/rehype-anchors.ts | Turning highlighted excerpts into clickable marks in rendered replies |
Tests are plain scripts: npm run test:context, test:notes, test:math, test:toggles, test:note-edit and test:chat-note.