A lightweight, portable note-taking app with semantic memory and hybrid search.
Report Bug
·
Request Feature
Table of Contents
How often, while working or at the computer, do you find yourself taking quick notes in basic editors like Windows Notepad, Gedit, or whatever? Writing down dates, tasks, or bullet points during a meeting to remember what to say? I do it every day.
The problem begins when you need to retrieve those thoughts weeks or months later. You need that exact keywords, maybe the date, and text search falls short if you can't recall the specific wording. Or you did not even save the note...
NoteLook tries to solve this. It preserves the instant feel of a minimalist notepad, but adds semantic memory.
NoteLook is a simple project bringing together three core goals:
- Rust: Building an efficient, low-footprint desktop application using modern Rust patterns.
- Local Natural Language Processing: Integrating offline, CPU-friendly embeddings without relying on third-party cloud APIs.
- A Notepad with Memory: Creating a fast, local note-taking tool that understands both exact keywords and conceptual meaning.
- Lightweight Footprint: Designed to remain fast and portable without bloat.
- Hybrid Search (Vector + Lexical): Fuses dense semantic vector embeddings with native full-text retrieval using Reciprocal Rank Fusion (RRF).
- Token-Aware Markdown Chunking: Automatically splits long Markdown documents into chunks.
- 100% Local & Offline: All inference runs locally via Hugging Face Candle on CPU: the notes never leave the machine.
- Dual Interface: Includes both desktop GUI and a CLI for scriptable ingestion and terminal queries.
Download Pre-built Binaries at Release
- Windows (.zip)
- Linux (.tar.gz)
- macOS (.tar.gz)
- Rust Toolchain: Stable Rust (edition 2021 or newer).
curl --proto '=https' --tlsv1.2 -sSf [https://sh.rustup.rs](https://sh.rustup.rs) | sh
- Git: To clone the repository.
- Note: On the first run, NoteLook downloads the
paraphrase-multilingual-MiniLM-L12-v2model weights (~90MB) from Hugging Face into your local cache directory. Subsequent runs operate completely offline.
- Clone the repository:
git clone [https://github.com/AlbertKurtz/notelook.git](https://github.com/AlbertKurtz/notelook.git) cd notelook - Build the release binaries:
cargo build --release
- Run the GUI application:
cargo run --release --bin notelook
Launch the desktop interface:
cargo run --release --bin notelookor the executable.
- Sidebar: View your recent notes, sorted by last update. Active notes display an accent indicator.
- Editor: Live line and character counts with dirty-buffer tracking.
- Hybrid Search Bar: Type queries in the sidebar search box and press
Enter. Results return both lexical and semantic matches with similarity match percentages.
| Shortcut | Action |
|---|---|
| Ctrl + S | Save note and trigger background re-indexing |
| Ctrl + N | Create a new note |
| Ctrl + E | Export a note to .txt or .md |
| Ctrl + Q | Quit application |
A companion CLI utility is provided for terminal-centric workflows and scripting:
- Add a Markdown file directly into the database:
cargo run --bin cli -- add path/to/meeting_notes.md
- Search notes from the command line:
cargo run --bin cli -- search "cache failure on production" 5 - List recently saved notes:
cargo run --bin cli -- list
┌────────────────────────┐
│ Iced 0.14 GUI │
│ (Editor & Sidebar) │
└───────────┬────────────┘
│ Async Tasks
▼
┌──────────────────────────────────────────────────────────────┐
│ Background Worker │
│ │
│ 1. Content Hashing (blake3) -> Detect edits │
│ 2. Tokenizer-Aware Markdown Chunking (text-splitter) │
│ 3. CPU Inference Pool (Candle + `embedding model`) │
└──────────────────────────────┬───────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ Turso / libSQL Engine │
│ │
│ • notes -> Raw text and metadata │
│ • chunks -> Token-sliced text + F32_BLOB(384) vectors │
│ • Search -> Vector cosine distance + Native FTS │
│ fused via Reciprocal Rank Fusion (RRF) │
└──────────────────────────────────────────────────────────────┘
- Embedded local vector storage via Turso / libSQL (
F32_BLOB) - CPU inference engine with Hugging Face Candle
- Token-based semantic Markdown splitting
- Multi-channel hybrid search (BM25 + Cosine Distance fused with RRF)
- Responsive Iced 0.14 desktop interface with keyboard shortcuts
- Standalone CLI tool for headless ingestion and search
- Direct note tagging and metadata filtering
- More notepad features.
- Rich Markdown preview mode toggle
- Local export utilities (JSON/ZIP/Folder sync)
See the open issues for proposed features and active tasks.
Contributions and feedback are welcome. If you have an idea or encounter an issue:
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
- Candle by Hugging Face for lightweight, minimalist ML in Rust
- Iced for the cross-platform GUI architecture
- Turso / libSQL for SQLite with native vector support
- text-splitter for tokenizer-accurate chunk boundaries
- sentence-transformers for the
paraphrase-multilingual-MiniLM-L12-v2embedding model
Alberto Flor - LinkedIn
Project Link: https://github.com/AlbertKurtz/notelook
