Rodar o app no navegador
Suba o servidor Bun e converse com brains pela UI.
O app no navegador é a contraparte mais duradoura da CLI. Mantém os brains por aí, suporta vários ao mesmo tempo e te dá uma thread de chat por brain.
Subir o servidor
PORT=4180 bun run devVocê deve ver:
LocalLens is running at http://localhost:4180Sem PORT, o servidor escuta na 3000. Abra
http://localhost:4180 em qualquer navegador moderno.
Passando pela demo
-
Digite um nome de brain. Algo como
Sample brain. -
Clique em Choose folder. O file picker do navegador abre. Selecione
examples/sample-braindo repositório. -
Clique em Create and index. A UI faz stream do progresso enquanto os arquivos são lidos, chunked e embedados.
-
Quando o brain aparecer como
indexedna sidebar, digite uma pergunta no input de chat. Por exemplo:Why does LocalLens use QWEN3_1_7B_INST_Q4?
-
Aperte Send. A resposta vem em stream com citações
[1],[2], e a lista de fontes no rodapé linka cada uma de volta para o arquivo.
O que tem por trás da UI
O app do navegador é HTML, JS e CSS puros em src/ui/. Conversa
com o servidor Bun em src/server.ts por uma pequena API JSON:
| Method | Path | Body | Returns |
|---|---|---|---|
GET | /api/health | — | { ok: true, name: "LocalLens" } |
GET | /api/brains | — | { brains: Brain[] } |
POST | /api/brains/from-files | CreateBrainFromFilesInput | { brain: Brain } |
POST | /api/brains/:id/chat | { question: string } | ChatAnswer |
DELETE | /api/brains/:id | — | 204 No Content |
Toda rota chega em LocalLensApp em src/locallens.ts.
Escolher uma pasta no navegador
A API <input type="file" webkitdirectory> dá ao navegador o
conteúdo da pasta mas não o caminho absoluto. O LocalLens guarda o
brain com um caminho virtual tipo browser://my-folder para você
ainda saber de onde veio.
Parar o servidor
Ctrl+C dispara o handler de SIGINT em src/server.ts. Ele chama
app.close() e desmonta o QVAC limpo:
process.on("SIGINT", async () => {
await app.close();
process.exit(0);
});