project-nomad README

The project's README from github.com/Crosstalk-Solutions/project-nomad. As one markdown file: README.md.

Project NOMAD

Project NOMAD

Knowledge That Never Goes Offline

Website Discord Benchmark


Project NOMAD is a self-contained, offline-first knowledge and education server packed with critical tools, knowledge, and AI to keep you informed and empowered — anytime, anywhere.

Installation & Quickstart

Project NOMAD can be installed on any Debian-based operating system (we recommend Ubuntu 26.04 LTS; 24.04 LTS and Debian 12 are also supported). Installation is completely terminal-based, and all tools and resources are designed to be accessed through the browser, so there's no need for a desktop environment if you'd rather setup NOMAD as a "server" and access it through other clients.

Before you start: NOMAD itself needs about 5 GB of disk and under 1 GB of RAM. The offline content you add afterwards is what actually fills a drive, and the AI Assistant is what drives the memory requirement up. See Device Requirements for both, and the FAQ for individual content sizes.

Note: sudo/root privileges are required to run the install script

Quick Install (Debian-based OS Only)

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

Project NOMAD is now installed on your device! Open a browser and navigate to http://localhost:8080 (or http://DEVICE_IP:8080) to start exploring!

For a complete step-by-step walkthrough (including Ubuntu installation), see the Installation Guide. For Windows users, see the WSL2 install guide — community-supported path covering native Docker and Docker Desktop install routes.

Advanced Installation

For more control over the installation process, copy and paste the Docker Compose template into a docker-compose.yml file and customize it to your liking (be sure to replace any placeholders with your actual values). Then, run docker compose up -d to start the Command Center and its dependencies. Note: this method is recommended for advanced users only, as it requires familiarity with Docker and manual configuration before starting.

How It Works

NOMAD is a management UI ("Command Center") and API that orchestrates a collection of containerized tools and resources via Docker. It handles installation, configuration, and updates for everything — so you don't have to.

Built-in capabilities include:

NOMAD also includes built-in tools like a Wikipedia content selector, ZIM library manager, and content explorer.

What's Included

Capability Powered By What You Get
Information Library Kiwix Offline Wikipedia, medical references, survival guides, ebooks
AI Assistant Ollama + Qdrant Built-in chat with document upload and semantic search
Education Platform Kolibri Khan Academy courses, progress tracking, multi-user support
Offline Maps ProtoMaps Downloadable regional maps for offline viewing and search
Data Tools CyberChef Encryption, encoding, hashing, and data analysis
Notes FlatNotes Local note-taking with markdown support
System Benchmark Built-in Hardware scoring, Builder Tags, and community leaderboard
Supply Depot Built-in One-click app catalog + bring-your-own custom Docker containers

Device Requirements

While many similar offline survival computers are designed to be run on bare-minimum, lightweight hardware, Project NOMAD is quite the opposite. To install and run the available AI tools, we highly encourage the use of a beefy, GPU-backed device to make the most of your install.

At its core, however, NOMAD is still very lightweight. For a barebones installation of the management application itself, the following minimal specs are required:

Note: Project NOMAD is not sponsored by any hardware manufacturer and is designed to be as hardware-agnostic as possible. The hardware listed below is for example/comparison use only

Minimum Specs

Adding the AI Assistant brings the install to roughly 25 GB, because Ollama and a general-purpose model are both large, and a model needs about its download size in memory while it answers. That memory comes from VRAM if you have a discrete GPU and from system RAM if you do not, which is the single biggest reason the figures below are so much higher.

To run LLMs and other included AI tools:

Optimal Specs

For detailed build recommendations at three price points ($150–$1,000+), see the Hardware Guide.

Again, Project NOMAD itself is quite lightweight — it's the tools and resources you choose to install with NOMAD that will determine the specs required for your unique deployment

Running AI models on a different host

By default, NOMAD's installer will attempt to setup Ollama on the host when the AI Assistant is installed. However, if you would like to run the AI model on a different host, you can go to the settings of the AI assistant and input a URL for either an ollama or OpenAI-compatible API server (such as LM Studio).
Note that if you use Ollama on a different host, you must start the server with this option: OLLAMA_HOST=0.0.0.0.
Ollama is the preferred way to use the AI assistant, as it has features such as model download that OpenAI API does not support. So when using LM Studio, for example, you will have to use LM Studio to download models. You are responsible for the setup of Ollama/OpenAI server on the other host.

Frequently Asked Questions (FAQ)

For answers to common questions about Project NOMAD, please see our FAQ page.

About Internet Usage & Privacy

Project NOMAD is designed for offline usage. An internet connection is only required during the initial installation (to download dependencies) and if you (the user) decide to download additional tools and resources at a later time. Otherwise, NOMAD does not require an internet connection and has ZERO built-in telemetry.

To test internet connectivity, NOMAD first attempts to make a request to Cloudflare's utility endpoint, https://1.1.1.1/cdn-cgi/trace. If that endpoint is unreachable (for example, because your network blocks 1.1.1.1), it falls back to other endpoints the application already contacts (the GitHub API and the Project NOMAD API) and considers the connection online if any of them respond.

You can override the endpoint used for this check in two ways. The connectivity test URL can be configured from the UI under Settings → Advanced (stored locally on your instance), or you can set the INTERNET_STATUS_TEST_URL environment variable. When set, the environment variable always takes precedence over the UI-configured value. If neither is set, the built-in defaults above are used.

About Security

By design, Project NOMAD is intended to be open and available without hurdles — it includes no authentication. If you decide to connect your device to a local network after install (e.g. for allowing other devices to access its resources), you can block/open ports to control which services are exposed.

Will authentication be added in the future? Maybe. It's not currently a priority, but if there's enough demand for it, we may consider building in an optional authentication layer in a future release to support use cases where multiple users need access to the same instance but with different permission levels (e.g. family use with parental controls, classroom use with teacher/admin accounts, etc.). We have a suggestion for this on our public roadmap, so if this is something you'd like to see, please upvote it here: https://roadmap.projectnomad.us/posts/1/user-authentication-please-build-in-user-auth-with-admin-user-roles

For now, we recommend using network-level controls to manage access if you're planning to expose your NOMAD instance to other devices on a local network. NOMAD is not designed to be exposed directly to the internet, and we strongly advise against doing so unless you really know what you're doing, have taken appropriate security measures, and understand the risks involved.

Contributing

Contributions are welcome and appreciated! Please see CONTRIBUTING.md for guidelines on how to contribute to the project.

Testing Auto-Updates (Dry Run)

The Command Center can automatically install minor/patch updates of itself during a configurable window, after a cool-off period, and only when pre-flight checks pass (sufficient disk for the new image, no downloads or app installs in progress). Major versions always require a manual update.

Because exercising this logic with real version bumps is impractical, an Ace command runs the entire decision pipeline without ever triggering an update. Run it from the admin/ directory:

# 1) Deterministic scenario suite — no network, DB, or Docker required.
#    Proves every branch (major-only, cool-off, prerelease/draft, window wrap, …)
#    and exits non-zero on failure, so it's safe to wire into CI.
node ace auto-update:dry-run --scenarios

# 2) Simulate "what would happen if I were running 1.32.0 right now?"
#    against the LIVE GitHub releases feed and real pre-flight checks:
node ace auto-update:dry-run --current=1.32.0 --force-enabled

# 3) Fully offline simulation with a canned release list and a fixed clock:
node ace auto-update:dry-run --current=1.32.0 --force-enabled \
  --releases-file=./fixtures/releases.json --now=2026-06-04T21:00:00Z \
  --window-start=20:00 --window-end=23:00 --cooloff=72 --skip-preflight

It prints the resolved decision — current version, whether the clock is inside the window, the eligible target (if any), and pre-flight blockers — ending in a clear verdict such as WOULD UPDATE → v1.33.2 or WOULD NOT UPDATE (outside-window): …. No real update is ever requested.

Flag Description
--scenarios Run the built-in deterministic scenario suite and exit
--current=<version> Simulate this currently-running version (e.g. 1.32.0)
--force-enabled Treat auto-update as enabled, ignoring the saved setting
--cooloff=<hours> Override the cool-off period
--window-start=<HH:MM> / --window-end=<HH:MM> Override the update window
--now=<ISO timestamp> Simulate the clock at a specific time
--releases-file=<path> Use a local JSON releases array instead of fetching GitHub (offline)
--skip-preflight Bypass the Docker/disk/queue pre-flight checks

Community & Resources

License

Project NOMAD is licensed under the Apache License 2.0.

Helper Scripts

Once installed, Project NOMAD has a few helper scripts should you ever need to troubleshoot issues or perform maintenance that can't be done through the Command Center. All of these scripts are found in Project NOMAD's install directory, /opt/project-nomad

Start Script - Starts all installed project containers
sudo bash /opt/project-nomad/start_nomad.sh

Stop Script - Stops all installed project containers
sudo bash /opt/project-nomad/stop_nomad.sh

Update Script - Attempts to pull the latest images for the Command Center and its dependencies (i.e. mysql) and recreate the containers. Note: this only updates the Command Center containers. It does not update the installable application containers - that should be done through the Command Center UI
sudo bash /opt/project-nomad/update_nomad.sh
Uninstall Script - Need to start fresh? Use the uninstall script to make your life easy. Note: this cannot be undone!
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

project-nomad (Crosstalk-Solutions/project-nomad)

Searching Database…

这是什么?Project NOMAD 是一个独立运行、离线优先的知识和教育服务器:离线维基百科、数千本图书、可汗学院课程、离线地图,以及可选的本地 AI,全部运行在你自己的硬件上,完全不需要联网。
它是一个应用,还是一堆独立的工具?它是一个管理界面(指挥中心),外加一个通过 Docker 编排一整套容器化工具的 API——包括 Kiwix、Kolibri、ProtoMaps、CyberChef、FlatNotes、Ollama——统一负责所有工具的安装、配置和更新。
我怎么把它跑起来?在任意基于 Debian 的操作系统上运行终端安装脚本(推荐 Ubuntu 26.04 LTS;Windows 用户有一份社区提供的 WSL2 指南),然后用浏览器打开即可。高级用户也可以改用 docker compose up -d 部署 Docker Compose 模板。
我需要什么样的硬件?核心部分要求不高:2 GHz 双核 CPU、4 GB 内存和大约 5 GB 磁盘空间。真正吃配置的是 AI 助手——需要一块 RTX 3060 级别的显卡、32 GB 内存和 250 GB 磁盘,因为模型在回答问题时占用的内存大约相当于它的下载体积。
我可以放心地把它放到家庭网络里给其他设备用吗?它设计上不带任何身份验证,也不适合直接暴露在互联网上。在局域网内,你可以通过封堵或开放端口来控制其他设备能访问到什么——强烈不建议把它直接暴露到公网。
什么样的情况下会有人真的用到它?任何想在没网的情况下拥有完整知识资源的人都用得上:项目的定位就是对标那些只求最低限度保命的离线应急包,而 Kolibri 的多用户支持加上计划中的家长和教师账号,也表明它面向家庭和课堂使用。
初次安装之后还需要联网吗?不需要——联网只在安装时下载依赖时用到,之后除非你想主动获取更多内容或更新,否则都不用联网。装好之后,一切都能在完全断网的情况下运行。
它会收集关于我的任何遥测数据吗?不会——完全没有任何内置遥测。唯一的对外请求是一个可配置的联网检测(默认使用 Cloudflare 的 1.1.1.1,并带有备用地址),用于让界面显示你是否在线。
开箱即带的到底有哪些东西?通过 Kiwix 提供的离线维基百科、医学参考资料和电子书,通过 Kolibri 提供的带学习进度记录的可汗学院课程,通过 ProtoMaps 提供的离线区域地图,还有 CyberChef 数据工具、FlatNotes Markdown 笔记、一个硬件跑分工具,以及 Supply Depot 应用目录。
我能往里面添加自己的应用或容器吗?可以——Supply Depot 提供一键安装(PDF 工具、文件管理器、电子书库、密码管理器等等),你也可以在内置套件旁边运行自己的自定义 Docker 容器。
它会自动更新吗?可选:在开启自动更新后,它会按你自己设定的计划,在预检查通过后安装核心、已装应用和离线内容的次要版本和补丁版本。大版本更新始终需要手动进行。
AI 助手可以跑在和 NOMAD 服务器不同的机器上吗?可以——在 AI 助手设置里,你可以把它指向远程的 Ollama 或兼容 OpenAI 的服务器,比如 LM Studio。远程 Ollama 必须以 OLLAMAHOST=0.0.0.0 启动,而且那台主机的配置和模型下载需要你自己搞定。
Size
15.8 MB
Stars
40.4K
Age
1y
Commits · 90 Days