Show HN: Open-source Perplexity clone one file back end, streaming answers(github.com)
github.com
Show HN: Open-source Perplexity clone one file back end, streaming answers
https://github.com/oncellai/oncell-research
2 comments
The single-file backend is a nice constraint to work within.
Curious how you're handling conversation history at scale though — storing it per-user in-memory works fine for a demo, but what happens when the cell restarts? Does the built-in database persist across restarts or does history reset?
Curious how you're handling conversation history at scale though — storing it per-user in-memory works fine for a demo, but what happens when the cell restarts? Does the built-in database persist across restarts or does history reset?
Data gets written to WAL first before memory and then persisted to disk. on restarts, it restores to memory and continues. the benefit comes from the architecture. each cell is supposed to be a dedicated compute for a single user.
The interesting part is the backend. It's a single JS file (~100 lines) that handles web search, LLM streaming, and per-user conversation history. No vector database, no Redis, no separate storage service.
It runs inside a cell — an isolated environment with a built-in database, search index, and filesystem. The cell handles persistence and streaming natively, so the agent code only has to deal with the actual logic.
Tech: Next.js frontend, Tavily for search, OpenRouter for LLM (Gemini 2.5 Flash default).
Demo: https://youtu.be/jvTVA7J925Y