- 处理不能出内网的合同、病历、内部报告:索引和模型都能留在本地,换用云端 RAG 服务等于把原文交出去
- 需要带引用溯源的文档问答,而不是让模型自由发挥:它按页/段回引原文,适合做尽调、法务复核这类要能点回出处的活
- 在 Word 上做批注式改写:它走修订模式、原文件不动,比让模型直接吐一段文本再手工合并省事
- 把网页、YouTube、Reddit 抓下来和本地文档混在一个知识库里查:内置抓取插件,省掉自己拼爬虫加切分管线
SurfSense
MODSetterApache-2.0活跃维护 有专家点评本地部署的 NotebookLM 替代品,AI 智能体能自动检索、改写和编辑你的文档,数据不出内网,适合对隐私敏感的研究场景。
Air-gapped, privacy-focused, open-source NotebookLM alternative. AI agent that researches, transforms, and edits your documents. Join our Discord: https://discord.gg/ejRNvftDp9
专家点评
上手难度:硬核更新于 2026-11-11自托管、可断网的 NotebookLM 替代品,把文档问答和引用溯源留在自己机器上
适用场景
踩坑
- 想全本地跑模型时容易卡住:issue 里本地 LLM 支持、Ollama 连不上被反复提出,说明本地模型接入不是开箱即用,得预留调试时间
- 全新 Docker 安装后注册/登录失败是反应数最高的 bug 之一,all-in-one 容器的后端 URL 配置也有单独 issue,第一次部署别指望一条命令就通
- README 明说的前置依赖容易漏:Office 转 PDF 要另装 LibreOffice(镜像里没有),图像生成默认没配模型,官方插件要邮箱领许可证,这三处任一没配都会表现为功能静默不可用
同类对比
要的是成熟托管体验、不在乎数据出网,直接用 NotebookLM;要纯检索层、不需要文档编辑和抓取,LlamaIndex / RAGFlow 这类更轻,SurfSense 的价值在把抓取、索引、修订编辑打包成一个应用
curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bashREADME 未说明具体显存或 GPU 型号要求;可完全离线运行,模型可选本地或远程,本地模型需自行准备。
项目说明
由 README 自动翻译提炼本地离线运行的 NotebookLM 替代品,用 AI 代理检索、转换和编辑你的私密文档
本地部署的 NotebookLM 替代品,AI 智能体能自动检索、改写和编辑你的文档,数据不出内网,适合对隐私敏感的研究场景。
核心能力
- 索引保存在本地磁盘,可选择本地或远程模型
- 支持 PDF、Word、Excel、PPT 等格式的检索与引用回答
- 以修订和批注方式编辑 Word,原文件始终不改
- 内置网页、YouTube、Reddit 等插件抓取公开内容
- 支持 MCP 第三方插件,可按 URL 自行添加
容易踩的坑
Office 格式转 PDF 需在设置中开启 LibreOffice 支持,安装包不含该组件;图像生成需另选本地或远程图像模型,默认未配置;SurfSense 官方插件需许可证,可在应用内用邮箱领取 14 天免费试用。
- v2.3.1最新正式版2026-11-03 · 2026-11-03 17:01 UTC
Known issues
- Mac users on 2.3.0 or earlier: Your current version can't install this update. Download 2.3.1 from the downloads page and install it. Your data stays as it is. After that, updates install in the app as usual.
- Windows and Linux update in the app as before.
What's Changed
- fix(www): load the homepage without a white band or a heavy footer by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2384
- docs(www): write the SurfSense 2.0 user docs on Fumadocs' Spacious layout by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2383
- docs(www): ship the 2.0 user docs and the homepage loading fixes by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2385
- fix(desktop): install Mac updates over 1 GiB with Electron 44.10.1 by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2387
- docs(changelog): v2.3.1 by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2388
- chore(local): release 2.3.1 by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2389
- [Local|Release] Release desktop 2.3.1 by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2390
Full Changelog: https://github.com/MODSetter/SurfSense/compare/v2.3.0...v2.3.1
- v2.3.02026-11-02 · 2026-11-02 19:32 UTC
查看更新说明
Known issues
- Image edits are slow on a processor. Editing an image locally without a graphics card took 11 to 16 minutes in testing, about twice as long as drawing one.
- No GPU in Docker yet. The Docker image runs local models on the processor only.
- A DRM-protected EPUB is not refused at upload. MOBI and AZW3 books with DRM, and KFX books, are refused; an EPUB is not checked for DRM.
What's Changed
- docs(readme): drop the sunset callout and list Reddit and Instagram by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2363
- docs(readme): drop the sunset callout and list Reddit and Instagram by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2364
- feat(docker): the CPU image with compose and Caddy, its tests, CI and release by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2365
- feat(local): send a too-long rewrite's numbers beside its code by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2290
- fix(local): pull a YouTube live link as its video by @MohammadHijjawi97 in https://github.com/MODSetter/SurfSense/pull/2359
- test(local): hold a 7B model to the capable prompt by @Trenyx in https://github.com/MODSetter/SurfSense/pull/2354
- feat(docker): local models, a password set up on first visit, and HTTPS in the image by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2368
- fix(local): keep folder uploads going and sign Windows native libraries by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2367
- feat(sources): MOBI and AZW3 books as sources by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2370
- fix(sources): Kindle review follow-ups for the KFX check and HUFF/CDIC code size by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2376
- feat(studio): edit an image or infographic into its next version by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2377
- fix(studio): images need no egress step, keep an edit's base, fail an unqueued job by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2378
- feat(updates): the title bar offers a check for updates on every platform by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2379
- chore(local): release 2.3.0 by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2380
- test(local): two waits no longer fail on a Windows runner by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2381
- [Local|Release] Release desktop 2.3.0 by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2382
New Contributors
- @Trenyx made their first contribution in https://github.com/MODSetter/SurfSense/pull/2354
Full Changelog: https://github.com/MODSetter/SurfSense/compare/v2.2.5...v2.3.0
- v2.2.52026-10-27 · 2026-10-27 01:28 UTC
查看更新说明
Known issues
- Going back to v2.2.4 needs no restore. This release does not change the database.
- Instagram shows what a logged-out visitor sees. A profile or its reels page lists its latest 12, with no Show more, and a post is added without its comments.
What's Changed
- feat(www): license pages in the site design, confetti on a trial or purchase, and v2.2.4 follow-ups by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2352
- refactor(local): one core with two entries, and the headless entry for Docker by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2353
- feat(usage): see an install's first week and a GPU the runtime cannot reach (usage report 1.1) by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2355
- fix(local): 14-day trial, dev-only capability summary, and Reddit and Instagram in Add from the web by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2356
- chore(local): release 2.2.5 by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2357
- fix(analytics): count the 0.0.x rpm as an installer, and name the proxy's refreshes in stable*.yml by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2360
- [Local|Release] Release desktop 2.2.5 by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2358
- fix(release): retry the Mac staple when Apple's ticket service drops the connection by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2361
- [Local|Release] Release desktop 2.2.5 (Mac staple retry) by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2362
Full Changelog: https://github.com/MODSetter/SurfSense/compare/v2.2.4...v2.2.5
- v2.2.42026-10-25 · 2026-10-25 23:53 UTC
查看更新说明
Known issues
- The update to v2.2.4 is a full download. Earlier versions download every update whole; updates after this one download only what changed.
- SSE plugins stop working. opencode 2.x speaks Streamable HTTP only. Remove an SSE plugin and add the provider's
/mcpaddress instead.
What's Changed
- docs(changelog): v2.2.3 by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2308
- feat(web): a page for every plugin, replacing the scraper pages by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2309
- feat(web): v2.2.3 changelog and a page for every plugin by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2310
- docs(registry): simpler plugin submission form by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2311
- docs(registry): simpler plugin submission form by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2312
- docs(proposals): web pages the model writes, for the agent and Studio by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2313
- feat(agent): web pages the model writes, for the agent and Studio by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2314
- docs: redo the B2B research for file jobs and ship the questionnaire first by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2315
- docs: ship SurfSense's B2B jobs as paid plugins (ADR 0067) by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2316
- docs(proposals): add sources from the web through SurfSense's plugins by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2325
- docs(proposals): move the agent's runtime to opencode 2.x by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2326
- feat(local): add sources from the web through SurfSense's plugins by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2328
- feat(agent): move the agent's runtime to opencode 2.1.2 by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2329
- fix(plugins): read Reddit and Instagram from their logged-out pages, and list them again by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2330
- feat(web): update feed and usage endpoints for the desktop app by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2318
- feat(web): Individual checkout page, feature build request and a counted download, trial and purchase funnel by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2319
- fix(privacy): make update, licence and plugin claims match what the app sends by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2317
- feat(plugin-host): count plugin calls per licence by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2320
- chore(analytics): daily GitHub release stats and a licence cohort report by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2321
- feat(desktop): opt-in, ID-less update checks and usage statistics (ADR 0070) by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2322
- build(desktop): smaller installers and update downloads, with nothing users get changed by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2323
- docs(proposals): split the legacy stack, license routes and homepage by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2332
- build(desktop): a minimal OpenCV, checked call for call against PyPI's by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2324
- docs(proposals): make backend/ the one backend for the plugins and the license by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2335
- feat(local): search a site's own search from Add from the web by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2334
- feat(desktop): ship through package managers and one-line install scripts by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2338
- docs(adr): record the chat-modes decision by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2266
- fix(local): keep a par
- v2.2.32026-10-21 · 2026-10-21 10:21 UTC
查看更新说明
Known issues
- The first start needs free disk space. 2.2.3 upgrades your library database on its first start (migrations 0031 and 0032) and saves a copy of it first. It needs free space about the size of
~/.surfsense/surfsense.db. If there isn't enough, SurfSense closes without a message. Free some space and start it again. - Going back to 2.2.2 needs a manual restore. 2.2.2 can't open a database that 2.2.3 has upgraded. Before you reinstall 2.2.2, quit SurfSense and replace
~/.surfsense/surfsense.dbwith the copy saved at the upgrade,~/.surfsense/backups/0030-0032.db. Ifsurfsense.db-walorsurfsense.db-shmis still there, delete it too. Anything you added after updating won't be in the copy, and that includes sources, chats and notes. If you updated straight from 2.2.1, the copy is0029-0032.db.
What's Changed
- feat(local): use a Claude plan in chat and Agentic mode by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2294
- docs(proposals): render Mermaid diagrams in the desktop app by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2296
- perf(local): scans and photos read by OCR alone before Docling: RapidOCR, Vision on a Mac by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2295
- ci(local): keep the macOS certificate off Windows and check Apple's credentials before every build by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2265
- feat(local): show where SurfSense keeps its data in Settings › About by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2298
- fix(plugins): say why a sign-in failed by @samuelmbabhazi in https://github.com/MODSetter/SurfSense/pull/2267
- fix(local): count each numbered list in a Studio Word file from 1 by @MohammadHijjawi97 in https://github.com/MODSetter/SurfSense/pull/2287
- fix(local): sort llama.cpp's shared-cache overflow as runtime_busy by @MohammadHijjawi97 in https://github.com/MODSetter/SurfSense/pull/2299
- feat(plugins): connect any remote MCP server, through SurfSense's gateway by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2302
- chore(registry): mark Notion as verified by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2303
- feat(web): press feedback on marketing buttons by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2304
- ci(registry): open submission pull requests with GITHUB_TOKEN and start their checks by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2306
- [Local|Release] Release desktop 2.2.3 by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2307
New Contributors
- @samuelmbabhazi made their first contribution in https://github.com/MODSetter/SurfSense/pull/2267
Full Changelog: https://github.com/MODSetter/SurfSense/compare/v2.2.2...v2.2.3
- The first start needs free disk space. 2.2.3 upgrades your library database on its first start (migrations 0031 and 0032) and saves a copy of it first. It needs free space about the size of
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Redline a contract with tracked changes and comments
https://github.com/user-attachments/assets/88326b9d-e763-46db-9635-75f9df9e8682
Add sources from the web, then turn them into a web page
https://github.com/user-attachments/assets/073577b7-f055-4f59-8540-330bd764aeb0
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 |
| Docker Linux, macOS | curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash |
| Docker Windows (Docker Desktop) | irm https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.ps1 | iex |
[!NOTE] Docker self-hosts it on a server you open from any device on your network. Run the same command again to update.
Quick start
- Install SurfSense and do the initial onboarding setup.
- Drop your files or folders in your sources.
- 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 |
|---|---|---|---|---|
| ✓ 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, edited by instruction² | — | Place in new documents |
| Markdown, plain text | ✓ | ✓ Markdown | — | — |
| HTML | ✓ | ✓ web page | — | — |
| Books EPUB, MOBI, AZW3 | ✓ without DRM | — | — | — |
| Recordings WAV, MP3, FLAC, Ogg Vorbis | ✓ transcribed on your machine | — | — | — |
| 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.
Plugins
Connect them in Settings › Plugins.
By SurfSense. They read public pages without your own accounts and need a SurfSense license: download the app and enter your email there for a free 14-day one.
| Plugin | What it does |
|---|---|
| Google Search | Search Google and read its results, ads and related questions |
| Web Crawl | Read a web page, or crawl a whole site into clean text |
| YouTube | Read YouTube videos, channels and their comments |
| TikTok | Read TikTok videos and their comments, search users, and see what is trending |
| Read public Reddit posts with their comment threads, or a whole community | |
| Read public Instagram profiles, posts and reels, and find profiles by search | |
| Google Maps | Find places on Google Maps and read their reviews |
| Amazon | Read Amazon products and search results |
| Walmart | Read Walmart products, search results and reviews |
| Indeed | Read job listings on Indeed |
Third-party. MCP servers from the plugin registry, such as DeepWiki and Notion, or any you add by URL. No license needed; they stay off until you allow them.
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
- Discord for help, Issues for bugs, Discussions for ideas.
- Contributing: PRs go against
dev; see CONTRIBUTING.md andsurfsense_local/for the dev loop. How it works is indocs/.
License
Apache-2.0. See LICENSE.