Source-grounded, bilingual, local-first AI note taker: turn documents, audio, video and links into notes you can trace, edit and reuse. Every bullet cites the exact source chunk.
1
stars
5
commits
Python
primary language
Sep 14, 2026
updated
Source-grounded, bilingual, local-first AI note taker. Turn documents, web pages, recordings, videos and YouTube links into structured notes where every bullet cites the exact source chunk it came from — so you can verify, edit and reuse notes instead of trusting a black box.
Featured on Product Hunt: Lynote on Product Hunt
pip install -e .
lynote-notes add lecture.md
lynote-notes note --title "Week 3: Retrieval"
lynote-notes ask "What is BM25 used for?"
lynote-notes export --note note_xxx --format anki --out cards.tsv
AI note tools usually give you a summary you cannot check. Lynote Notes is built around traceability: notes are generated from your sources, and every claim links back to a chunk — including a timestamp for audio and video. It runs with zero dependencies by default (stdlib only), works offline with an extractive provider, and can use any OpenAI-compatible LLM (Ollama, vLLM, OpenAI, ...) when you want richer prose.
git clone https://github.com/lynote-ai/lynote-notes.git
cd lynote-notes
pip install -e .
Optional extras for more source types:
pip install -e ".[pdf]" # PDF ingestion (pypdf)
pip install -e ".[docx]" # Word documents (python-docx)
pip install -e ".[media]" # audio/video transcription (faster-whisper)
pip install -e ".[youtube]" # YouTube captions (yt-dlp)
pip install -e ".[all]" # everything
# 1. Add sources
lynote-notes add notes.md
lynote-notes add paper.pdf # needs [pdf]
lynote-notes add https://example.com/post
lynote-notes add talk.mp3 # needs [media]
lynote-notes add https://youtu.be/xxxx # needs [youtube]
# 2. See what is in the workspace
lynote-notes list
# 3. Generate a cited note
lynote-notes note --title "Weekly reading"
# or limit to specific sources
lynote-notes note --title "Just the paper" --source src_ab12cd34ef
# 4. Ask questions grounded in your sources
lynote-notes ask "What did we decide about pricing?"
# 5. Export
lynote-notes export --note note_1234567890 --format md --out note.md
lynote-notes export --note note_1234567890 --format anki --out cards.tsv
The workspace directory defaults to ./lynote-workspace; override with
--workspace DIR or LNOTE_WORKSPACE.
from lynote_notes import Workspace
with Workspace("my-workspace") as ws:
ws.add("lecture-notes.md")
ws.add_text("Interview: the team wants a web UI next quarter.", "Interview")
note = ws.make_note("Research summary")
print(note.sections[0].bullets)
answer = ws.ask("What is planned next quarter?")
print(answer.text)
for citation in answer.citations:
print(citation.source_title, citation.locator, "—", citation.snippet)
By default Lynote Notes uses the built-in extractive provider — deterministic, offline, no model required. For generative notes, point it at any OpenAI-compatible endpoint:
export LNOTE_PROVIDER=openai
export LNOTE_LLM_BASE_URL=http://localhost:11434/v1 # Ollama default
export LNOTE_LLM_API_KEY=ollama
export LNOTE_LLM_MODEL=llama3.1
lynote-notes note --title "Generative notes"
If the model call fails, the provider automatically falls back to the offline extractor, and citations are still validated against real chunks.
ingest/ core llm/
┌───────────────────────────┐ ┌───────────────────┐ ┌─────────────────────┐
│ text pdf docx web │ │ chunking │ │ HeuristicProvider │
│ youtube audio video │──▶│ retrieval (BM25) │──▶│ OpenAICompatProvider│
└───────────────────────────┘ │ notes (citations) │ └─────────────────────┘
│ qa │
│ export (md/anki) │
└─────────┬─────────┘
▼
SQLite workspace.db
Full design notes: docs/ARCHITECTURE.md.
The open-source note space is crowded; these are the closest projects (stars as of September 2026):
| Project | Stars | Focus | Lynote Notes difference |
|---|---|---|---|
| open-notebook | 38.7k | NotebookLM-style research | Notes + Q&A are citation-first; zero-dependency core |
| meetily | 30.7k | Live meeting capture | Upload-based study/reading workflow, not live capture |
| SurfSense | 16.1k | Research with live web data | Local-first, offline-capable, no external services |
| anarlog | 9.3k | Granola alternative | Documents + media + web in one workspace |
| BiliNote | 7.3k | Chinese video → notes | Multi-source workspace + source-grounded Q&A + Anki export |
None of them ship citations on every bullet as the default contract, and few are bilingual by design.
faster-whisper model size and audio
quality; unclear audio can produce wrong text.sqlite-vec) with hybrid scoringpython -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
MIT — see LICENSE. Built by Lynote · Product Hunt · HF Space
5 commits
Python
100.0%
Source-grounded, bilingual, local-first AI note taker: turn documents, audio, video and links into notes you can trace, edit and reuse. Every bullet cites the exact source chunk.
1
stars
5
commits
Python
primary language
Sep 14, 2026
updated
Source-grounded, bilingual, local-first AI note taker. Turn documents, web pages, recordings, videos and YouTube links into structured notes where every bullet cites the exact source chunk it came from — so you can verify, edit and reuse notes instead of trusting a black box.
Featured on Product Hunt: Lynote on Product Hunt
pip install -e .
lynote-notes add lecture.md
lynote-notes note --title "Week 3: Retrieval"
lynote-notes ask "What is BM25 used for?"
lynote-notes export --note note_xxx --format anki --out cards.tsv
AI note tools usually give you a summary you cannot check. Lynote Notes is built around traceability: notes are generated from your sources, and every claim links back to a chunk — including a timestamp for audio and video. It runs with zero dependencies by default (stdlib only), works offline with an extractive provider, and can use any OpenAI-compatible LLM (Ollama, vLLM, OpenAI, ...) when you want richer prose.
git clone https://github.com/lynote-ai/lynote-notes.git
cd lynote-notes
pip install -e .
Optional extras for more source types:
pip install -e ".[pdf]" # PDF ingestion (pypdf)
pip install -e ".[docx]" # Word documents (python-docx)
pip install -e ".[media]" # audio/video transcription (faster-whisper)
pip install -e ".[youtube]" # YouTube captions (yt-dlp)
pip install -e ".[all]" # everything
# 1. Add sources
lynote-notes add notes.md
lynote-notes add paper.pdf # needs [pdf]
lynote-notes add https://example.com/post
lynote-notes add talk.mp3 # needs [media]
lynote-notes add https://youtu.be/xxxx # needs [youtube]
# 2. See what is in the workspace
lynote-notes list
# 3. Generate a cited note
lynote-notes note --title "Weekly reading"
# or limit to specific sources
lynote-notes note --title "Just the paper" --source src_ab12cd34ef
# 4. Ask questions grounded in your sources
lynote-notes ask "What did we decide about pricing?"
# 5. Export
lynote-notes export --note note_1234567890 --format md --out note.md
lynote-notes export --note note_1234567890 --format anki --out cards.tsv
The workspace directory defaults to ./lynote-workspace; override with
--workspace DIR or LNOTE_WORKSPACE.
from lynote_notes import Workspace
with Workspace("my-workspace") as ws:
ws.add("lecture-notes.md")
ws.add_text("Interview: the team wants a web UI next quarter.", "Interview")
note = ws.make_note("Research summary")
print(note.sections[0].bullets)
answer = ws.ask("What is planned next quarter?")
print(answer.text)
for citation in answer.citations:
print(citation.source_title, citation.locator, "—", citation.snippet)
By default Lynote Notes uses the built-in extractive provider — deterministic, offline, no model required. For generative notes, point it at any OpenAI-compatible endpoint:
export LNOTE_PROVIDER=openai
export LNOTE_LLM_BASE_URL=http://localhost:11434/v1 # Ollama default
export LNOTE_LLM_API_KEY=ollama
export LNOTE_LLM_MODEL=llama3.1
lynote-notes note --title "Generative notes"
If the model call fails, the provider automatically falls back to the offline extractor, and citations are still validated against real chunks.
ingest/ core llm/
┌───────────────────────────┐ ┌───────────────────┐ ┌─────────────────────┐
│ text pdf docx web │ │ chunking │ │ HeuristicProvider │
│ youtube audio video │──▶│ retrieval (BM25) │──▶│ OpenAICompatProvider│
└───────────────────────────┘ │ notes (citations) │ └─────────────────────┘
│ qa │
│ export (md/anki) │
└─────────┬─────────┘
▼
SQLite workspace.db
Full design notes: docs/ARCHITECTURE.md.
The open-source note space is crowded; these are the closest projects (stars as of September 2026):
| Project | Stars | Focus | Lynote Notes difference |
|---|---|---|---|
| open-notebook | 38.7k | NotebookLM-style research | Notes + Q&A are citation-first; zero-dependency core |
| meetily | 30.7k | Live meeting capture | Upload-based study/reading workflow, not live capture |
| SurfSense | 16.1k | Research with live web data | Local-first, offline-capable, no external services |
| anarlog | 9.3k | Granola alternative | Documents + media + web in one workspace |
| BiliNote | 7.3k | Chinese video → notes | Multi-source workspace + source-grounded Q&A + Anki export |
None of them ship citations on every bullet as the default contract, and few are bilingual by design.
faster-whisper model size and audio
quality; unclear audio can produce wrong text.sqlite-vec) with hybrid scoringpython -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
MIT — see LICENSE. Built by Lynote · Product Hunt · HF Space
5 commits
Python
100.0%