An open-source, privacy-first AI meeting notepad for macOS
Keep your meeting transcripts local with AI-powered summaries. No account required.
Why Jot? Unlike cloud-based tools, Jot runs Whisper transcription locally on your Mac. No account required, no subscriptions, no data leaving your machine (except optional AI summaries).
- Apple Notes-Inspired UI - Clean, minimal interface with sidebar navigation and rich text editing
- Live Transcription - Real-time speech-to-text during meetings using Whisper AI (runs locally, no cloud required)
- Chat with Note - Ask questions about your notes or request AI to add/modify content
- Privacy-First - All transcription happens on your Mac, no account/signup needed, SQLite database you control
- Dual Audio Recording - Capture both system audio and microphone simultaneously via macOS ScreenCaptureKit
- AI Summaries - Generate intelligent meeting summaries with 8 contextual prompts (action items, key decisions, Q&A, etc.)
- Multi-Color Highlights - Organize your notes with 6 highlight colors (yellow, orange, pink, purple, green, blue)
- Apple Notes Import - Drag notes from Apple Notes to Finder, then import .txt/.md/.html/.rtf files
- Audio Playback - Optional embedded player to review meeting audio
- Keyboard Shortcuts -
Cmd+N(new note),Cmd+Backspace(delete),Cmd+R(toggle recording) - Open Source - MIT licensed, audit the code, contribute features, self-host if you want
- Frontend: React 19 + TypeScript + Vite 7 + Tailwind v4
- Editor: Tiptap v3 (rich text with tables, lists, highlights)
- Backend: Tauri v2 (Rust 1.93) with macOS ScreenCaptureKit
- Database: SQLite via tauri-plugin-sql
- Transcription: Whisper (whisper-rs, runs locally)
- AI: Multi-provider support (OpenAI, Anthropic, DeepSeek, Moonshot)
- State: Zustand
- macOS 10.15+ (Catalina or later)
- Node.js 22.x (for development)
- CMake (for building Whisper)
brew install cmake - Rust 1.93+ (for Tauri)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - pnpm (package manager)
npm install -g pnpm
# Clone the repository
git clone https://github.com/yourusername/jot.git
cd jot
# Install Node 22 (using nvm)
nvm install 22
nvm use 22
# Install dependencies
pnpm install
# Start dev server
./dev.sh
# Or manually:
export MACOSX_DEPLOYMENT_TARGET=10.15
pnpm tauri dev
export MACOSX_DEPLOYMENT_TARGET=10.15
pnpm tauri build
Note: Production builds currently have issues with whisper-rs CMake linking. Use GitHub Actions for releases or run in dev mode.
-
Grant Screen Recording Permission
- System Settings > Privacy & Security > Screen Recording
- Enable "Jot"
- Restart the app
-
Download Whisper Model
- Click Settings (βοΈ) in sidebar
- Select a model (Tiny = 74 MB, Base = 142 MB, Small = 466 MB)
- Click "Download Model"
- Wait for download to complete
-
Add AI API Key (for summaries and chat)
- Choose your preferred provider in Settings:
- OpenAI - Get key from https://platform.openai.com/api-keys
- Anthropic - Get key from https://console.anthropic.com/settings/keys
- DeepSeek - Get key from https://platform.deepseek.com/api_keys
- Moonshot - Get key from https://platform.moonshot.cn/console/api-keys
- Paste key into Settings
- Your key is stored locally and only sent to your chosen provider
- Choose your preferred provider in Settings:
- Click Record button (or press
Cmd+R) - Choose audio sources:
- System Audio - Capture speakers (Zoom, Meet, etc.)
- Microphone - Capture your voice
- Speak normally - live transcription appears every 15 seconds
- Click Stop to end recording
- (Optional) Click Summarize for AI-generated summary
- In Apple Notes, select a note
- File > Export as Plain Text... (or drag to Finder)
- In Jot, click Upload (π€) icon in sidebar
- Select .txt/.md/.html/.rtf files (batch supported)
- Notes appear in "Imported" group
| Shortcut | Action |
|---|---|
Cmd+N |
Create new note |
Cmd+Backspace |
Delete current note |
Cmd+R |
Toggle recording (start/stop) |
Cmd+B |
Bold |
Cmd+I |
Italic |
Cmd+U |
Underline |
- Database:
~/Library/Application Support/com.jot.app/jot.db - Whisper Models:
~/Library/Application Support/com.jot.app/models/ - Audio Recordings:
~/Library/Application Support/com.jot.app/recordings/(if "Keep Audio" enabled)
Jot supports multiple AI providers for summaries and chat. Choose your preferred provider in Settings:
- OpenAI - GPT-5.2, GPT-5-mini (default), GPT-5-nano
- Anthropic - Claude 4.6 Opus, Claude 4.5 Sonnet (default), Claude 4.5 Haiku
- DeepSeek - DeepSeek Chat (default), DeepSeek Reasoner
- Moonshot - Kimi k2.5
Your API key is stored locally in SQLite and only sent to your chosen provider. No data is shared with other providers.
- OpenAI: https://platform.openai.com/api-keys
- Anthropic: https://console.anthropic.com/settings/keys
- DeepSeek: https://platform.deepseek.com/api_keys
- Moonshot: https://platform.moonshot.cn/console/api-keys
- Open Settings (βοΈ in sidebar)
- Click your preferred provider logo (OpenAI / Anthropic / DeepSeek / Moonshot)
- Enter your API key for that provider
- Use "Summarize" or "Chat with Note" - requests go to your selected provider
- Go to Settings > Download Model
- Wait for download to complete (progress shown in button)
- Model file should appear in
~/Library/Application Support/com.jot.app/models/
- Grant Screen Recording permission in System Settings
- Restart Jot after granting permission
- Click "Open Settings" button in error message for quick access
- Check that Whisper model is downloaded
- Ensure you're speaking loud enough (test with system voice memo)
- Try switching to a larger model (Base or Small) for better accuracy
- Ensure CMake is installed:
brew install cmake - Set deployment target:
export MACOSX_DEPLOYMENT_TARGET=10.15 - Clean build:
cd src-tauri && cargo clean
jot/
βββ src/ # React frontend
β βββ components/ # UI components (Sidebar, Editor, Settings, etc.)
β βββ store/ # Zustand stores (notes, recording, settings)
β βββ lib/
β β βββ ai/ # Multi-provider AI integration
β β βββ types.ts # Shared AI types
β β βββ providers.ts # Provider registry (OpenAI, Anthropic, DeepSeek)
β β βββ client.ts # Universal API client
β β βββ summarize.ts # Meeting summarization
β β βββ chat.ts # Chat with note
β βββ index.css # Design system (CSS variables)
βββ src-tauri/ # Rust backend
β βββ src/
β β βββ audio.rs # ScreenCaptureKit audio recording
β β βββ transcribe.rs # Whisper model download & transcription
β β βββ live_transcribe.rs # Live chunked transcription
β β βββ lib.rs # Tauri commands
β βββ tauri.conf.json # Tauri configuration
βββ package.json # Frontend dependencies
- Primary Color: Orange (#FD3200) at 4-12% opacity for backgrounds, solid for CTAs
- Typography: Native macOS fonts (-apple-system, SF Pro Text)
- Spacing: Generous whitespace, 6-10px border radius
- Aesthetic: Apple Notes-inspired (clean, minimal, professional)
- TypeScript: Strict mode enabled
- Components: Functional components with hooks
- State: Zustand stores (separate concerns)
- Memoization:
useMemo/memofor performance - Lazy Loading: Settings, RecordingOptions, ImportModal
- Frontend: 676 kB (214 kB gzipped)
- Lazy-loaded: Settings (2.43 kB), RecordingOptions (1.06 kB)
- Zero TypeScript/ESLint warnings
# TypeScript check
pnpm tsc --noEmit
# Lint
pnpm lint
# Build frontend
pnpm build
# Rust check
cd src-tauri && cargo check
- Chat with note (AI Q&A about meeting content)
- Multi-provider AI support (OpenAI, Anthropic, DeepSeek)
- Custom meeting templates (1-on-1s, user interviews, etc.)
- Export to Markdown/PDF
- HTML import parsing (preserve rich formatting)
- Drag & drop file import
- Full-text search with highlighting
- Light/dark mode toggle
- Windows/Linux support (requires alternative to ScreenCaptureKit)
- iOS app for phone calls
- AppleScript integration for direct Notes.app access
Contributions welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feat/my-feature) - Commit changes with descriptive messages
- Push to your fork and submit a pull request
MIT License - see LICENSE for details
- Tauri - Cross-platform app framework
- Whisper - Speech recognition
- Tiptap - Rich text editor
- ScreenCaptureKit - macOS audio capture
- Issues: https://github.com/yourusername/jot/issues
- Discussions: https://github.com/yourusername/jot/discussions
Made with β€οΈ for productive meetings