Plain-file notes for Mac and iPhone: daily notes, wiki links, a graph view, tabs, local search, and AI over your own Markdown — billed to the ChatGPT or Claude subscription you already have.
Kore is a personal fork of Reflect (reflect-open) — an open-source, local-first note app by the Reflect team, MIT-licensed. Kore keeps Reflect's plain-file model and privacy stance and builds a customized experience on top: a Craft/Linear-grade design language, note tabs, a dual sidebar layout, a force-directed graph view, an in-app browser and file viewer, and subscription AI through local coding-agent CLIs.
The app does not require any 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.
- Design language: ink hairlines, one accent color, raised-pill controls, a floating note card between two full-height rails — light and dark, with themes (Space, Midnight, Paper) and custom accent colors.
- Note tabs: a Linear-style tab strip (
⌃Tab/⌃⇧Tabcycle,⌘Wcloses, double-click pins) plus an "Open" section in the sidebar, persisted per graph and restored at launch. - Dual rails: the left navigation and the right context rail (Details /
Chat / Calendar panels) collapse independently —
⌘\and⌘⇧\. - Graph view: every note and wiki link as a force-directed map — pan, zoom, hover to spotlight a neighborhood, drag to rearrange, click to open.
- In-app browser: web links in notes open in their own window inside the app (Alt-click for the OS browser). Pages get a bare webview with zero access to your notes.
- File viewer: PDF, HTML (fully sandboxed), DOCX, CSV/TSV, and plain-text attachments open in-app; anything else falls back to the OS.
- Subscription AI: chat with your notes through the locally installed
Claude Code or Codex CLI — including Sign in with ChatGPT from inside
the app — with
private: truenotes hard-blocked at the CLI sandbox level. BYOK providers (OpenAI, Anthropic, Google, OpenRouter) still work. - Agents: named agent profiles with a soul (identity — your file) and a
memory (its file), a shared user profile and shared memory (signed facts +
a session journal) every agent reads, edit mode so chat can actually work
the vault, write approval, and Automations — scheduled agent runs
(with a one-click Memory curator) that keep the whole thing tidy — plus
MCP servers configured in-app (tokens in the OS keychain, never on
disk) that give agents external tools in edit mode. All of it plain
markdown under
agents/, portable and versioned like any note. Outside the app, Settings → Agents installs skills that teach Claude Code, Codex, and Cursor thereflectCLI and Kore's formats (markdown, collections, agent memory). - Everything else: unlinked mentions with one-click linking, an All-notes
masonry view, template placeholders (
{{date}},{{time}},{{title}}), task priorities and recurrence, saved searches, and an Insights dashboard.
See docs/delivery-log.md for the full changelog of the customization, and docs/roadmap.md for what is planned next.
The next development wave targets a local-first Personal OS: Graph-scoped knowledge, multiple external accounts, persistent agents, structured Objects, and a durable execution runtime. This is planned direction, not a list of features already available in the installed app.
- Roadmap: Priorities, slice build guidance, risk register, and delivery gates.
- Target architecture: Domain, runtime, privacy, storage, existing-source baseline, and unresolved design decisions.
- Plan 25: All 29 initiatives, dependencies, first implementation slices, acceptance tests, and source traceability.
- Planning inventory: Every planning, decision, porting, and supporting reference document in this repository.
The app ships under the product name Kore (the repository is Kore);
the bundle you install is Kore.app.
Install from a release (recommended): grab the latest .dmg from
Releases and drag
Kore.app into Applications. The build is unsigned, so recent macOS
quarantines the download and claims the app "is damaged" — it isn't; clear
the quarantine flag once from Terminal and open normally:
xattr -cr /Applications/Kore.app(If macOS still objects: System Settings → Privacy & Security → "Open Anyway".) From then on the app updates itself from new releases — check Settings → About, or just wait.
Or build from source — prerequisites first (one-time):
xcode-select --install # Xcode Command Line Tools
curl https://sh.rustup.rs -sSf | sh # Rust toolchain
npm install -g pnpm # pnpm (Node 22+ required)git clone https://github.com/mariomile/Kore.git kore
cd kore
pnpm install
pnpm tauri buildThe installers land in apps/desktop/src-tauri/target/release/bundle/:
macos/Kore.app— drag it into/Applicationsdmg/*.dmg— the same app as a disk-image installer
A locally built app runs without Gatekeeper warnings on the machine that
built it. To produce signed, notarized installers for other Macs (with
auto-update), use pnpm release:macos — see
docs/macos-distribution.md.
Kore ships with its own Apple identity (app.lore.*, iCloud container
iCloud.app.lore). iCloud sync and iPhone installs need an Apple Developer
account — the one-time checklist is in
docs/kore-apple-signing.md; everything else
(local graphs, Git history, GitHub sync) works with no account at all.
For a quick look without installing, pnpm tauri dev runs the app with hot
reload; pnpm tauri:dev runs the separate "Dev" flavor that coexists with an
installed build.
Kore 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
├── templates/ # Note templates (placeholders expand on insert)
├── assets/ # Images and attachments
└── audio-memos/ # Audio recordings and transcripts
Markdown files are the source of truth. Kore adds search, backlinks, tags, tabs, and the graph view 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. For versioned backup or non-iCloud sync, connect GitHub in the app or add any SSH git remote.
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. private: true in a note's frontmatter is a hard block: that note's
content never reaches AI or other content-processing services — enforced for the
CLI providers at the sandbox level, not by prompt. See
docs/privacy.md for the full model. User-enabled file sync
and backups include private notes. Git sync excludes chat history and chat
attachments; use Settings → Sync & data → Graph archive on Mac to export and restore
notes, saved chats, attachments and graph automations together.
Kore is a pnpm/Turborepo monorepo (structure inherited from Reflect):
kore/
├── apps/desktop/ # Mac and iOS app (Tauri 2 shell + React frontend)
├── apps/cli/ # `reflect` CLI — Rust read/discovery/capture tool
├── apps/extension/ # Chrome capture extension
├── apps/native-host/ # Browser capture helper (native-messaging spooler)
├── packages/core/ # Shared TypeScript business logic
├── packages/db/ # Database types and helpers (Kysely + IPC dialect)
├── packages/utils/ # Small dependency-free helpers (ISO date math)
├── crates/index-schema/ # Shared SQLite index schema and migrations
├── crates/graph-paths/ # Shared graph-path classification (Rust ↔ TS parity)
├── plugins/ # First-party Tauri plugins (keyboard, recording)
├── fixtures/ # TS ↔ Rust parity test corpora
├── design-system/ # Design tokens and the Inter webfont
└── docs/ # Product, architecture, and contributor docs
See AGENTS.md for conventions and the development cycle.
Common commands from the repository root:
pnpm dev # turbo dev: Vite app on http://localhost:1420 (+ extension dev server)
pnpm check # typecheck + lint
pnpm test # vitest; use --run path/to/test for one file
pnpm --filter @reflect/desktop e2e # Chromium smoke of the Vite app (no Tauri shell)
# Rust tests that compile the desktop crate need sidecars staged first
pnpm --filter @reflect/desktop sidecar
cargo test --workspaceKore is built on Reflect (reflect-open) by the Reflect team. Both the upstream project and this fork are MIT-licensed. Upstream fixes are merged deliberately — see docs/upstream-merges.md for the playbook.