LocalLens
Setup

Correr la app del navegador

Arranca el servidor de Bun y chatea con cerebros desde la UI.

La app del navegador es la contraparte más duradera de la CLI. Mantiene cerebros alrededor, soporta varios a la vez y te da un hilo de chat por cerebro.

Arrancar el servidor

PORT=4180 bun run dev

Deberías ver:

LocalLens is running at http://localhost:4180

Sin PORT, el servidor escucha en 3000. Abre http://localhost:4180 en cualquier navegador moderno.

Recorrer la demo

  1. Ingresa un nombre de cerebro. Algo como Sample brain.

  2. Haz clic en Choose folder. Se abre el file picker del navegador. Selecciona examples/sample-brain del repo.

  3. Haz clic en Create and index. La UI hace stream del progreso mientras los archivos se leen, se cortan en chunks y se embeddean.

  4. Una vez que el cerebro aparece como indexed en el sidebar, escribe una pregunta en el input del chat. Por ejemplo:

    Why does LocalLens use QWEN3_1_7B_INST_Q4?

  5. Dale a Send. La respuesta llega en stream con citas [1], [2], y la lista de fuentes al fondo enlaza cada una de vuelta al archivo.

Qué hay detrás de la UI

La app del navegador es HTML, JS y CSS planos en src/ui/. Habla con el servidor de Bun en src/server.ts sobre una API JSON pequeña:

MétodoRutaBodyDevuelve
GET/api/health{ ok: true, name: "LocalLens" }
GET/api/brains{ brains: Brain[] }
POST/api/brains/from-filesCreateBrainFromFilesInput{ brain: Brain }
POST/api/brains/:id/chat{ question: string }ChatAnswer
DELETE/api/brains/:id204 No Content

Cada ruta aterriza en LocalLensApp en src/locallens.ts.

Elegir una carpeta en el navegador

La API <input type="file" webkitdirectory> le da al navegador el contenido de la carpeta pero no su ruta absoluta. LocalLens almacena el cerebro con una ruta virtual como browser://my-folder así igual puedes saber de dónde vino.

Detener el servidor

Ctrl+C dispara el handler de SIGINT en src/server.ts. Llama a app.close() y desmonta QVAC limpiamente:

process.on("SIGINT", async () => {
  await app.close();
  process.exit(0);
});

On this page