Project N.O.M.A.D, is a self-contained, offline survival computer packed with critical tools, knowledge, and AI to keep you informed and empowered—anytime, anywhere.
Go to file
Chris Sherwood ab8281d08b feat(KB): surface embedding-disk estimate in curated tier-change modal (RFC #883 §1)
When a user picks a tier in TierSelectionModal, show how much additional
disk space the AI Assistant will need if the new ZIMs are indexed, plus
a policy-aware footer explaining whether they'll auto-index (Always) or
wait for opt-in (Manual). Estimates consume #891's KbRatioRegistry via a
new POST /api/rag/estimate-batch endpoint.

Backend
- New POST /api/rag/estimate-batch route + RagController.estimateBatch
- VineJS schema accepting array of {filename, sizeBytes}, capped at 500
- KbRatioRegistry.estimateBatch aggregates via the existing prefix-match
  lookup, returns {totalChunks, totalBytes, hasUnknown}
- New BYTES_PER_CHUNK_ON_DISK constant (~8 KB: 3 KB vector + ~3 KB chunk
  text + ~2 KB payload/index overhead). Tunable; will be replaced by
  Phase 4 self-calibration once we have real measurements.
- Controller normalizes incoming filenames via path.basename so callers
  that send full paths or URLs still match registry prefixes correctly.

Frontend
- api.estimateEmbeddingBatch() client method
- TierSelectionModal: when localSelectedSlug is set, resolve the tier's
  resources (incl. inherited tiers), POST to /estimate-batch, and render
  a new info block with the +~X GB figure + ingest-policy copy. Also
  fetches rag.defaultIngestPolicy so the same block surfaces whether
  indexing will fire automatically or wait for the user.
- resourceFilename() helper extracts the basename from the resource URL
  so the registry lookup hits the right prefix regardless of mirror.

Tests
- 4 new cases in tests/unit/kb_ratio_lookup.spec.ts covering the
  estimateBatch aggregator: standard sum, unknown-flagging, video-only
  ZIM (0 chunks but known, hasUnknown stays false), empty input.

Stacks on feat/kb-ratio-registry (#891) — consumes the registry table
seeded by that PR. Once #891 merges to rc, this PR auto-rebases.

Out of scope for this PR (deferred to follow-ups):
- Per-batch opt-in checkbox (RFC §1's '☑ Also index these for AI') needs
  a per-batch policy override path and is a separate PR
- Guardrail modal at 50 GB / 10% free / 6 hr thresholds (RFC §7) is also
  separate; this PR is informational, not gating
- Time-to-embed estimate awaits a chunks-per-second metric per host
2026-05-16 21:33:30 -07:00
.github ci: upgrade GitHub Actions to latest versions (#362) 2026-04-03 14:26:50 -07:00
admin feat(KB): surface embedding-disk estimate in curated tier-change modal (RFC #883 §1) 2026-05-16 21:33:30 -07:00
collections fix(Collections): update ZIM files to latest versions (#332) 2026-03-25 16:30:35 -07:00
install fix(AI): vendor-aware AMD HSA override + benchmark discrete-GPU detection 2026-05-05 12:11:56 -07:00
.dockerignore build: switch to node:22-slim image for libzim compat 2026-02-09 16:23:47 -08:00
.gitignore feat: openwebui+ollama and zim management 2025-07-09 09:08:21 -07:00
.releaserc.json ops: support RC versions 2026-03-03 20:51:38 -08:00
CODE_OF_CONDUCT.md docs: add Contributor Covenant Code of Conduct 2026-03-11 17:07:41 -07:00
CONTRIBUTING.md docs: require linked issue for non-trivial PRs (#799) 2026-04-27 18:37:57 -07:00
Dockerfile feat(Maps): regional map downloads via go-pmtiles extract (#780) 2026-05-03 13:47:53 -07:00
FAQ.md docs: link to new WSL2 install guide from README and FAQ 2026-05-04 10:26:05 -07:00
LICENSE chore: add Apache 2.0 license 2026-03-04 20:05:14 -08:00
package-lock.json chore(release): 1.32.0-rc.4 [skip ci] 2026-05-13 03:42:34 +00:00
package.json chore(release): 1.32.0-rc.4 [skip ci] 2026-05-13 03:42:34 +00:00
README.md docs: link to new WSL2 install guide from README and FAQ 2026-05-04 10:26:05 -07:00

Project N.O.M.A.D.

Node for Offline Media, Archives, and Data

Knowledge That Never Goes Offline

Website Discord Benchmark


Project N.O.M.A.D. 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 N.O.M.A.D. can be installed on any Debian-based operating system (we recommend Ubuntu). 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 N.O.M.A.D. as a "server" and access it through other clients.

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 N.O.M.A.D. 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

N.O.M.A.D. 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:

  • AI Chat with Knowledge Base — local AI chat powered by Ollama or you can use OpenAI API compatible software such as LM Studio or llama.cpp, with document upload and semantic search (RAG via Qdrant)
  • Information Library — offline Wikipedia, medical references, ebooks, and more via Kiwix
  • Education Platform — Khan Academy courses with progress tracking via Kolibri
  • Offline Maps — downloadable regional maps via ProtoMaps
  • Data Tools — encryption, encoding, and analysis via CyberChef
  • Notes — local note-taking via FlatNotes
  • System Benchmark — hardware scoring with a community leaderboard
  • Easy Setup Wizard — guided first-time configuration with curated content collections

N.O.M.A.D. 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 with search and navigation
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

Device Requirements

While many similar offline survival computers are designed to be run on bare-minimum, lightweight hardware, Project N.O.M.A.D. 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 it's core, however, N.O.M.A.D. is still very lightweight. For a barebones installation of the management application itself, the following minimal specs are required:

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

Minimum Specs

  • Processor: 2 GHz dual-core processor or better
  • RAM: 4GB system memory
  • Storage: At least 5 GB free disk space
  • OS: Debian-based (Ubuntu recommended)
  • Stable internet connection (required during install only)

To run LLM's and other included AI tools:

Optimal Specs

  • Processor: AMD Ryzen 7 or Intel Core i7 or better
  • RAM: 32 GB system memory
  • Graphics: NVIDIA RTX 3060 or AMD equivalent or better (more VRAM = run larger models)
  • Storage: At least 250 GB free disk space (preferably on SSD)
  • OS: Debian-based (Ubuntu recommended)
  • Stable internet connection (required during install only)

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

Again, Project N.O.M.A.D. itself is quite lightweight - it's the tools and resources you choose to install with N.O.M.A.D. that will determine the specs required for your unique deployment

Running AI models on a different host

By default, N.O.M.A.D.'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 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 N.O.M.A.D., please see our FAQ page.

About Internet Usage & Privacy

Project N.O.M.A.D. 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, N.O.M.A.D. does not require an internet connection and has ZERO built-in telemetry.

To test internet connectivity, N.O.M.A.D. attempts to make a request to Cloudflare's utility endpoint, https://1.1.1.1/cdn-cgi/trace and checks for a successful response.

About Security

By design, Project N.O.M.A.D. 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 it's 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 uses 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 N.O.M.A.D. instance to other devices on a local network. N.O.M.A.D. 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.

Community & Resources

License

Project N.O.M.A.D. is licensed under the Apache License 2.0.

Helper Scripts

Once installed, Project N.O.M.A.D. 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 N.O.M.A.D.'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