Burrow, un lienzo de investigación por voz que vive en tu propio disco
El proyecto, con licencia MIT y arquitectura local-first con claves propias, convierte el tablero de trabajo en carpetas planas y ficheros legibles en lugar de una base de datos opaca.

Burrow es un asistente de investigación montado sobre un lienzo infinito que guarda todo en carpetas planas dentro del disco del usuario. Lo ha publicado su autor en GitHub bajo licencia MIT, y la propuesta es local-first con claves propias: nada sale de la máquina salvo las llamadas que se configuren a propósito.
La idea de partida es conocida. Cuando alguien se mete a fondo en un tema, el problema no es encontrar información, sino que las notas acaban repartidas entre pestañas del navegador, una página de Notion, una carpeta de PDF y la cabeza de cada uno. Burrow intenta meter todo eso en un mismo sitio: un tablero tipo corcho de detective donde se sueltan notas, documentos, tablas, diagramas e imágenes mientras se habla con un asistente que busca en la web, recupera artículos, lee los documentos del usuario y construye cosas sobre el lienzo. Lo que genera aparece como bloque real en el tablero, no como un muro de texto de chat del que haya que extraer conclusiones después.
En concreto, trae quince herramientas para el asistente: escribir bloques, conectarlos, enmarcarlos, marcar incertidumbre, leer documentos y escritura a mano, buscar literatura académica en cuatro índices abiertos, búsqueda web y generación de imágenes. Importa PDF, Word, Markdown y texto plano, y permite citarlos directamente sobre el tablero. Hay tinta a mano alzada con una pila de deshacer compartida entre el usuario y el asistente, de modo que Ctrl+Z revierte lo último que haya pasado sin importar quién lo hizo. La voz está siempre activa, se despierta con la palabra "Hey Burrow" y muestra un indicador de estado para que no haya duda de si el micrófono está capturando.
El disco como base de datos
El espacio de trabajo son carpetas normales: <Documents>/Burrow/<id>/ con un workspace.json, un board.json que contiene nodos, aristas, tinta y viewport, un transcript.jsonl de solo añadido y solo texto (nunca audio), y carpetas documents/ e images/. Las claves de API van al llavero del sistema operativo. Quien no quiera usar ningún proveedor alojado puede apuntar la herramienta a Ollama o a cualquier endpoint compatible con OpenAI y ejecutarlo todo en local.
La entrada de voz sigue la misma lógica: por defecto espera un servidor Whisper propio (whisper.cpp, Speaches, LocalAI o vLLM), y deja abiertas alternativas alojadas como Groq o Deepgram para quien prefiera no levantar uno. No incluye motor de voz empaquetado.
Una sola función para mutar el tablero
Toda modificación del tablero, venga de un clic humano o del asistente, pasa por una única función apply(board, command) en src/canvas/commands.ts. De ahí salen dos cosas: una pila de deshacer unificada y unos esquemas de herramientas del asistente generados a partir de la misma unión de comandos que usa la interfaz, así que no pueden divergir con el tiempo.
La pila técnica es Tauri v2 (Rust con WebView2 o WKWebView), elegido por acceso real al sistema de archivos, almacenamiento de claves en el llavero, escucha de la palabra de activación en segundo plano y un cliente HTTP no sujeto a CORS que evita montar un proxy intermedio. El lienzo usa React Flow (@xyflow/react), y el frontend va con React 19, Vite y TypeScript.
El propio autor separa lo que funciona de lo que no. El bucle del asistente y todos los tipos de bloque están verificados contra proveedores reales, y la importación de documentos y la búsqueda de artículos funcionan. La generación de imágenes está construida pero sin verificar de extremo a extremo contra un proveedor real, y la parte de visión para leer escritura a mano tiene las formas de petición escritas a partir de la documentación, sin probar contra un modelo que realmente vea. Se puede descargar un binario para Windows, macOS o Linux, o compilar desde el repositorio; el diseño está documentado a mano en DESIGN.md.
Merece la pena mirarlo por dos motivos. El primero es que el formato de almacenamiento es auditable y transportable, algo que no abunda en herramientas de este tipo: si el proyecto se abandona, los datos siguen ahí en JSON y texto. El segundo es la función única de mutación, un patrón sencillo que resuelve de golpe el deshacer compartido entre humano y agente. Queda por ver cuándo se cierran los dos flecos sin verificar y si el asistente aguanta un uso real más allá de la demostración.


