Hacker News new | ask | show | jobs
Show HN: Open-source Perplexity clone one file back end, streaming answers (github.com)
6 points by anupsing_ai 62 days ago
I built an open-source research agent. You ask a question, it searches the web via Tavily, synthesizes an answer with an LLM, and shows the sources it used. Answers stream in real-time.

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

1 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?

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.