Find a file
DESKTOP-RTLN3BA\$punk 298a778889 fix(plugins): read the first-party list as UTF-8 on every system
The list was read in the system's code page. Its about texts hold curly
apostrophes, so the packaged app on Windows showed "site’s" in Western code
pages and could not read the list at all on cp932 or cp936 systems: the
Plugins screen, connecting SurfSense's plugins and adding a custom one all
failed. The test writes the apostrophe as raw UTF-8 and fails on a cp1252
Windows machine without the fix.
2026-10-13 22:34:28 -07:00
.agents/skills feat(plugins): Yours and Browse tabs on the plugins screen 2026-10-13 01:31:58 +05:30
.claude chore: add AGENTS.md and a small set of vendor skills 2026-09-18 08:51:48 +02:00
.cursor/rules chore: move skills from .cursor/skills to .agents/skills for cross-agent compatibility, update Claude Code symlink 2026-09-15 16:03:19 +05:30
.github fix(registry): trust a new signing key, one the maintainer holds 2026-10-13 20:48:26 -07:00
.vscode refactor(plugins): move the bundle tooling under plugins/bundles 2026-10-10 20:19:47 +05:30
docker fix(sandbox): bump fast-uri, js-yaml and undici in remotion lockfile 2026-09-30 23:23:01 -07:00
docs docs(plugins): the host's Keygen settings, its redacted logs and the eight listed plugins 2026-10-13 20:36:41 -07:00
plans docs: cover the work since 2.1.0 so others can pick it up 2026-10-11 17:55:51 -07:00
plugins fix(plugins): word the redaction's URL comment so the secret scan passes 2026-10-13 21:41:19 -07:00
scripts docs: cover the work since 2.1.0 so others can pick it up 2026-10-11 17:55:51 -07:00
surfsense_backend chore(local): release 2.2.1 2026-10-13 22:18:13 -07:00
surfsense_local fix(plugins): read the first-party list as UTF-8 on every system 2026-10-13 22:34:28 -07:00
surfsense_mcp fix(mcp): bump anyio, cryptography and pyjwt in the lockfile 2026-09-30 23:25:11 -07:00
surfsense_web chore(local): release 2.2.1 2026-10-13 22:18:13 -07:00
.coderabbit.yaml ci(coderabbit): review pull requests against dev automatically 2026-09-30 15:21:29 -07:00
.gitattributes fix: backend container fails with missing entrypoint when built locally 2025-12-06 21:31:32 -08:00
.gitignore chore(gitignore): updated version 2026-09-18 15:49:52 +05:30
.pre-commit-config.yaml feat(local): group podcast voices by gender in the brief form 2026-09-26 01:44:35 +05:30
.secrets.baseline chore: add pre-commit 2025-07-21 22:46:12 +05:45
AGENTS.md Merge remote-tracking branch 'upstream/dev' into feat/remote-plugins 2026-10-12 16:04:31 +05:30
CLAUDE.md chore: add AGENTS.md and a small set of vendor skills 2026-09-18 08:51:48 +02:00
CODE_OF_CONDUCT.md docs: make first contributions match one tree, not the old hosted stack 2026-09-18 08:52:14 +02:00
CONTRIBUTING.md chore(license): put plugins/remote/proprietary/ under BSL, changed only by maintainers 2026-10-11 21:50:01 +05:30
LICENSE chore(license): put plugins/remote/proprietary/ under BSL, changed only by maintainers 2026-10-11 21:50:01 +05:30
README.ar.md docs(readme): bring the ten translated READMEs up to the new layout 2026-10-09 13:52:44 -07:00
README.de.md docs(readme): bring the ten translated READMEs up to the new layout 2026-10-09 13:52:44 -07:00
README.es.md docs(readme): bring the ten translated READMEs up to the new layout 2026-10-09 13:52:44 -07:00
README.fr.md docs(readme): bring the ten translated READMEs up to the new layout 2026-10-09 13:52:44 -07:00
README.hi.md docs(readme): bring the ten translated READMEs up to the new layout 2026-10-09 13:52:44 -07:00
README.ja.md docs(readme): bring the ten translated READMEs up to the new layout 2026-10-09 13:52:44 -07:00
README.ko.md docs(readme): bring the ten translated READMEs up to the new layout 2026-10-09 13:52:44 -07:00
README.md docs: cover the work since 2.1.0 so others can pick it up 2026-10-11 17:55:51 -07:00
README.pt-BR.md docs(readme): bring the ten translated READMEs up to the new layout 2026-10-09 13:52:44 -07:00
README.ru.md docs(readme): bring the ten translated READMEs up to the new layout 2026-10-09 13:52:44 -07:00
README.zh-CN.md docs(readme): bring the ten translated READMEs up to the new layout 2026-10-09 13:52:44 -07:00
SECURITY.md docs: make first contributions match one tree, not the old hosted stack 2026-09-18 08:52:14 +02:00
skills-lock.json chore: add AGENTS.md and a small set of vendor skills 2026-09-18 08:51:48 +02:00
SurfSense.code-workspace refactor(plugins): move the bundle tooling under plugins/bundles 2026-10-10 20:19:47 +05:30
VERSION chore: bump version to 0.0.40 2026-09-12 21:32:01 +02:00

Stars Latest release License Discord

SurfSense, the air-gapped open-source NotebookLM alternative

SurfSense

The air-gapped, open-source NotebookLM alternative.
The AI agent that researches, transforms and edits your documents, on your machine.

Download · Formats · Quick start · Compare · Pricing · Discord

MODSetter/SurfSense | Trendshift

English | العربية | Deutsch | Español | Français | हिन्दी | 日本語 | 한국어 | Português | Русский | 简体中文

https://github.com/user-attachments/assets/88326b9d-e763-46db-9635-75f9df9e8682

SurfSense is a free, open-source desktop app for documents you can't upload. A privacy-focused, NotebookLM-style AI agent that researches, transforms and edits your documents, on your machine. The index stays on your disk, you pick the model, local or remote, and there is no account.

Platform Download
Windows x64 SurfSense-Setup.exe
macOS Apple Silicon SurfSense-arm64.dmg
Linux x64 AppImage · deb

Note

Used the hosted web app? Export your workspaces before 18 October 2026 and import them here. See the sunset page.

Quick start

  1. Install SurfSense and do the initial onboarding setup.
  2. Drop your files or folders in your sources.
  3. Ask the agent to search or extract or edit your files.

What it does with each format

Format Research (cited answers) Create Edit (as a copy) Transform
PDF ✓ scanned pages too³ ✓ Fill and flatten forms; stamp watermarks, page numbers, headers, footers Merge, split, extract, rotate, reorder pages
Word .docx ✓ ✓ or from your own .docx as a template ✓ body text, as tracked changes and comments To PDF¹
Excel .xlsx ✓ the agent also reads formulas ✓ with formulas and native charts ✓ cell values and formulas Analyse with pandas, chart the results
PowerPoint .pptx ✓ ✓ or from your own .pptx as a template Replace text on slides and notes; delete or duplicate slides To PDF¹
CSV ✓ — — Analyse with pandas, chart the results
Images PNG, JPEG, TIFF, BMP, WebP ✓ text read by OCR³ Images and infographics² — Place in new documents
Markdown, plain text ✓ ✓ Markdown — —
HTML ✓ ✓ web page — —
Podcast (audio) — ✓ with a transcript, voiced on your machine by default — —
Mind maps, flashcards, quizzes — ✓ in the app — —

¹ With Office support (LibreOffice), turned on in Settings; it is never in the installer. ² Needs an image model, local or remote; none is chosen by default. ³ OCR reads Latin, Chinese and Japanese script.

Edits, conversions and PDF tools always make a new file; your original is never changed. PDF, Word and Excel do the most today, and support for the other formats keeps improving.

How it compares

NotebookLM (now Gemini Notebook) SurfSense
Runs offline / air-gapped No Yes
Your documents leave your machine Yes No, unless you pick a remote model
Can edit your files No Yes
Open source No Apache-2.0
Models Gemini only Any OpenAI-compatible API, or a local one

Community

SurfSense contributors

Star history

Star History Chart

License

Apache-2.0. See LICENSE.