Coffee Note is a cross-platform desktop note agent built around local Markdown files. Its core experience is an editable T1–T5 priority map: your most important notes stay visible, while AI can search, organize, summarize, and create without turning the app into a coding tool or task manager.
| Project | Current state |
|---|---|
| Desktop | Windows, macOS, Linux |
| Storage | Local Markdown library and local conversation records |
| Model protocols | OpenAI-compatible APIs and Anthropic Messages API |
| Primary optimization | DeepSeek prefix-cache reuse and usage visibility |
| License | MIT |
Release binaries are currently unsigned. Windows and macOS may show an unverified-publisher warning during installation.
- DeepSeek-aware AI chat — stable request prefixes improve cache reuse; requests, cache hits, tokens, context use, and estimated cost remain visible.
- Library Graph retrieval — searches titles, paths, headings, body text, Markdown links, and nearby notes without an embedding API, vector database, or indexing tokens.
- Local-first notes — browse and edit ordinary Markdown files in a restrained three-pane desktop workspace.
- T1–T5 priorities — rank and reorder notes directly from Home so the important work remains legible.
- My Contexts — selectively expose goals, experience, lessons, priorities, and key records to AI retrieval.
- Media to notes — turn supported video or audio links and local media files into structured notes through cloud or local speech recognition.
- Document intake — read text, Markdown, HTML, DOCX, PPTX, XLSX, PDF, images, audio, and video through scoped import tools.
- Phone capture — connect Weixin or Telegram and send private webpage or media links back to the desktop for local processing.
- Replaceable providers — configure DeepSeek or another OpenAI-compatible endpoint, or use Anthropic's native Messages API.
Download the appropriate installer from the latest GitHub Release, or use the remote installer:
Windows PowerShell
irm https://note.coffeecli.com/install.ps1 | iexmacOS / Linux
curl -fsSL https://note.coffeecli.com/install.sh | sh| Platform | Architectures | Packages |
|---|---|---|
| Windows | x64 | NSIS .exe, MSI |
| macOS | Apple Silicon, Intel | DMG |
| Linux | x64 | AppImage, DEB, RPM |
| Linux | arm64 | DEB, RPM |
flowchart LR
UI["React + TypeScript UI"] --> IPC["Tauri IPC"]
IPC --> Core["Rust Note Agent"]
Core --> Library["Local Markdown Library"]
Core --> Memory["Local Context & Conversations"]
Core --> Models["DeepSeek / OpenAI-compatible / Anthropic"]
Channels["Weixin / Telegram"] --> Core
- Desktop shell: Tauri 2 with a React 18, TypeScript, and Vite frontend.
- Agent runtime: a focused Rust core in
agent_loop.rsandagent_tools.rs, built for note search, reading, writing, memory routing, and completion-oriented tool use. - Safety boundary: tools operate on the selected library and explicit local files; the agent does not expose arbitrary shell execution or unrestricted filesystem writes.
- Retrieval: Library Graph builds a lightweight local relationship map from Markdown structure and links, then returns only relevant passages.
- Context: recent conversation, enabled My Contexts pages, the open note, and relevant library passages are routed separately and compacted locally when needed.
- Networking: Rust uses
reqwestwith rustls for model streaming, web reading, release checks, and optional transcription services. - Media: local audio decoding uses Symphonia; transcription can use configured cloud services or the local recognition path.
For more detail, see Architecture, Note Agent design, and cost-oriented agent decisions.
| Path | Purpose |
|---|---|
src/ |
React desktop UI and TypeScript application logic |
src-tauri/ |
Rust backend, agent loop, retrieval, file and media handling |
starter-knowledge/ |
Bilingual first-run library content |
tests/ |
Frontend and shared-logic tests |
docs/ |
Architecture, agent, library, and release documentation |
website/ |
Product site, localized screenshots, installers, and download Worker |
.github/workflows/ |
Version and cross-platform release automation |
Prerequisites:
- Node.js 22 or later
- Rust toolchain
- Tauri platform prerequisites for your operating system
npm ci
npm run library:check
npm run typecheck
npm test
npm run tauri:devUseful verification commands:
npm run build
npm run release:check
cargo check --manifest-path src-tauri/Cargo.toml
cargo test --manifest-path src-tauri/Cargo.toml- Your note library and complete conversation records stay on your computer by default.
- Only requests you initiate send the selected context to your configured model provider.
- Knowledge-library access is path-scoped and canonicalized to block traversal outside the selected root.
- Provider configuration, including API keys, is stored as plaintext JSON only in the current user's Coffee Note app-data directory. It is never written into this repository or the note library.
- No telemetry service is required for the local note workflow.
Tags matching v* trigger quality checks and native builds for Windows x64, macOS Apple Silicon, macOS Intel, Linux x64, and Linux arm64. See RELEASE.md for the version checklist and asset naming rules.
Coffee Note is available under the MIT License. Third-party acknowledgements are listed in THIRD_PARTY_NOTICES.md.

