Project NOMAD: un servidor de conocimiento offline-first para cuando internet falla
Crosstalk-Solutions/project-nomad · 38.420★ · 3.817 forks
Proyecto N.O.M.A.D. (Node for Offline Media, Archives, and Data): un servidor de conocimiento y educación offline-first, gratuito y de código abierto, que concentra Wikipedia, libros, cursos, mapas, herramientas de datos y una capa opcional de IA local en hardware propio. En una sola frase del repositorio: “Knowledge That Never Goes Offline”.
Qué es Project NOMAD
Project NOMAD es un servidor autocontenido y offline-first. No es un sistema operativo ni una fuente de verdad crítica: es una capa de administración —un “Command Center”— con interfaz web y API que orquesta un conjunto de herramientas y contenido empaquetados en contenedores Docker. Su valor aparece después de descargar y comprobar el material: mientras está en línea descarga lo que el usuario elige; una vez instalado el contenido, sigue funcionando sin internet.
Sus capacidades integradas, según el README, son: AI Chat with Knowledge Base (chat de IA local con Ollama o software compatible con la API de OpenAI, con carga de documentos y búsqueda semántica vía Qdrant), Information Library (Wikipedia offline, referencias médicas, guías de supervivencia y ebooks a través de Kiwix), Education Platform (cursos de Khan Academy con seguimiento de progreso y soporte multiusuario vía Kolibri), Offline Maps (mapas regionales descargables vía ProtoMaps), Data Tools (cifrado, codificación y análisis vía CyberChef), Notes (toma de notas local con soporte Markdown vía FlatNotes), System Benchmark (puntuación de hardware con leaderboard comunitario) y Supply Depot (catálogo de aplicaciones de un clic más la posibilidad de ejecutar contenedores Docker propios, desde v1.33.0).
El propio README advierte que el proyecto sigue en desarrollo activo, es gratuito y de código abierto (Apache 2.0), que no vende hardware ni dispositivos preinstalados, y que no incorpora autenticación por diseño.
El origen
El repositorio fue creado el 24 de junio de 2025 bajo la organización Crosstalk Solutions, un grupo que ya publicaba herramientas de red y seguridad (por ejemplo, unifi-toolkit y utr-scanner, ambos de la misma organización). El nombre N.O.M.A.D. se expande como Node for Offline Media, Archives, and Data y el eslogan es “Knowledge That Never Goes Offline”.
El problema que resuelve es práctico: concentrar en un equipo local recursos que normalmente dependen de internet —enciclopedias, mapas, contenido educativo, IA y utilidades— y coordinar su instalación, configuración y actualización desde una sola interfaz, en lugar de montar cada pieza por separado. El proyecto se construye sobre software abierto ya maduro (Kiwix, Ollama, Qdrant, Kolibri, ProtoMaps, CyberChef, FlatNotes) en vez de reimplementar una enciclopedia, un motor de mapas o un servidor educativo. Esa integración, más el asistente de configuración y la experiencia de administración, es la propuesta de valor: facilita un stack, no inventa todas sus piezas.
En la comunidad se ha recibido tanto el entusiasmo por la integración como la observación de que la base se compone de proyectos preexistentes.
Filosofía y principios
- Offline-first. El uso rutinario puede funcionar sin internet una vez instalado y descargado el contenido; internet solo es necesario durante la instalación, para actualizaciones o paquetes nuevos. El proyecto declara telemetría integrada nula.
- Hardware propio y controlable. Los datos, modelos y servicios se ejecutan en infraestructura bajo control del usuario; el diseño es agnóstico respecto a la marca del hardware.
- Contenido antes que IA. Wikipedia, referencias médicas, cursos, libros y mapas son el núcleo; la IA local es una capacidad opcional sobre una base documental. El usuario puede omitirla por completo y el resto sigue funcionando.
- Orquestación de herramientas maduras. Integra servicios abiertos preexistentes en lugar de reimplementarlos.
- Interfaz para no especialistas. Un wizard y un panel web reducen la necesidad de administrar cada contenedor a mano.
- Gratis y sin capas de pago. Apache 2.0, sin costes ocultos ni intención de introducir funciones premium o niveles de pago.

Cómo funciona
NOMAD instala un stack Docker administrado desde el Command Center. Tras iniciar, la interfaz se abre normalmente en http://localhost:8080 o http://DEVICE_IP:8080. La UI coordina la descarga y administración de recursos, mientras cada servicio conserva su propia función.
Contenido descargado y servicios Docker → Command Center
├─ Kiwix: biblioteca y ZIM (Wikipedia, referencias, ebooks)
├─ Kolibri: educación (Khan Academy, progreso)
├─ ProtoMaps / OSM: mapas
├─ CyberChef: utilidades de datos
├─ FlatNotes: notas
└─ Ollama + Qdrant: IA/RAG opcional
El stack técnico declarado en el FAQ es: Docker para la contenerización del Command Center y sus dependencias; Node.js y TypeScript en el backend, sobre el framework AdonisJS; React en el frontend, con Vite e Inertia.js; MySQL como base de datos y Redis para caché, tareas en segundo plano y “cron”; y el patrón Docker-outside-of-Docker (DooD), por el que el Command Center gestiona otros contenedores en el host sin correr Docker dentro de un contenedor, para mejor rendimiento y compatibilidad. Todos los contenedores de NOMAD se prefijan con nomad_ en su nombre, lo que permite identificarlos y gestionarlos aparte de otros contenedores del equipo.

La comprobación de conectividad intenta primero el endpoint de Cloudflare https://1.1.1.1/cdn-cgi/trace; si ese host no es alcanzable, cae a otros que la aplicación ya contacta (API de GitHub y API de Project NOMAD) y considera la conexión “en línea” si alguno responde.
Componentes principales
- Information Library: Wikipedia offline, referencias médicas, guías de supervivencia y ebooks vía Kiwix/ZIM.

- Education Platform: Khan Academy vía Kolibri, con progreso y multiusuario.

- Offline Maps: regiones descargables vía ProtoMaps.

- Data Tools y Notes: CyberChef y FlatNotes.

- AI Assistant: Ollama + Qdrant, con carga de documentos y búsqueda semántica.

- Benchmark: puntuación de hardware con leaderboard comunitario.
- Supply Depot: catálogo de apps de un clic + contenedores Docker propios.
- Gestión de contenido: selector de Wikipedia, gestor de biblioteca ZIM y explorador de contenidos.
El ecosistema
La organización Crosstalk Solutions publica varios repositorios. Los verificados mediante la API de GitHub el 21 de agosto de 2026 son: Crosstalk-Solutions/project-nomad (el proyecto principal, 36.079 estrellas, 3.610 bifurcaciones), Crosstalk-Solutions/project-nomad-maps (aloja los archivos de mapas estáticos demasiado grandes para el repositorio principal, 93 estrellas, 33 bifurcaciones), Crosstalk-Solutions/unifi-toolkit (suite de herramientas para gestión de redes UniFi, de la misma organización pero no específico de NOMAD, 506 estrellas), Crosstalk-Solutions/nomad-sysbench (imagen sysbench multi-arquitectura para el Benchmark de NOMAD, 1 estrella), Crosstalk-Solutions/utr-scanner (monitor de seguridad de SSID WiFi para Raspberry Pi, 5 estrellas) y Crosstalk-Solutions/PasswordPusher (aplicación para comunicar contraseñas con expiración, 11 estrellas).
El repositorio documenta, en admin/docs/community-add-ons.md, add-ons de terceros no mantenidos por el equipo de NOMAD, en forma de “paquetes ZIM” que añaden material de referencia offline a la biblioteca Kiwix existente: jrsphoto/ZIM-military-field-manuals (unos 180 manuales militares de dominio público de EE. UU., ZIM de ~2 GB) y kennethbrewer3/ZIM-w3schools-offline (copia offline completa de los tutoriales de W3Schools, ZIM de ~700 MB).

La documentación del proyecto indica que miembros de la comunidad han forkado y publicado imágenes y guías propias para ARM/Raspberry Pi, no soportadas oficialmente por el equipo central; los detalles concretos no se pudieron verificar de forma independiente. La comunidad también publica guías para plataformas no Debian (por ejemplo macOS) en Discord y en las Discusiones de GitHub; son no oficiales. NOMAD integra proyectos abiertos que operan de forma independiente y que el usuario podría instalar por separado: Kiwix, Ollama, Qdrant, Kolibri, ProtoMaps, CyberChef y FlatNotes. En la discusión de Hacker News se citaron como propuestas relacionadas o alternativas: Internet-in-a-Box, wrolpi.org y una aproximación alternativa al formato ZIM, stazelabs/oza.
Estado oficial / semioficial
Project NOMAD no ha sido aceptado en ningún marketplace oficial ni cuenta con un respaldo formal de vendor en las fuentes recuperadas. Es un proyecto de código abierto independiente, gratuito y bajo Apache License 2.0.
El sitio oficial enlista, en la sección “As Featured In”, a The Modern Rogue, ZDNet, Cybernews, Hacker News, DEV Community y dev.ua. The Modern Rogue, en particular, realizó una prueba práctica del proyecto como “internet para el fin del mundo” y lo embebió en su página principal. El leaderboard de benchmark.projectnomad.us funciona como referencia comunitaria para comparar la puntuación de hardware de distintas instalaciones; es una función del propio proyecto, no una certificación externa. El equipo no vende dispositivos preinstalados; el enfoque es DIY, lo que mantiene el proyecto como software puro y no como producto comercial. En la práctica, eso significa que puede instalarse y extenderse libremente, pero no hay una entidad externa que certifique sus capacidades, su seguridad o sus resultados.
Guía rápida de uso
Instalación y primer arranque
NOMAD se instala en cualquier sistema operativo Debian basado; se recomienda Ubuntu 26.04 LTS (también se apoyan 24.04 LTS y Debian 12). La instalación es 100 % por terminal y las herramientas se acceden por navegador, sin necesidad de entorno de escritorio. Se requieren privilegios sudo/root.
Instalación rápida (solo Debian):
sudo apt-get update && \
sudo apt-get install -y curl && \
curl -fsSL https://raw.githubusercontent.com/Crosstalk-Solutions/project-nomad/refs/heads/main/install/install_nomad.sh \
-o install_nomad.sh && \
sudo bash install_nomad.sh
Al terminar, abrir el navegador en http://localhost:8080 (o http://DEVICE_IP:8080). Es un script remoto ejecutado con root: conviene revisar la versión fijada y el contenido del script antes de ejecutarlo en un entorno importante. Para Windows existe una guía de instalación WSL2 (comunitaria) en projectnomad.us/install/wsl2.
Instalación avanzada: copiar la plantilla management_compose.yaml a un docker-compose.yml, sustituir los marcadores replaceme y ejecutar docker compose up -d. Es para usuarios con experiencia en Docker.
Requisitos declarados: el núcleo es ligero (mínimo 2 GHz dual-core, 4 GB RAM, 5 GB disco); para ejecutar modelos de IA se recomienda un equipo potente (Ryzen 7 / i7, 32 GB RAM, NVIDIA RTX 3060 o equivalente, 250 GB en SSD). Hay una guía de hardware con tres rangos de precio en projectnomad.us/hardware.
Flujos de trabajo habituales
-
Biblioteca offline: elegir y descargar colecciones ZIM (Wikipedia, referencias médicas, ebooks) antes de necesitarlas; probar la búsqueda y reservar el almacenamiento real que consumen. Un usuario de Hacker News mencionó estar descargando un volcado de Wikipedia de unos 110 GB con Kiwix.
-
Servidor educativo local: descargar cursos de Kolibri (Khan Academy) y validar el acceso desde los dispositivos de la red local, con seguimiento de progreso.
-
IA con documentos propios: habilitar Ollama/Qdrant solo si el hardware lo permite, cargar fuentes autorizadas y comprobar que el RAG distingue sus límites. Para descargar un modelo concreto de Ollama que no aparezca en la página de ajustes, el FAQ documenta:
curl -X POST -H "Content-Type: application/json" -d '{"model":"MODEL_NAME_HERE"}' http://localhost:8080/api/ollama/models -
IA en otro host: en los ajustes del asistente de IA, introducir la URL de un servidor Ollama o compatible con la API de OpenAI (por ejemplo, LM Studio). Si se usa Ollama remoto, el servidor debe arrancar con
OLLAMA_HOST=0.0.0.0. -
Probar la lógica de autoactualización sin actualizar: desde el directorio
admin/, un comando ejecuta el pipeline de decisión completo sin disparar ninguna actualización real (útil para CI):node ace auto-update:dry-run --scenarios node ace auto-update:dry-run --current=1.32.0 --force-enabled
Configuración esencial
docker-compose.yml(instalación avanzada): marcadoresreplacemepara puertos, volúmenes y variables.- Ajustes → Advanced (
INTERNET_STATUS_TEST_URL): cambia el endpoint que NOMAD usa para comprobar conectividad; la variable de entorno tiene prioridad sobre el valor de la UI. - Ajustes del AI Assistant (
/settings/models): elegir entre Ollama local o un host remoto (Ollama / LM Studio / llama.cpp) y, en v1.34, el conmutador de “thinking” por modelo (desactivado por defecto). nomad.md(v1.34.0): archivo para instrucciones personalizadas del asistente de IA.- Ventana y “cool-off” de autoactualización: horario y período de espera para que el Command Center autoinstale parches/menores (las versiones mayores siempre requieren actualización manual).
Trampas frecuentes y soluciones
- Raspberry Pi / ARM no soportados oficialmente. NOMAD está diseñado para x86-64 y no publica imágenes oficiales para ARM. El soporte ARM está en el roadmap, pero hay que verificar la matriz actual antes de comprar hardware; los forks comunitarios para Pi no son soportados por el equipo central.
- Personalización de puertos limitada (por ahora). Solo los servicios núcleo (Command Center, MySQL, Redis) permiten personalizar puerto; las aplicaciones instalables (Ollama, Kiwix, etc.) aún no, aunque hay PRs en curso para añadirlo.
- Subestimar el almacenamiento. El núcleo pesa ~5 GB, pero el contenido y los modelos de IA pueden crecer mucho: la recomendación para IA es ≥250 GB en SSD y un volcado de Wikipedia puede superar los 100 GB. Planificar espacio con margen.
update_nomad.shno actualiza las apps. Este script solo refresca los contenedores del Command Center (y sus dependencias como MySQL); las aplicaciones instalables se actualizan desde la UI del Command Center.- Sin autenticación por diseño. NOMAD no incorpora autenticación y no está pensado para exponerse directamente a internet. Para uso multiusuario en una red local, usar controles a nivel de red (puertos, firewall, segmentación). La autenticación es una sugerencia en el roadmap público.
- Crítica al stack Node.js. En la discusión de HN hubo queja directa sobre el uso de Node.js; es un apunte de un usuario, no un defecto confirmado, pero refleja una preferencia de parte de la audiencia.
Integraciones y migración
-
IA intercambiable. Ollama es el modo preferido (descarga de modelos incluida), pero el asistente acepta cualquier API compatible con OpenAI: LM Studio o llama.cpp.
-
Contenido ZIM. Los add-ons comunitarios y el catálogo propio se integran como archivos ZIM que se construyen con
zimwriterfsy se depositan en/opt/project-nomad/storage/zim, registrados en el contenedornomad_kiwix_server. -
Contenedores propios (Supply Depot). Desde v1.33.0, el Supply Depot permite montar cualquier contenedor Docker como “sibling” gestionado, con mapeo de puertos, volúmenes, variables y límites, más una comprobación previa que bloquea configuraciones inseguras.
-
API / OpenAPI. v1.34.0 añadió documentación OpenAPI autogenerada con UI de Scalar, lo que facilita la integración de terceros.
-
Migración desde una instalación manual de Kiwix/Kolibri. En vez de montar cada herramienta por separado, NOMAD la coordina; el usuario conserva el control de rutas y volúmenes mediante Compose.
-
Desinstalación. Hay un script de desinstalación descargable (irreversible):
curl -fsSL https://raw.githubusercontent.com/Crosstalk-Solutions/project-nomad/refs/heads/main/install/uninstall_nomad.sh -o uninstall_nomad.sh && sudo bash uninstall_nomad.sh
Números del repo
Medición: 21 de agosto de 2026, API de GitHub.
| Métrica | Valor |
|---|---|
| Estrellas | 36.079 |
| Bifurcaciones | 3.610 |
| Suscriptores reales | 208 |
| Incidencias abiertas indicadas por la API | 83 |
| Lenguaje principal | TypeScript |
| Licencia | Apache 2.0 |
| Creación | 24 de junio de 2025 |
| Último push | 19 de agosto de 2026 |
| Última publicación estable | v1.34.0, 4 de agosto de 2026 |
La API de GitHub devuelve watchers_count igual a las estrellas, por lo que se informa por separado subscribers_count (208) como número de suscriptores reales. El campo open_issues_count mezcla incidencias y solicitudes de cambio abiertas.
Principales contribuidores por número de contribuciones: jakeaturner (335), chriscrosstalk (229), cosmistack-bot (85), dependabot[bot] (34), bgauger (10), hestela (9), kennethbrewer3 (3), just-jbc (2).
Cómo lo recibió la comunidad
La recepción con anclas concretas procede sobre todo de Hacker News. El hilo principal, “Project Nomad – Knowledge That Never Goes Offline”, publicado el 22 de marzo de 2026, reunió 610 puntos y 222 comentarios. También hubo varios envíos menores al repositorio, con puntuaciones más discretas.
Opiniones a favor: moffers destacó “really clever targeting of a niche”; cstaszak se declaró fan de los proyectos “civilization in a box” y consideró útil un LLM como “sidecar” opcional, aunque criticó que el formato ZIM “leaves a lot to be desired in 2026” y apuntó a una alternativa, stazelabs/oza; hamstergene, aunque normalmente se burla de los preppers, vio valor real dado que hay gobiernos que cortan el acceso a internet; wooptoo, desde la época del módem, valoró no dar por sentada la conectividad; born-jre contó una anécdota de adopción, coincidiendo con estar descargando “110gb wikipedia dump on kiwix”; Aargau dijo que cerraba un eco-resort en Panamá y usaría el repositorio.
Críticas reales: Yokohiii dijo que “that doomsday framing on the site is pretty annoying”; itintheory preguntó directamente “why does it have to have AI? ugh”; Lapra objetó el coste energético en un escenario de supervivencia; leowoo91 lamentó el uso de Node.js; ZeroCool2u pidió un formato más simple, “a single file embedded database”; adsharma señaló que basarse en Kiwix/ZIM deja de lado el Wikidata de Wikipedia; WillAdams lamentó la ausencia de instalación en Raspberry Pi; coretx preguntó si los LLMs están censurados; mohamedkoubaa comentó con distancia irónica que es “great premise for a science fiction story”; tsss bromeó diciendo que esperaba el videojuego de su infancia.
En resumen: hay entusiasmo por la integración y la idea de un “archivador de conocimiento” local, pero críticas repetidas sobre el encuadre apocalíptico, la obligatoriedad percibida de la IA, el formato ZIM, el stack Node.js y la falta de soporte ARM.
Comparación con proyectos similares
La siguiente tabla está tomada de la sección comparativa del propio sitio oficial (los precios y características de los competidores son los que el proyecto publica, no una auditoría independiente):
| Propuesta | Precio (según el sitio) | IA | Hardware | Multiusuario/red |
|---|---|---|---|---|
| Project NOMAD | Gratis | LLMs con aceleración GPU | Cualquier PC que elijas | Sirve a toda la red |
| PrepperDisk | $199–$279 | Ninguna | Raspberry Pi (bloqueado) | WiFi hotspot (hasta 20) |
| Doom Box | $699 | Modelo 7B básico | Raspberry Pi (bloqueado) | Único |
| R.E.A.D.I. | $499 | Modelo 7B básico | Raspberry Pi (bloqueado) | Único |
| Z3R4H | $499 | Asesor IA on-device | Cualquier PC Windows/Linux | Un solo PC |
También figura como diferencia verificable del sitio: NOMAD es de código abierto (Apache 2.0), mientras que PrepperDisk es parcialmente abierto y Doom Box, R.E.A.D.I. y Z3R4H no; y NOMAD es actualizable, en contra de los drives estáticos de R.E.A.D.I.
Propuestas relacionadas citadas en la comunidad de Hacker News, no competidores comerciales directos:
| Propuesta | Coincidencia | Diferencia |
|---|---|---|
| Internet-in-a-Box | Reúne recursos educativos offline | NOMAD añade un Command Center Docker y una capa opcional de IA/RAG local |
| wrolpi.org | Archivado de conocimiento en una sola máquina | NOMAD orquesta varios servicios y contenido en un panel |
stazelabs/oza | Aproximación alternativa al formato ZIM | Es una alternativa técnica al formato de archivo, no un servidor de gestión completo |
Cómo contribuir
El proceso está documentado en CONTRIBUTING.md: abrir un issue primero para cualquier cambio no trivial (un PR sin issue asociado puede cerrarse; las correcciones triviales están exentas); bifurcar el repo, clonarlo y añadir el remote upstream; evitar instalar una versión de release localmente en la misma máquina de desarrollo (se recomienda un entorno Docker separado); sincronizar con upstream antes de trabajar, crear una rama descriptiva desde dev, probar contra una instancia en ejecución y usar Conventional Commits; reutilizar los componentes compartidos de admin/inertia/components/ para consistencia de UI; las notas de versión viven en admin/docs/release-notes.md; el versionado sigue SemVer gestionado automáticamente con semantic-release.
Casos de uso y a quién puede ayudar este repositorio
- Hogares, escuelas o bibliotecas que quieren conservar enciclopedias, referencias médicas y cursos locales ante conectividad irregular: NOMAD los sirve a la red local con Kolibri y Kiwix, con seguimiento de progreso y multiusuario.
- Homelabs y entusiastas de la IA local que quieren autoalojar un RAG privado sobre documentos propios: Ollama + Qdrant con carga de documentos y organización por materia/colección, con IA opcional y sin telemetría.
- Preparación para emergencias o vida off-grid (cabaña, RV, barco) donde se puede preparar hardware y contenido antes de perder internet: Wikipedia, mapas OSM de calle, guías de supervivencia y referencias médicas descargables de antemano, más el benchmark comunitario para dimensionar el hardware.
- Equipos que evalúan hardware para IA pueden usar el System Benchmark y el leaderboard comunitario para comparar puntuaciones de distintas instalaciones.
- Personas que quieren extender la biblioteca sin tocar el núcleo: los Community Add-Ons se montan en la biblioteca Kiwix existente, y el Supply Depot permite correr cualquier contenedor Docker propio como app gestionada.
NOMAD no sustituye material de emergencia certificado, profesionales ni copias físicas ni procedimientos de continuidad: es una herramienta de preparación informática que necesita pruebas y revisión de seguridad antes de depender de ella.
Recursos
- Repositorio: https://github.com/Crosstalk-Solutions/project-nomad
- Sitio oficial e instalación: https://www.projectnomad.us
- FAQ: https://github.com/Crosstalk-Solutions/project-nomad/blob/main/FAQ.md
- Guía de contribución: https://github.com/Crosstalk-Solutions/project-nomad/blob/main/CONTRIBUTING.md
- Benchmark / leaderboard: https://benchmark.projectnomad.us
- Roadmap público: https://roadmap.projectnomad.us
Nota: artículo elaborado a partir del README, el FAQ, la guía de contribución, la lista de add-ons, las releases, la API de GitHub, el sitio oficial y la discusión de Hacker News, consultados el 21 de agosto de 2026. Project N.O.M.A.D. se declara en desarrollo activo; comprobar capacidades, soporte de plataforma y seguridad en la versión exacta antes de desplegar.
Comentarios