Un chat local-first sobre tus archivos, sin la nube
LocalLens convierte cualquier carpeta en un brain privado. Haces preguntas, recibes respuestas con citas — todo en tu máquina. Construido con Bun, TypeScript y el SDK de QVAC.
bun run cli examples/sample-brain "your question"Brain de ejemplo
12 archivos · indexados localmente
Todo el loop, en ocho archivos TypeScript
Descubrimiento de archivos, chunking, retrieval, prompts, completion, persistencia y dos puntos de entrada. Lo bastante pequeño para enseñarlo, lo bastante completo para extenderlo.
Descubrimiento de archivos
Recorre cualquier carpeta, filtra por extensiones seguras, ignora cachés y lockdirs, y normaliza las rutas para el file picker del navegador.
RAG local
QVAC ragChunk + ragIngest + ragSearch hacen retrieval con grounding — sin vector database en la nube, sin API keys.
Inferencia en el dispositivo
QWEN3 1.7B (Q4) para el chat, GTE-Large FP16 para embeddings. Incluye un fallback de 600M para máquinas más modestas.
Respuestas con citas
Cada respuesta trae citas entre corchetes que apuntan al chunk exacto del archivo original.
Almacenamiento en JSON
Los brains y los chunks viven en .locallens/store.json. Los inspeccionas con cat, los respaldas con cp y los comparas con git diff.
CLI + navegador
Dos puntos de entrada sobre el mismo core. Pruebas la pipeline en la terminal y luego la sirves con Bun.serve para tener UI real.
IA local por diseño
Los archivos no salen de tu máquina
QVAC corre los modelos localmente. La ingesta y la búsqueda pasan en proceso — ningún documento se sube a ningún lado.
Respuestas con grounding
El prompt builder obliga al modelo a citar los chunks recuperados o a decir abiertamente que no sabe. Sin rutas inventadas.
Cloud opcional
Desconectas la red y LocalLens sigue funcionando. Más adelante puedes abrir un túnel si quieres compartir un brain con alguien.
Lo suficientemente pequeño para leerlo
Ocho archivos TypeScript en src/, divididos por responsabilidad. Te lees todo el código en una tarde.