Open-source Reflect rewrite: A local-first AI agent-friendly Markdown note-taking app
Open-source Reflect rewrite: A local-first AI agent-friendly Markdown note-taking app
Plain-file notes for Mac and iPhone: daily notes, wiki links, local search,
and optional AI over your own Markdown.
Reflect is an open-source note-taking app built around a folder of Markdown
files. It opens to today's note, lets [[wiki links]] connect people,
projects, and ideas, and keeps search and backlinks fast without turning your
notes into an app-only database.
The app does not require a Reflect account. Notes live in a folder you choose, and optional services such as AI providers, transcription, iCloud, GitHub, or another git remote are connected directly by the user.
[[ to link notes; each note shows what
links back to it.⌘K searches notes, backlinks, and tags. Optional semantic
search can be enabled locally.⌘J can query notes through user-provided OpenAI,
Anthropic, Google, or OpenRouter keys. Answers cite source notes.private: true excludes a note's content from AI and
other external services.reflect today, reflect search, and reflect show are available
for scripts and agents. See docs/cli.md.Install the Mac app. Download the latest release for your Mac:
Each build is signed, notarized, and auto-updated from GitHub Releases. You can also view all releases.
Install the iOS beta. Join TestFlight. The iOS app uses the same plain-file graph and sync options as the Mac app.
Install the Chrome extension. Add Reflect Capture from the Chrome Web Store to save the current page, selected text, screenshots, and optional page text from Chrome.
You can also build from source.
See CHANGELOG.md for release notes.
Reflect calls a notes folder a graph. A graph is a folder you can inspect, back up, sync, or edit with other tools:
my-graph/
├── daily/2026-06-12.md # Daily notes, named by date
├── notes/some-title.md # Other notes, named from their titles
├── assets/ # Images and attachments
└── audio-memos/ # Audio recordings and transcripts
Markdown files are the source of truth. Reflect adds search, backlinks, tags, and related notes on top, but the files remain usable in any Markdown editor.
For simple file sync across Apple devices, create your graph inside an
iCloud-synced folder such as iCloud Drive/ReflectGraph.
For versioned backup or non-iCloud sync, connect GitHub in the app or add any SSH git remote. Git sync stores the Markdown graph in a repository you control.
By default, note content stays on the device. External calls only happen after you configure a provider, connect a git remote, or use a platform sync service. See docs/privacy.md for the full privacy model.
Prerequisites:
git clone https://github.com/team-reflect/reflect-open.git
cd reflect-open
corepack enable
pnpm install
pnpm tauri dev
pnpm tauri build
Reflect is a pnpm/Turborepo monorepo:
reflect-open/
├── apps/desktop/ # Mac and iOS app
├── apps/cli/ # `reflect` CLI
├── apps/extension/ # Chrome capture extension
├── apps/native-host/ # Browser capture helper
├── packages/core/ # Shared TypeScript logic
├── packages/db/ # Database types and helpers
├── crates/index-schema/ # Shared index schema
├── design-system/ # Tokens and UI primitives
└── docs/ # Product, architecture, and contributor docs
See CONTRIBUTING.md, docs/contributing/, and AGENTS.md for conventions and development guides.
Common commands from the repository root:
pnpm dev # Vite only, http://localhost:1420
pnpm typecheck # TypeScript
pnpm lint # oxlint
pnpm test # vitest; use --run path/to/test for one file
pnpm check # typecheck + lint
# Rust tests that compile the desktop crate need sidecars staged first
pnpm --filter @reflect/desktop sidecar
cargo test --workspace
For iOS simulator development:
pnpm tauri:ios:dev "iPhone 17 Pro"
For TestFlight builds:
pnpm release:ios preflight --build-number=123
pnpm release:ios testflight --build-number=123 --wait
Reflect is in beta and used daily. The current focus is the Mac app, iOS companion, browser capture, local-first data model, and sync reliability.
Windows, Android, and a plugin API are out of scope for now. See the V2 product vision and the implementation plans in docs/plans/ for the longer-term direction.
MIT.
No open issues yet, or sync has not completed.