Local-first Markdown notes, visual sketches, and fully on-device transcription for Windows and macOS.
Your notes stay as ordinary files in folders you control—no database, cloud, or account required.
- Plain Markdown: rich, WYSIWYG editing backed by portable
.mdfiles. - Local transcription: record your microphone and system audio with Whisper running on your device.
- Visual sketches: build diagrams with Basic, UML, ERD, BPMN, and ArchiMate shapes.
- Fast organization: nested folders, colors, drag-and-drop, fuzzy search, and a command palette.
- Safe by default: autosave, recoverable trash, and no upload unless you explicitly run an AI request.
- Make it yours: 30 built-in themes, custom JSON themes, and reusable SVG stencils.
- Optional AI: use Anthropic, an OpenAI-compatible provider, or local Ollama with only the notes you select.
- Node.js 24+ (22.12 is the minimum supported by Electron 43)
- Git
- macOS: Xcode Command Line Tools
- Windows: Visual Studio Build Tools with the C++ workload
git clone https://github.com/mtom2k/scribe.git
cd scribe
npm ci
npm run devUse npm ci so platform-native ONNX, Sharp, and Sherpa packages match the lockfile. Do not copy
node_modules between operating systems or CPU architectures.
npm run build:win # Windows installer + portable .exe
npm run build:mac # Apple Silicon DMGBuild on the target operating system. Outputs are written to dist/; published builds belong on
GitHub Releases.
Builds are unsigned by default. Windows may show SmartScreen, and macOS may require right-click → Open. macOS support is currently Apple Silicon only.
Scribe stores notes, sketches, attachments, and metadata directly in your notes folder. The editor renders Markdown as you type while keeping the underlying file readable and portable.
Transcription uses Whisper through ONNX inside the app. Audio stays on your machine; only model files are downloaded. On Windows 10+, system-audio loopback works out of the box. On macOS 12.3+, it uses ScreenCaptureKit and requires Screen Recording permission. Speaker labeling is temporarily disabled while its native runtimes are isolated.
The optional AI panel sends only the notes you select, and only after you press Run. API keys are stored locally.
Use Cmd instead of Ctrl on macOS.
| Shortcut | Action |
|---|---|
Ctrl+N / Ctrl+Shift+N |
New file / folder |
Ctrl+P |
Search notes and run commands |
Ctrl+Shift+R |
Start / stop recording |
Ctrl+Shift+A |
Ask AI about selected notes |
Ctrl+Shift+T |
Cycle pinned themes |
Ctrl+, |
Open Settings |
Ctrl+\ |
Toggle the sidebar |
F2 / Delete |
Rename / move to trash |
| Data | Default location |
|---|---|
| Notes, sketches, and attachments | Documents/Notes |
| Recoverable Scribe trash | <notes>/.trash |
| Settings | %APPDATA%/scribe or ~/Library/Application Support/scribe |
| Speech models | App data models/ |
| Custom themes and stencils | App data themes/ and stencils/ |
The notes folder is configurable in Settings. Items left in Scribe's trash move to the operating system trash after seven days.
npm run typecheck
npm run e2eScribe is built with Electron, React, TipTap, Zustand, and ONNX-based local speech models.
Maintainers should start with HANDOFF.md, then read PROJECT_STATE.md, ARCHITECTURE.md, DECISIONS.md, and TESTING.md.

