Crosstalk-Solutions/project-nomadPublic

Project NOMAD is an offline-first knowledge and education server. Wikipedia, thousands of books, courses, maps, and optional local AI, all running on hardware you own with no internet required.

AI summary: A self-contained, offline-first knowledge and education server packed with tools and local AI.

Stars
39K
+160 today
Forks
3.9K
Watchers
238
Open issues
54
Open PRs
36
Contributors
~37
Commits
753
Branches
40

TypeScriptApache-2.0Created Jun 24, 2025Last push 1d agoLatest release v1.34.1+593 stars this week+2.5K this month

Quick answers

What is project-nomad?
A self-contained, offline-first knowledge and education server packed with tools and local AI.
What does project-nomad do?
Project Nomad is a deployment automation solution designed to rapidly provision self-hosted infrastructure instances using cloud providers like Linode and DigitalOcean. It utilizes a combination of Bash scripts and Terraform to completely automate the setup of a secure, production-ready server environment. The resulting instance includes a hardened Ubuntu base, automated updates, Docker CE, and a fully configured Nginx reverse proxy with automated Let's Encrypt SSL certificates. It serves as an ideal foundational platform for individuals and businesses looking to quickly deploy self-hosted web applications with enterprise-grade security defaults.
Who is project-nomad for?
Preppers, educators in remote areas, privacy advocates, and homelab enthusiasts looking to build an independent, offline knowledge base.
How do I get started with project-nomad?
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
How popular is project-nomad on GitHub?
Crosstalk-Solutions/project-nomad has 38,963 stars and 3,886 forks on GitHub, and gained 593 stars in the last 7 days.
What license does project-nomad use?
Crosstalk-Solutions/project-nomad is released under the Apache-2.0 license.

Star history

since Jul 28, 2026
010K20K30KJul 2026Aug 2026Sep 2026Oct 2026
39K stars as of Oct 3, 2026. Measured daily since Jul 28, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 3 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 4 commits2025-10-07: 2 commits2025-10-08: 0 commits2025-10-09: 5 commits2025-10-10: 1 commit2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 2 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 1 commit2025-11-17: 0 commits2025-11-18: 7 commits2025-11-19: 2 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 2 commits2025-12-01: 2 commits2025-12-02: 2 commits2025-12-03: 3 commits2025-12-04: 0 commits2025-12-05: 11 commits2025-12-06: 2 commits2025-12-07: 5 commits2025-12-08: 2 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 1 commit2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 2 commits2025-12-20: 0 commits2025-12-21: 1 commit2025-12-22: 0 commits2025-12-23: 2 commits2025-12-24: 4 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 1 commit2026-01-02: 1 commit2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 12 commits2026-01-12: 0 commits2026-01-13: 6 commits2026-01-14: 2 commits2026-01-15: 6 commits2026-01-16: 4 commits2026-01-17: 1 commit2026-01-18: 13 commits2026-01-19: 5 commits2026-01-20: 5 commits2026-01-21: 4 commits2026-01-22: 4 commits2026-01-23: 10 commits2026-01-24: 3 commits2026-01-25: 2 commits2026-01-26: 1 commit2026-01-27: 1 commit2026-01-28: 12 commits2026-01-29: 0 commits2026-01-30: 1 commit2026-01-31: 2 commits2026-02-01: 7 commits2026-02-02: 6 commits2026-02-03: 5 commits2026-02-04: 12 commits2026-02-05: 12 commits2026-02-06: 4 commits2026-02-07: 3 commits2026-02-08: 9 commits2026-02-09: 5 commits2026-02-10: 1 commit2026-02-11: 12 commits2026-02-12: 4 commits2026-02-13: 0 commits2026-02-14: 1 commit2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 12 commits2026-02-19: 6 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 6 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 3 commits2026-03-02: 0 commits2026-03-03: 1 commit2026-03-04: 9 commits2026-03-05: 12 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 2 commits2026-03-09: 7 commits2026-03-10: 3 commits2026-03-11: 11 commits2026-03-12: 3 commits2026-03-13: 7 commits2026-03-14: 3 commits2026-03-15: 8 commits2026-03-16: 2 commits2026-03-17: 0 commits2026-03-18: 2 commits2026-03-19: 5 commits2026-03-20: 28 commits2026-03-21: 3 commits2026-03-22: 1 commit2026-03-23: 4 commits2026-03-24: 7 commits2026-03-25: 12 commits2026-03-26: 1 commit2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 4 commits2026-04-01: 17 commits2026-04-02: 15 commits2026-04-03: 7 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 2 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 1 commit2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 14 commits2026-04-18: 0 commits2026-04-19: 1 commit2026-04-20: 8 commits2026-04-21: 3 commits2026-04-22: 1 commit2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 5 commits2026-04-28: 4 commits2026-04-29: 3 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 3 commits2026-05-04: 8 commits2026-05-05: 3 commits2026-05-06: 0 commits2026-05-07: 1 commit2026-05-08: 1 commit2026-05-09: 1 commit2026-05-10: 0 commits2026-05-11: 1 commit2026-05-12: 4 commits2026-05-13: 7 commits2026-05-14: 11 commits2026-05-15: 3 commits2026-05-16: 3 commits2026-05-17: 9 commits2026-05-18: 4 commits2026-05-19: 3 commits2026-05-20: 7 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 2 commits2026-05-25: 1 commit2026-05-26: 0 commits2026-05-27: 7 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 2 commits2026-05-31: 1 commit2026-06-01: 1 commit2026-06-02: 1 commit2026-06-03: 0 commits2026-06-04: 5 commits2026-06-05: 5 commits2026-06-06: 7 commits2026-06-07: 4 commits2026-06-08: 10 commits2026-06-09: 7 commits2026-06-10: 0 commits2026-06-11: 2 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 1 commit2026-06-16: 1 commit2026-06-17: 2 commits2026-06-18: 0 commits2026-06-19: 3 commits2026-06-20: 3 commits2026-06-21: 0 commits2026-06-22: 5 commits2026-06-23: 11 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 1 commit2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 1 commit2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 10 commits2026-07-19: 1 commit2026-07-20: 20 commits2026-07-21: 11 commits2026-07-22: 4 commits2026-07-23: 4 commits2026-07-24: 8 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 5 commits2026-07-28: 5 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 1 commit2026-08-01: 0 commits2026-08-02: 10 commits2026-08-03: 5 commits2026-08-04: 3 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 2 commits2026-09-01: 0 commits2026-09-02: 2 commits2026-09-03: 0 commits2026-09-04: 0 commits2026-09-05: 0 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 0 commits2026-09-09: 0 commits2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 0 commits2026-09-13: 0 commits2026-09-14: 0 commits2026-09-15: 0 commits2026-09-16: 0 commits2026-09-17: 0 commits2026-09-18: 0 commits2026-09-19: 0 commits2026-09-20: 0 commits2026-09-21: 0 commits2026-09-22: 0 commits2026-09-23: 0 commits2026-09-24: 0 commits2026-09-25: 0 commits2026-09-26: 0 commits
729 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    38,963 stars

  • Very active

    729 commits in 52 weeks

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

  • Repeat trending

    13 trending appearances

What project-nomad does

Project Nomad is a deployment automation solution designed to rapidly provision self-hosted infrastructure instances using cloud providers like Linode and DigitalOcean. It utilizes a combination of Bash scripts and Terraform to completely automate the setup of a secure, production-ready server environment. The resulting instance includes a hardened Ubuntu base, automated updates, Docker CE, and a fully configured Nginx reverse proxy with automated Let's Encrypt SSL certificates. It serves as an ideal foundational platform for individuals and businesses looking to quickly deploy self-hosted web applications with enterprise-grade security defaults.

Preppers, educators in remote areas, privacy advocates, and homelab enthusiasts looking to build an independent, offline knowledge base.

  • Infrastructure as code: Utilizes Terraform to rapidly and repeatably provision cloud instances on providers like Linode or DigitalOcean.
  • Automated server hardening: Scripts apply security best practices including UFW firewall rules and SSH key-only authentication.
  • Containerization ready: Installs and configures Docker CE and Docker Compose automatically for immediate app deployment.
  • Integrated reverse proxy: Deploys an Nginx proxy paired with Certbot to handle automatic SSL certificate generation and renewal.
  • Zero-touch updates: Configures the Ubuntu base system for unattended security upgrades to minimize maintenance overhead.

Where teams use it

Rapid homelab deployment

Quickly spin up a secure, public-facing server environment to host personal web applications or media servers.

Standardized infrastructure

Ensure every new cloud instance follows identical security and software configuration baselines without manual setup.

Reverse proxy management

Automatically route traffic and secure connections to multiple Dockerized services on a single host.

Disaster recovery testing

Use the Terraform scripts to rapidly rebuild a compromised or failed server from scratch in minutes.

Getting started: 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

README

main branch

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.

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:

  • 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
  • Supply Depot — a one-click app catalog (PDF tools, file browser, e-book library, password manager, and more) plus the ability to run your own custom Docker containers
  • Automatic Updates — opt-in, hands-off updates for the core software, installed apps, and offline content, on a schedule you control
  • Easy Setup Wizard — guided first-time configuration with curated content collections

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

To run LLMs 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 26.04 LTS 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 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
View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 125

Releases and announcements

79 total
  1. v1.35.0-rc.2v1.35.0-rc.2Sep 24, 2026pre-release

    # [1.35.0-rc.2](https://github.com/Crosstalk-Solutions/project-nomad/compare/v1.35.0-rc.1...v1.35.0-rc.2) (2026-09-24) ### Bug Fixes * **ai:** bump the Ollama pin to 0.33.3 to fix the disconnect hang ([bdfcd16](https://github.com/Crosstalk-Solutions/project-nomad/commit/bdfcd1698436091b97f983e44823689178ef9187)), closes [#1321](https://github.com/Crosstalk-Solutions/project-nomad/issues/1321) * **ai:** don't classify the backend as non-Ollama when it is merely unreachable ([9504f5f](https://github.com/Crosstalk-Solutions/project-nomad/commit/9504f5ff17e584c49db787c8cce5962255f0bb1f)), closes [#1349](https://github.com/Crosstalk-Solutions/project-nomad/issues/1349) [#1349](https://github.com/Crosstalk-Solutions/project-nomad/issues/1349) * bound custom URL length before persistence ([ce60e06](https://github.com/Crosstalk-Solutions/project-nomad/commit/ce60e063122dbd41ca6db8526f1b430d02dfc137)) * **chat:** render the user's message before creating the session ([1cf7bf5](https://github.com/Crosstalk-Solutions/project-nomad/commit/1cf7bf5bbe2a219093da9cd1131ca3b4a589aeb9)) * **chat:** stop capping answers at 1024 tokens and surface truncation ([b2cb1f1](https://github.com/Crosstalk-

  2. v1.35.0-rc.1v1.35.0-rc.1Sep 13, 2026pre-release

    # [1.35.0-rc.1](https://github.com/Crosstalk-Solutions/project-nomad/compare/v1.34.1...v1.35.0-rc.1) (2026-09-13) ### Bug Fixes * **ai:** a failed Ollama model pull is reported to the user as a success ([37818a3](https://github.com/Crosstalk-Solutions/project-nomad/commit/37818a32c8e674faf32bea41df5cf90d7c43a21e)), closes [#1071](https://github.com/Crosstalk-Solutions/project-nomad/issues/1071) [#1273](https://github.com/Crosstalk-Solutions/project-nomad/issues/1273) [#1071](https://github.com/Crosstalk-Solutions/project-nomad/issues/1071) * **ai:** don't probe the native embed endpoint on a non-Ollama backend ([8c80916](https://github.com/Crosstalk-Solutions/project-nomad/commit/8c80916f1d1dd1a89917bd33f8bb302d472e6863)), closes [#1279](https://github.com/Crosstalk-Solutions/project-nomad/issues/1279) * **AI:** removes long-dead default rewrite model warning ([cfdd863](https://github.com/Crosstalk-Solutions/project-nomad/commit/cfdd86368782e50f0ed3ede2d1bb0564058c34ec)) * **AI:** stop <think> output leaking into titles, chips, and the RAG query ([#1254](https://github.com/Crosstalk-Solutions/project-nomad/issues/1254)) ([4acfef5](https://github.com/Crosstalk-Solutions/project-n

  3. v1.34.1v1.34.1Sep 2, 2026

    ## [1.34.1](https://github.com/Crosstalk-Solutions/project-nomad/compare/v1.34.0...v1.34.1) (2026-09-02) ### Bug Fixes * **zim:** extract Kiwix catalog URL into system-wide constant ([fbeb3cf](https://github.com/Crosstalk-Solutions/project-nomad/commit/fbeb3cf7aecbe283a6162a52a67bc678da2ff73e)) * **zim:** use the OPDS catalog host, not Kiwix's gated browse host ([0a32344](https://github.com/Crosstalk-Solutions/project-nomad/commit/0a32344942a750723a568525c6412cca8cd27415))

  4. v1.34.0v1.34.0Aug 4, 2026

    ## Version 1.34.0 - August 4, 2026 ### Features - **AI**: nomad.md for custom instructions (#1127). Thanks @jakeaturner for the contribution! - **AI**: per-model thinking toggle with global default (off) (#1079). Thanks @chriscrosstalk for the contribution! - **API Documentation**: Auto-generating OpenAPI docs with Scalar UI (#1128). Thanks @jakeaturner for the contribution! - **Benchmark**: official multi-arch sysbench, resolved digest, platform metadata (#1158). Thanks @chriscrosstalk for the contribution! - **Benchmark**: lock Score v2 AI reference to 13.2 (measured, was placeholder) (#1097). Thanks @chriscrosstalk for the contribution! - **Benchmark**: dashboard re-run banner prompting a Score v2 re-run (#1096). Thanks @chriscrosstalk for the contribution! - **Benchmark**: Score v2 app client — raws, uncapped score, v2 payload + UI. Thanks @chriscrosstalk for the contribution! - **Benchmark**: harness hardening — fail loudly + pin sysbench + record provenance (#1089). Thanks @chriscrosstalk for the contribution! - **Benchmark**: end-of-run score reveal + NVIDIA GPU-util overlay (#1087). Thanks @chriscrosstalk for the contribution! - **Benchmark**: authoritative in-test sysbenc

  5. v1.34.0-rc.4v1.34.0-rc.4Aug 2, 2026pre-release

    # [1.34.0-rc.4](https://github.com/Crosstalk-Solutions/project-nomad/compare/v1.34.0-rc.3...v1.34.0-rc.4) (2026-08-02) ### Bug Fixes * **benchmark:** don't block submission when the AI host is this machine ([#1166](https://github.com/Crosstalk-Solutions/project-nomad/issues/1166)) ([bb17ad7](https://github.com/Crosstalk-Solutions/project-nomad/commit/bb17ad73141c250dac705cd90f41319012cbaf6f)), closes [#1157](https://github.com/Crosstalk-Solutions/project-nomad/issues/1157) * **benchmark:** don't submit unresolved PCI ids as the GPU model ([#1165](https://github.com/Crosstalk-Solutions/project-nomad/issues/1165)) ([fe2d070](https://github.com/Crosstalk-Solutions/project-nomad/commit/fe2d070a2a44e29868e279f8b3e4cd582189f7ab)) * **benchmark:** name the fix in the remote-host block, log warm-up failures ([#1164](https://github.com/Crosstalk-Solutions/project-nomad/issues/1164)) ([a0d36e0](https://github.com/Crosstalk-Solutions/project-nomad/commit/a0d36e0ca24083cc4af3ba964366142a4174b9d2)) * **chat:** open full chat in place instead of a new window ([#1181](https://github.com/Crosstalk-Solutions/project-nomad/issues/1181)) ([f7e7ac0](https://github.com/Crosstalk-Solutions/project-no

Code frequency

additions and deletions
+21.5K-21.5KWeek of 2025-09-21: +0 linesWeek of 2025-09-21: -0 linesWeek of 2025-09-28: +120 linesWeek of 2025-09-28: -17 linesWeek of 2025-10-05: +206 linesWeek of 2025-10-05: -111 linesWeek of 2025-10-12: +0 linesWeek of 2025-10-12: -0 linesWeek of 2025-10-19: +0 linesWeek of 2025-10-19: -0 linesWeek of 2025-10-26: +66 linesWeek of 2025-10-26: -12 linesWeek of 2025-11-02: +0 linesWeek of 2025-11-02: -0 linesWeek of 2025-11-09: +0 linesWeek of 2025-11-09: -0 linesWeek of 2025-11-16: +272 linesWeek of 2025-11-16: -149 linesWeek of 2025-11-23: +0 linesWeek of 2025-11-23: -0 linesWeek of 2025-11-30: +5,731 linesWeek of 2025-11-30: -1,736 linesWeek of 2025-12-07: +257 linesWeek of 2025-12-07: -128 linesWeek of 2025-12-14: +434 linesWeek of 2025-12-14: -12 linesWeek of 2025-12-21: +840 linesWeek of 2025-12-21: -290 linesWeek of 2025-12-28: +50 linesWeek of 2025-12-28: -43 linesWeek of 2026-01-04: +0 linesWeek of 2026-01-04: -0 linesWeek of 2026-01-11: +2,319 linesWeek of 2026-01-11: -330 linesWeek of 2026-01-18: +7,369 linesWeek of 2026-01-18: -976 linesWeek of 2026-01-25: +8,336 linesWeek of 2026-01-25: -1,703 linesWeek of 2026-02-01: +5,924 linesWeek of 2026-02-01: -3,262 linesWeek of 2026-02-08: +5,360 linesWeek of 2026-02-08: -1,544 linesWeek of 2026-02-15: +393 linesWeek of 2026-02-15: -105 linesWeek of 2026-02-22: +293 linesWeek of 2026-02-22: -120 linesWeek of 2026-03-01: +1,513 linesWeek of 2026-03-01: -600 linesWeek of 2026-03-08: +3,281 linesWeek of 2026-03-08: -300 linesWeek of 2026-03-15: +1,797 linesWeek of 2026-03-15: -982 linesWeek of 2026-03-22: +323 linesWeek of 2026-03-22: -169 linesWeek of 2026-03-29: +4,259 linesWeek of 2026-03-29: -689 linesWeek of 2026-04-05: +55 linesWeek of 2026-04-05: -20 linesWeek of 2026-04-12: +832 linesWeek of 2026-04-12: -252 linesWeek of 2026-04-19: +724 linesWeek of 2026-04-19: -124 linesWeek of 2026-04-26: +711 linesWeek of 2026-04-26: -166 linesWeek of 2026-05-03: +3,315 linesWeek of 2026-05-03: -431 linesWeek of 2026-05-10: +3,507 linesWeek of 2026-05-10: -300 linesWeek of 2026-05-17: +1,473 linesWeek of 2026-05-17: -557 linesWeek of 2026-05-24: +3,798 linesWeek of 2026-05-24: -349 linesWeek of 2026-05-31: +3,356 linesWeek of 2026-05-31: -128 linesWeek of 2026-06-07: +6,898 linesWeek of 2026-06-07: -2,100 linesWeek of 2026-06-14: +841 linesWeek of 2026-06-14: -115 linesWeek of 2026-06-21: +623 linesWeek of 2026-06-21: -296 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +3 linesWeek of 2026-07-05: -3 linesWeek of 2026-07-12: +1,536 linesWeek of 2026-07-12: -336 linesWeek of 2026-07-19: +21,535 linesWeek of 2026-07-19: -2,459 linesWeek of 2026-07-26: +562 linesWeek of 2026-07-26: -68 linesWeek of 2026-08-02: +653 linesWeek of 2026-08-02: -79 linesWeek of 2026-08-09: +0 linesWeek of 2026-08-09: -0 linesWeek of 2026-08-16: +0 linesWeek of 2026-08-16: -0 linesWeek of 2026-08-23: +0 linesWeek of 2026-08-23: -0 linesWeek of 2026-08-30: +80 linesWeek of 2026-08-30: -18 linesWeek of 2026-09-06: +0 linesWeek of 2026-09-06: -0 linesWeek of 2026-09-13: +0 linesWeek of 2026-09-13: -0 linesSep 21, 2025Sep 13, 2026
+99.6K lines added, -21.1K removed over the last year.

Commits per week

last 52 weeks
490Week of 2025-09-28: 3 commitsWeek of 2025-10-05: 12 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 2 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 10 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 22 commitsWeek of 2025-12-07: 7 commitsWeek of 2025-12-14: 3 commitsWeek of 2025-12-21: 7 commitsWeek of 2025-12-28: 2 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 31 commitsWeek of 2026-01-18: 44 commitsWeek of 2026-01-25: 19 commitsWeek of 2026-02-01: 49 commitsWeek of 2026-02-08: 32 commitsWeek of 2026-02-15: 18 commitsWeek of 2026-02-22: 6 commitsWeek of 2026-03-01: 25 commitsWeek of 2026-03-08: 36 commitsWeek of 2026-03-15: 48 commitsWeek of 2026-03-22: 25 commitsWeek of 2026-03-29: 43 commitsWeek of 2026-04-05: 2 commitsWeek of 2026-04-12: 15 commitsWeek of 2026-04-19: 13 commitsWeek of 2026-04-26: 12 commitsWeek of 2026-05-03: 17 commitsWeek of 2026-05-10: 29 commitsWeek of 2026-05-17: 23 commitsWeek of 2026-05-24: 12 commitsWeek of 2026-05-31: 20 commitsWeek of 2026-06-07: 23 commitsWeek of 2026-06-14: 10 commitsWeek of 2026-06-21: 16 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 1 commitsWeek of 2026-07-12: 11 commitsWeek of 2026-07-19: 48 commitsWeek of 2026-07-26: 11 commitsWeek of 2026-08-02: 18 commitsWeek of 2026-08-09: 0 commitsWeek of 2026-08-16: 0 commitsWeek of 2026-08-23: 0 commitsWeek of 2026-08-30: 4 commitsWeek of 2026-09-06: 0 commitsWeek of 2026-09-13: 0 commitsWeek of 2026-09-20: 0 commitsSep 28, 2025Sep 20, 2026
729 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 6 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 3 commitsSun 4:00 — 4 commitsSun 5:00 — 3 commitsSun 6:00 — 4 commitsSun 7:00 — 1 commitsSun 8:00 — 4 commitsSun 9:00 — 1 commitsSun 10:00 — 1 commitsSun 11:00 — 3 commitsSun 12:00 — 6 commitsSun 13:00 — 7 commitsSun 14:00 — 13 commitsSun 15:00 — 8 commitsSun 16:00 — 14 commitsSun 17:00 — 6 commitsSun 18:00 — 0 commitsSun 19:00 — 2 commitsSun 20:00 — 1 commitsSun 21:00 — 6 commitsSun 22:00 — 2 commitsSun 23:00 — 5 commitsMon 0:00 — 12 commitsMon 1:00 — 3 commitsMon 2:00 — 0 commitsMon 3:00 — 2 commitsMon 4:00 — 2 commitsMon 5:00 — 8 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 1 commitsMon 9:00 — 6 commitsMon 10:00 — 8 commitsMon 11:00 — 2 commitsMon 12:00 — 3 commitsMon 13:00 — 4 commitsMon 14:00 — 6 commitsMon 15:00 — 10 commitsMon 16:00 — 8 commitsMon 17:00 — 5 commitsMon 18:00 — 9 commitsMon 19:00 — 8 commitsMon 20:00 — 3 commitsMon 21:00 — 10 commitsMon 22:00 — 3 commitsMon 23:00 — 5 commitsTue 0:00 — 4 commitsTue 1:00 — 1 commitsTue 2:00 — 2 commitsTue 3:00 — 4 commitsTue 4:00 — 5 commitsTue 5:00 — 2 commitsTue 6:00 — 7 commitsTue 7:00 — 1 commitsTue 8:00 — 5 commitsTue 9:00 — 3 commitsTue 10:00 — 3 commitsTue 11:00 — 3 commitsTue 12:00 — 4 commitsTue 13:00 — 1 commitsTue 14:00 — 4 commitsTue 15:00 — 5 commitsTue 16:00 — 7 commitsTue 17:00 — 10 commitsTue 18:00 — 9 commitsTue 19:00 — 5 commitsTue 20:00 — 5 commitsTue 21:00 — 3 commitsTue 22:00 — 7 commitsTue 23:00 — 9 commitsWed 0:00 — 5 commitsWed 1:00 — 1 commitsWed 2:00 — 2 commitsWed 3:00 — 1 commitsWed 4:00 — 4 commitsWed 5:00 — 6 commitsWed 6:00 — 3 commitsWed 7:00 — 4 commitsWed 8:00 — 2 commitsWed 9:00 — 3 commitsWed 10:00 — 6 commitsWed 11:00 — 8 commitsWed 12:00 — 3 commitsWed 13:00 — 2 commitsWed 14:00 — 9 commitsWed 15:00 — 11 commitsWed 16:00 — 15 commitsWed 17:00 — 10 commitsWed 18:00 — 3 commitsWed 19:00 — 1 commitsWed 20:00 — 13 commitsWed 21:00 — 18 commitsWed 22:00 — 21 commitsWed 23:00 — 11 commitsThu 0:00 — 4 commitsThu 1:00 — 0 commitsThu 2:00 — 2 commitsThu 3:00 — 1 commitsThu 4:00 — 6 commitsThu 5:00 — 7 commitsThu 6:00 — 10 commitsThu 7:00 — 0 commitsThu 8:00 — 1 commitsThu 9:00 — 4 commitsThu 10:00 — 2 commitsThu 11:00 — 1 commitsThu 12:00 — 7 commitsThu 13:00 — 0 commitsThu 14:00 — 5 commitsThu 15:00 — 2 commitsThu 16:00 — 13 commitsThu 17:00 — 2 commitsThu 18:00 — 2 commitsThu 19:00 — 3 commitsThu 20:00 — 3 commitsThu 21:00 — 7 commitsThu 22:00 — 12 commitsThu 23:00 — 6 commitsFri 0:00 — 1 commitsFri 1:00 — 0 commitsFri 2:00 — 3 commitsFri 3:00 — 3 commitsFri 4:00 — 2 commitsFri 5:00 — 5 commitsFri 6:00 — 4 commitsFri 7:00 — 3 commitsFri 8:00 — 2 commitsFri 9:00 — 4 commitsFri 10:00 — 2 commitsFri 11:00 — 4 commitsFri 12:00 — 3 commitsFri 13:00 — 7 commitsFri 14:00 — 10 commitsFri 15:00 — 10 commitsFri 16:00 — 6 commitsFri 17:00 — 6 commitsFri 18:00 — 13 commitsFri 19:00 — 7 commitsFri 20:00 — 6 commitsFri 21:00 — 6 commitsFri 22:00 — 8 commitsFri 23:00 — 4 commitsSat 0:00 — 1 commitsSat 1:00 — 0 commitsSat 2:00 — 1 commitsSat 3:00 — 2 commitsSat 4:00 — 1 commitsSat 5:00 — 0 commitsSat 6:00 — 1 commitsSat 7:00 — 0 commitsSat 8:00 — 1 commitsSat 9:00 — 4 commitsSat 10:00 — 3 commitsSat 11:00 — 2 commitsSat 12:00 — 7 commitsSat 13:00 — 1 commitsSat 14:00 — 0 commitsSat 15:00 — 3 commitsSat 16:00 — 2 commitsSat 17:00 — 2 commitsSat 18:00 — 3 commitsSat 19:00 — 1 commitsSat 20:00 — 2 commitsSat 21:00 — 2 commitsSat 22:00 — 2 commitsSat 23:00 — 4 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Sep 22, 2026daily#10+360
Sep 21, 2026daily#10+360
Sep 15, 2026daily#14+26
Sep 14, 2026daily#14+26
Mar 28, 2026daily#24+107
Mar 27, 2026daily#17+90
Mar 26, 2026daily#14+95
Mar 25, 2026daily#11+148
Mar 24, 2026daily#10+240
Mar 23, 2026daily#4+405
Mar 22, 2026daily#2+801
Mar 21, 2026daily#5+478
Mar 20, 2026daily#10+230
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    456.7K stars · TypeScript

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    391.3K stars · TypeScript

  • anomalyco/opencode

    The open source coding agent.

    211.7K stars · TypeScript

  • n8n-io/n8n

    Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

    206.7K stars · TypeScript

  • microsoft/vscode

    Visual Studio Code

    193.5K stars · TypeScript

  • firecrawl/firecrawl

    Supercharge your AI agents with data from the web and beyond. Building the library for superintelligence. 🔥

    188.6K stars · TypeScript