AI-Powered Local-First Markdown Note-Taking App
Features • Installation • Usage • Architecture • Contributing • License
🇰🇷 한국어 | 🇺🇸 English
CueNote is an open-source, privacy-first desktop Markdown note-taking app with built-in AI capabilities. Built with Electron + Vue 3 frontend and a FastAPI backend, it supports a wide range of AI providers — from local LLMs (Ollama) to cloud AI (Gemini, OpenAI, Anthropic Claude).
Unlike cloud-based note apps, CueNote stores all your data in local SQLite databases and Markdown files. You can optionally sync to the cloud via GitHub integration.
AI-powered note editing in CueNote
- WYSIWYG editing — Tiptap-based rich text editor
- Full Markdown support: tables, checklists, code blocks, image resizing, and more
- File-based Vault system for organizing notes
- Real-time preview and editing
Select text and right-click or press shortcuts (Alt+A, /) to open the AI context menu:
| Feature | Description |
|---|---|
| Summarize | Condense long notes into key points |
| Translate | Translate to 7+ languages (preserving Markdown formatting) |
| Polish | Improve sentences in professional, casual, or academic tones |
| Expand | Elaborate content with more detail |
| Condense | Shorten while preserving core meaning |
| Proofread | Fix spelling, grammar, and punctuation (Korean & English) |
| Custom Prompt | Freely request any AI editing or writing task |
- Real-time Streaming — AI responses appear as they are generated
- Inline Diff — Compare AI edits in diff format, accept or reject changes
- Proofread Panel — Review errors one by one with individual apply/skip
Real-time AI text analysis and proofreading
A conversational AI assistant that automatically executes app functions:
- 17+ built-in tools — Create/read/save/delete notes, search, manage schedules, query TODOs, and more
- Smart Search — AI understands meaning to find relevant notes
- Auto-organize Notes — AI analyzes content and suggests folder structure
- Web Search — Real-time web search via DuckDuckGo
- Current Note Awareness — Understands the currently open note and performs related tasks
- Multi-step Execution — Handles complex requests through multiple tool calls automatically
AI Chatbot with tool calling — listing all notes
Sync your notes directly with GitHub repositories:
- Clone & Pull — Fetch GitHub repositories locally
- Git Status — View changed files, stage and unstage
- Commit & Push — Commit selected files and push
- AI Commit Messages — AI analyzes changes and auto-generates commit messages
- Create Repositories — Create new GitHub repos from within the app
- Trash Management — Restore or permanently delete files
Easily switch between multiple workspaces:
- Local Environment — Use local folders as vaults
- GitHub Environment — Use GitHub repositories as vaults
- One-click Switching — Instantly switch between environments
- Independent file management per environment
AI analyzes relationships between notes and visualizes them:
- AI Clustering — Automatically group notes by content
- Related Note Discovery — Find notes related to the current one
- Graph Explorer — Interactive D3.js-based graph visualization
- Graph Search — Search for notes within the graph
- Cluster Filtering — View specific clusters only
- Similarity Control — Adjust connection sensitivity via slider
AI-powered knowledge graph with automatic clustering
Automatically extract schedules from notes and manage them:
- AI Schedule Extraction — Auto-detect dates, times, and events from notes
- Relative Date Parsing — Understand expressions like "tomorrow", "next Monday"
- Calendar Views — Day / Week / Month / Year views
- Today Focus Card — See today's schedule at a glance
- Quick Add — Add schedules inline
- Popover Details — Click schedules for quick detail view
Calendar dashboard with today focus and schedule overview
- PDF Text Extraction — Convert PDF content to Markdown
- OCR — Extract text from images using EasyOCR or Gemini Vision
- Handwriting Recognition — Recognize handwriting with TrOCR
- URL Scraping — Automatically convert web pages to Markdown notes
- AI Auto-formatting — Clean up extracted text into well-structured Markdown
Extracting text from images and converting to Markdown
Connect external tools to extend AI capabilities:
- MCP Server Management — Register, start, and stop external MCP servers
- Auto-discovery — Automatically detect tools from connected servers
- Tool Calling — Execute MCP tools via natural language in the AI chatbot
- Built-in Filesystem Server — Filesystem access MCP server included
Freely switch between 4 AI providers:
| Provider | Example Models | Features |
|---|---|---|
| Ollama | Llama 3, Qwen 2.5, etc. | Fully offline, free |
| Google Gemini | Gemini 2.0 Flash, Gemini 3 Flash, etc. | Fast and powerful, free tier |
| OpenAI | GPT-4o, GPT-4.1, o3, etc. | Best general-purpose |
| Anthropic | Claude Sonnet 4.5, Claude Haiku, etc. | Strong at long context |
- Dark / Light theme toggle
- Custom fonts — 30+ built-in fonts + add your own font files
- Category fonts — Set Sans, Serif, and Mono fonts separately
- UI Scale — Adjust from 50% to 200%
- Custom shortcuts — Freely assign shortcuts for key features like AI menu
- Multiple shortcuts — Register multiple shortcuts per function
- 🇰🇷 Korean / 🇺🇸 English fully supported
- 100% Local Storage — All notes stored in local SQLite database
- Local LLM Support — Use Ollama for completely offline AI
- Optional Cloud AI — Cloud AI only connects when you choose
- No Telemetry — Zero usage data collected
- Node.js 18+ and pnpm
- Python 3.11+
- Ollama (optional, for local LLM)
-
Clone the repository
git clone https://github.com/Hyun00505/CueNote.git cd CueNote -
Install JavaScript dependencies
pnpm install
-
Install Python dependencies
pip install -r apps/core/requirements.txt
-
Run the application
# Start everything together pnpm dev:all # Or run separately: pnpm dev:core # Start FastAPI backend pnpm dev:desktop # Start Electron app
-
Access the app
- Desktop app launches automatically
- API available at
http://127.0.0.1:8787
- Install Ollama
- Pull a model (recommended:
llama3.2orqwen2.5)ollama pull llama3.2
- Start Ollama server
ollama serve
| Provider | Get API Key |
|---|---|
| Google Gemini | Google AI Studio |
| OpenAI | OpenAI Platform |
| Anthropic | Anthropic Console |
Enter your API key in CueNote Settings.
- Create a new note with the + button in the sidebar
- Notes are saved as
.mdfiles in your vault folder - Use Markdown syntax or the rich text toolbar
- Select text → right-click or press
Alt+A//to open AI context menu - Choose from summarize, translate, polish, expand, condense, or proofread
- Results appear as inline diffs — accept or reject
- Click the chatbot icon at the bottom of the sidebar
- Use natural language: "Create a new note", "Add a meeting tomorrow at 3pm", "Find project-related notes"
- AI automatically picks the right tools and shows results
- Connect your GitHub token in Settings
- Select or create a repository
- Use the Git panel to view changes, stage, commit, and push
- Write schedules naturally in notes (e.g. "Team meeting on Friday at 3pm")
- Click AI Schedule Extract to auto-detect
- View and manage in the calendar
- Drag & drop PDF files or images into the editor
- Enter a URL to import web page content
- Enable handwriting mode for handwriting recognition
CueNote/
├── apps/
│ ├── core/ # FastAPI Backend
│ │ ├── app/
│ │ │ ├── routers/ # API Endpoints
│ │ │ │ ├── ai.py # AI features (summarize, translate, polish, etc.)
│ │ │ │ ├── chatbot.py # AI Chatbot (17+ tool calls)
│ │ │ │ ├── github.py # GitHub integration
│ │ │ │ ├── graph.py # Knowledge Graph
│ │ │ │ ├── mcp.py # MCP server management
│ │ │ │ ├── schedules.py # Schedule management
│ │ │ │ ├── environment.py # Multi-environment
│ │ │ │ ├── vault.py # File/Note management
│ │ │ │ ├── llm.py # LLM provider management
│ │ │ │ └── todos.py # TODO management
│ │ │ ├── ollama_client.py # Ollama API client
│ │ │ ├── gemini_client.py # Gemini API client
│ │ │ ├── openai_client.py # OpenAI API client
│ │ │ ├── anthropic_client.py # Anthropic API client
│ │ │ ├── mcp_client.py # MCP client manager
│ │ │ ├── web_extractor.py # Web content extractor
│ │ │ ├── ocr_client.py # OCR engine (EasyOCR/TrOCR/Gemini Vision)
│ │ │ └── db.py # SQLite database
│ │ └── data/ # SQLite database files
│ │
│ └── desktop/ # Electron + Vue Frontend
│ ├── main.js # Electron main process
│ └── renderer/
│ └── src/
│ ├── components/
│ │ ├── AIChatbot.vue # AI Chatbot UI
│ │ ├── AIContextMenu.vue # AI Context Menu
│ │ ├── AIInlineDiff.vue # AI Inline Diff
│ │ ├── AIProofreadPanel.vue # Proofreading Panel
│ │ ├── EditorView.vue # Main Editor
│ │ ├── GraphView.vue # Graph View
│ │ ├── DashboardView.vue # Dashboard (Calendar)
│ │ ├── SettingsView.vue # Settings
│ │ ├── sidebar/ # Sidebar (Files, Git, Environment)
│ │ ├── graph/ # Graph components
│ │ ├── dashboard/ # Calendar components
│ │ ├── toolbar/ # Editor toolbar
│ │ ├── settings/ # Settings tabs (AI, Appearance, OCR, MCP, Fonts, Shortcuts)
│ │ └── editor/ # Editor helper components
│ └── composables/ # Vue Composables
│ ├── useGitHub.ts # GitHub integration
│ ├── useGraph.ts # Graph management
│ ├── useChatbot.ts # Chatbot management
│ ├── useEnvironment.ts # Environment management
│ ├── useSchedule.ts # Schedule management
│ ├── useSettings.ts # Settings management
│ ├── useFonts.ts # Font management
│ ├── useShortcuts.ts # Shortcut management
│ ├── useI18n.ts # Internationalization (KO/EN)
│ └── useTiptapEditor.ts # Tiptap editor
│
├── packages/
│ ├── contracts/ # Shared TypeScript types & schemas
│ └── shared/ # Shared utilities
│
└── data/ # Default vault location
| Layer | Technology |
|---|---|
| Desktop Shell | Electron 28 |
| Frontend | Vue 3, Vite, Tiptap, D3.js |
| Backend | FastAPI, SQLite |
| AI/LLM | Ollama, Google Gemini, OpenAI, Anthropic Claude |
| OCR | EasyOCR, TrOCR (Transformers), Gemini Vision |
| Tool Protocol | MCP (Model Context Protocol) |
| Version Control | GitHub API, Git CLI |
We welcome contributions! Here's how you can help:
- 🐛 Report bugs — Open an issue with detailed reproduction steps
- 💡 Suggest features — Share your ideas in discussions
- 📝 Improve docs — Help us make documentation clearer
- 🔧 Submit PRs — Fix bugs or implement new features
- Fork and clone the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Run tests and linting
- Commit with clear messages:
git commit -m 'Add amazing feature' - Push and open a Pull Request
- Frontend: ESLint + Prettier
- Backend: Black + isort
- Commit messages: Conventional Commits
- Multi AI provider support (Ollama, Gemini, OpenAI, Anthropic)
- AI Chatbot (Tool Calling)
- GitHub integration & Git sync
- Knowledge Graph & AI Clustering
- MCP (Model Context Protocol) support
- Multi-environment system
- Custom fonts & UI scale
- Internationalization (KO/EN)
- Custom shortcuts
- Plugin system
- Mobile companion app
- Real-time collaboration
- Export to various formats
CueNote is open-source software licensed under the MIT License.
- Tiptap — Headless rich text editor
- Ollama — Local LLM runtime
- FastAPI — Modern Python web framework
- EasyOCR — Ready-to-use OCR
- Electron — Cross-platform desktop apps
- D3.js — Data-driven visualizations
Made with ❤️
