reflect-open is a free, open source note taking & knowledge management project written in TypeScript and released under MIT. It has 1,530 GitHub stars, 123 forks and 70 open issues, and was last pushed 68 minutes ago. On this registry it ranks #39 of 61 tracked projects in Note Taking & Knowledge Management, with 5 head-to-head comparisons available.

What is reflect-open?

Reflect-open is an open-source, local-first rewrite of Reflect for people who want a Markdown-based note-taking app on Mac and iPhone that AI agents and other tools can read, edit, and script directly.

What it is

Reflect-open is a TypeScript, MIT-licensed note-taking application built around a plain folder of Markdown files, which the app calls a graph. The graph contains daily/2026-06-12.md for dated notes, notes/some-title.md for titled notes, an assets/ directory for images and attachments, and an audio-memos/ directory for recordings and transcripts. Markdown files remain the source of truth, so they stay usable in any Markdown editor, while Reflect layers search, backlinks, tags, and related notes on top without converting the notes into an app-only database.

The concrete problem it solves is that most AI-capable note apps lock your writing into a proprietary store and require an account. Reflect-open does not require a Reflect account: the notes live in a folder you choose, and external services such as AI providers, transcription, iCloud, GitHub, or another git remote are connected directly by the user rather than proxied through a vendor.

Key capabilities

  • Daily notes are the default capture target, and the app opens directly to today's note.
  • Wiki links connect notes: typing [[ inserts a link, and each note displays what links back to it.
  • ⌘K runs local search across notes, backlinks, and tags, with optional semantic search enabled locally.
  • ⌘J asks questions of your notes using user-provided OpenAI, Anthropic, Google, or OpenRouter keys, and answers cite their source notes.
  • Setting private: true on a note excludes its content from AI and other external services.
  • Audio memos are recorded and transcribed into the daily note through a configured transcription provider.
  • A CLI exposes reflect today, reflect search, and reflect show for scripts and agents, documented in docs/cli.md.

Who uses it and how

  • Mac users who want the app to open on today's note and keep everything in an inspectable folder such as iCloud Drive/ReflectGraph.
  • iOS users running the TestFlight beta against the same plain-file graph and the same sync options as the Mac app.
  • People syncing via iCloud Drive for simple cross-device file sync, or via a connected GitHub account or any SSH git remote for versioned backup in a repository they control.
  • Users who capture from the browser through the Reflect Capture Chrome extension, saving the current page, selected text, screenshots, and optional page text.
  • Agent and script authors driving the notes folder through reflect today, reflect search, and reflect show.

Getting started

Download and install the latest signed, notarized Mac release from GitHub Releases (Reflect_aarch64.dmg for Apple silicon or Reflect_x86_64.dmg for Intel), join the TestFlight beta for iOS, and add Reflect Capture from the Chrome Web Store; building from source is also documented in the README.

How it compares

Reflect-open is the open-source rewrite of Reflect, and it removes the account requirement: notes are plain files in a folder you own rather than content held by a hosted service, and sync goes straight to iCloud Drive or a git repository under your control. The project itself is MIT-licensed and its AI, transcription, and sync connections are made directly with the user's own keys and remotes instead of a subscription tier.

When to use it — and when not to

A user must supply and maintain the optional pieces themselves — an AI provider key, a transcription provider, an iCloud folder or git remote, and the Chrome extension — and the app runs only on Mac, iPhone, and Chrome, so it will not suit Windows or Linux users. It is also not for people who want a shared account-based service or who are unwilling to manage their own files, and the 70 open issues together with an iOS build still in beta signal an actively-developed project with rough edges.

project readme (upstream, from github) — read inline

Reflect

Plain-file notes for Mac and iPhone: daily notes, wiki links, local search, and optional AI over your own Markdown.

Release CI License: MIT

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.

Reflect

Features

  • Daily notes: the app opens to today's note, and capture defaults there.
  • Wiki links and backlinks: type [[ to link notes; each note shows what links back to it.
  • Local search: ⌘K searches notes, backlinks, and tags. Optional semantic search can be enabled locally.
  • Ask your notes: ⌘J can query notes through user-provided OpenAI, Anthropic, Google, or OpenRouter keys. Answers cite source notes.
  • Private notes: private: true excludes a note's content from AI and other external services.
  • Audio memos: record audio and transcribe it into the daily note with a configured transcription provider.
  • Browser capture: save links, selected text, screenshots, and page text from Chrome.
  • Sync choices: use iCloud Drive for file sync, or git/GitHub for versioned backup.
  • CLI: reflect today, reflect search, and reflect show are available for scripts and agents. See docs/cli.md.

Install

  1. 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.

  2. Install the iOS beta. Join TestFlight. The iOS app uses the same plain-file graph and sync options as the Mac app.

  3. 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.

Your Notes Are Files

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.

Sync and Privacy

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.

Building from Source

Prerequisites:

git clone https://github.com/team-reflect/reflect-open.git
cd reflect-open
corepack enable
pnpm install
pnpm tauri dev
pnpm tauri build

Project Layout

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.

Development

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

Status

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.

License

MIT.

Frequently asked questions

Is reflect-open free to use?

reflect-open is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does reflect-open do?

Open-source Reflect rewrite: A local-first AI agent-friendly Markdown note-taking app

What is reflect-open written in?

reflect-open is primarily written in TypeScript. Its source is publicly available at https://github.com/team-reflect/reflect-open, and it has 1,530 GitHub stars.