尚未检测到更新。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.