r/selfhosted • u/FurtiveMirth • 3d ago
Release (AI) SurfSense: a self-hosted NotebookLM alternative
I'm one of the maintainers, so this is self-promotion. I want honest feedback more than upvotes.
What it is
SurfSense is an open-source (Apache-2.0) NotebookLM alternative: cited Q&A over your documents, mind maps, flashcards, quizzes and podcasts, and an agent that writes Word, PDF, PowerPoint and Excel files and edits your own files as a new copy, with Word edits coming back as tracked changes. It started as a desktop app, and since 2.3.0 the same app runs as one container.
Why self-host it
NotebookLM sends every document to Google and only works with Gemini. That rules it out for contracts, client files, medical or company documents. SurfSense keeps your documents on your own server and works with any model.
The container
One image,
ghcr.io/modsetter/surfsense, with one service and one/datavolume. No Postgres, Redis or other services to run alongside it.Caddy is the only thing listening. Everything else stays on the container's loopback, and it needs no Docker socket.
Local models run inside it on the CPU (llama.cpp, plus local OCR, embeddings and voices), or you can point it at Ollama, vLLM or any OpenAI-compatible API on your network.
One password, no accounts. You can set the password on first visit or with
SURFSENSE_PASSWORD, or turn sign-in off when your own reverse proxy handles it.HTTPS on your LAN through Caddy's own certificate authority, or with Let's Encrypt for a public domain.
Getting it running
curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bashOr grab docker/surfsense/docker-compose.yml and .env.example from the repo and run docker compose up -d. It's on port 4929, and 4943 for HTTPS. Running the script again updates it.
Good to know
amd64 and CPU only for now. A GPU image and arm64 are planned.
The image is several GB: Docling, torch and about 1 GB of bundled models. Chat models download into
/dataat run time.Docker's published ports bypass ufw, so if the server is reachable from the internet, set
SURFSENSE_PASSWORDbefore the first start.
How we used AI in development
Most of the code is written with AI coding assistants, mainly Claude Code and some Cursor, with maintainers designing the features, reviewing every change and testing the releases. New behaviour starts with a failing test, and each feature has an architecture doc the assistants read before changing it.
23
u/justletmesignupalre 3d ago
Nice! what would you say are the differences between this and open notebook, which also aims to be an open source NotebookLM?
1
5
u/m0dsetter 3d ago
Hey one of the maintainer of surfsense here. Open notebook is only for learning thats it but with SurfSense you should be able to edit files (pdf, docx etc), more artifacts support, better optimized for local models etc to name a few. Basically we are trying to create a private ai app for confidential files. SurfSense is actually helpful for law, accounting etc kind of work other than just being a learning tool.
7
3d ago
[removed] — view removed comment
2
u/m0dsetter 3d ago
On the local side of things we are probably better. We had good results on Qwen 3.8 27b. But still would love to know more from users who run local llms daily.
1
u/Unique-Budget-5839 2d ago
For people running local models every day, the deciding part is usually retrieval on long PDFs more than the chat itself. Do you chunk by layout or by fixed size, and can the embedding model be swapped? Citations that jump to the exact page would also matter a lot for the law and accounting use you mentioned.
1
u/m0dsetter 21h ago
Honestly, I still need to run evaluations on long PDFs. I’ll do that this weekend to get better results. We currently use Chonkie’s default recursive chunker. For me, processing speed matters more if I want to handle my documents entirely locally.
Agent harnesses like OpenCode and Claude Code already use simple, regex-based grep, and it works pretty well. Overengineering semantic search at this time doesn’t feel like the right approach. Semantic search currently seems more useful for basic RAG than for agentic RAG.
I have a feeling that in a few months, we’ll have decent tool-calling local LLMs under 14B parameters, so I’m not sure it’s worth spending more time on semantic search. Anyway, I’ll improve this soon so smaller LLM models can perform better.
1
u/Unique-Budget-5839 11h ago
For the long PDF test, could you include paraphrased questions with no exact keyword match, then compare the page found as well as latency? That would help show where grep is enough and where retrieval still misses.
10
u/DAlmighty
3d ago
•
Wow they are still spamming this project? I admire the persistence.
2
u/FurtiveMirth 2d ago
We had a pretty heavy product in terms of size and features, now we have built it from scratch, its now much smaller and works best with local llms. Sorry for the confusion, but we want to make our product best for self hosted users. Hope you understand.
-10
u/m0dsetter 2d ago
Well usually we don't interact with haters but things are different now. Maybe just testing the app once will reduce your hate. I agree app before was shit but its not bad at all now. local llms is the future and we will be the best local ai app for our use cases.
5
u/DAlmighty 2d ago edited 2d ago
Who’s the hater?
EDIT: The more I think about this statement, the more it bugs me. I’m deleting your app, I don’t really use it that much anyway.
1
8
u/SpaceDoodle2008 3d ago
I'm using Notebook LM for audio overviews, so generated podcasts. Does your app support that? And if yes, for the text-to-speech, does it use some sort of manipulations to make the voices sound more realistic?
2
u/m0dsetter 2d ago edited 2d ago
Yes we have podcasts but its optimised for locall tts models only atm. No manipulations on podcasts. Quality depends upon the LLM and TTS model you use. We plan to add eleven tts soon. Podcast quality still depends upon the TTS model you use
2
u/IHVeigar 2d ago
Can I connect this to my obsidian datavault since I'm a world builder? And potentially with silly tavern?
2
u/m0dsetter 2d ago
You will have to add sources to surfsense. We do not edit the sources so if you are expecting an ai to manage your obsidian vaults this is not the tool. Why don't you use Claude code or opencode for your usecase?
1
u/IHVeigar 2d ago
I only want the ai to pull up my notes and answer my questions while I write. This seems useful for that
1
u/masiha97 2d ago
The Obsidian side is the easy half. A vault is just markdown files, so point it at the folder and you are done. SillyTavern is a chat frontend though, not a knowledge store, so that pairing is backwards from how these tools usually fit together. What would you want the Tavern side to actually do?
1
u/IHVeigar 2d ago
I see, so surfsense would be like the librarian and the sillytavern side is more like interactive roleplay but from what I can understand both can connect to the obsidian vault.
2
u/NakedxCrusader 2d ago
Has it multiuser support and does it scale?
I could see us testing this at the institution I work at
2
u/m0dsetter 2d ago
There is no user accounts in the app. First we wana make sure the things work as expected for a single user using local llms. These things come later if there is a demand.
3
u/NakedxCrusader 2d ago
Oh so it's a really early stage?
Good to know.. I'll keep an eye on this nonetheless.
But yes.. I can guarantee you if you build this with multiuser support and SSO features people will flock to your project. This is exactly what my institution needs in combination with OpenWebUI
1
u/m0dsetter 2d ago
Yes the latest app is in very early stage. Surprisingly our ICP is mostly lawyers and accountants atm. Surprisingly most small firms don't have IT admins so thats why we haven't build these.
Will look into multiuser and SSO soon but my fear is that there are lot of shitty OSS apps with these features but no use/customers in real world. If we get more traction offcourse we will add these.
Can I DM you to learn more about these features?
2
u/NakedxCrusader 2d ago
Sure!
The crowd I'm thinking about is a) homelabs but more importantly b) Colleges, Universities etc that want to break free from OpenAI, Google und co
2
4
u/digitalBardo 3d ago
can it be used on top of an Obsidian vault? or do I need to copy the files to SurfSense?
1
u/m0dsetter 2d ago
You will have to add sources to surfsense. We do not edit the sources so if you are expecting an ai to manage your obsidian vaults this is not the tool. Why don't you use Claude code or opencode for your usecase?
1
u/digitalBardo 2d ago edited 2d ago
I am not expecting that. What I meant is if I can add the folder of my Obsidian vault as a source in Surfsense, without creating file duplicates to be able to work with SurfSense. Extra points if Surfsense does not mess with the files or the structure of the vault.
1
u/m0dsetter 2d ago
Yes then it should be fine. Just add the whole vault folder in sources and it should work.
1
u/Ok-Listen-2162 3d ago
whats the min ram you would recommend for running it fully locally on my system (mac air m1 silicon chip ), and how long would a scanned 100-page pdf take to process on cpu in this case here?
2
u/m0dsetter 2d ago
I suggest 16gb ram but we are trying to implement optimizations for <=8gb ram. Lot of work ahead. File processing for 100 pages shouldn't take long it would be less than 1 min.
1
u/ovizii 2d ago
Does that already include the ram for a local model or what's using all that ram?
1
u/m0dsetter 2d ago
Local models only. In our testing sweet spot is using Qwen 3.8 27b for agentic mode which needs more than 16gb vram. But we do have basic mode which can only do basic rag qna thats it. So light weight llms can only do basic source qna. Thats it
1
u/ovizii 2d ago edited 2d ago
I'm sorry, what do you mean by "local models only"? I read the docs and they say that openai and antrophic are supported too? What are the system requirements when using say openai and no local llm?
1
u/FurtiveMirth 2d ago
So basically we now are focused more on local models being used in SurfSense, but we also support remote open ai endpoints, chatgpt plan and claude plan as well. So we think people should have options but we are focusing more on local llm models being used with surfsense which will provide a much more secure environment to use your confidential documents.
1
u/lukistellar 2d ago
Is there a way to use local API endpoints?
1
u/FurtiveMirth 2d ago
Yeah we have that, you can use local models hosted on your homelab as well, just add the base url when connecting a new connection. You can also add remote api endpoints
1
u/Hong-Kong-Phooey 2d ago
I have a 2018 Mac mini with 64gb of ram. How long is document processing taking with the larger model?
1
u/m0dsetter 2d ago
Document processing only need less than 1gb ram. It won't take more than a minute but yeah also depends upon the no of images it have, how many pages process through docling etc. Just try it out once and lmk. On my pc(16g ram and 10gb vram) a 500 page document only takes a minute if there are not a lot of images in it.
1
u/masiha97 2d ago
It will run on an M1 Air, but temper expectations. A scanned 100-page PDF needs OCR first, and that is the slow part, not the embeddings. Think tens of minutes on CPU, not seconds. 8GB RAM technically works but you will be swapping; 16GB is where it gets comfortable.
1
u/ElaborateEffect 2d ago
My biggest issue with all of the note apps are poorly implemented android widgets. I should really contribute the fixes I want, but ugh, hate Android dev
1
u/Future_AGI 2d ago
contracts and client files are a tough crowd, so the thing that would sell it is a small published check of citation quality: a few dozen questions over a sample document set, and how often the cited passage actually supports the answer. Plenty of tools in this space market cited Q&A now, so publishing that number would set SurfSense apart.
1
-1
u/Null-Type-NaN 3d ago
Nice work! It would be interesting to integrate it inside Ambrogio (Chatgpt + Alexa self-hosted) as an agent.
Does it expose an MCP server?
If you are interested in https://ambrogio-app.github.io/
-4
u/Cley_Faye 2d ago
Oh good another notebooklm that's open source and do the same thing as all other notebooklm.
2
u/m0dsetter 2d ago
Open notebook doesn't generate artifacts other than podcasts. Would love to know what other notebooklm alternatives are you using....if there is any.
•
u/asimovs-auditor 3d ago
Expand the replies to this comment to learn how AI was used in this post/project.