Skip to content
CAI
Software that uses CAICheck a score

Crosstalk-Solutions/project-nomad

47.2

Weak · 28 September 2026

55.9k

lines of production code

TypeScript

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an administrative control panel for Project NOMAD, designed to manage a self-hosted offline information and AI infrastructure. It provides capabilities for installing and updating services like Ollama and Kiwix, managing offline content libraries, and running system benchmarks. Additionally, it features an integrated AI chat interface with knowledge base retrieval and an offline medical drug reference database.

How it got here

2025 — Admin platform expansion and feature integration

32 changes.

This period focused on a comprehensive overhaul of the admin interface, introducing major new capabilities such as an AI chat assistant, interactive mapping, offline medical drug references, and system benchmarking. The backend was significantly expanded to support automatic updates, robust background job processing, and detailed content management, while the frontend was modernized with a new dark mode, standardized UI components, and enhanced state management.

2026 — AI assistant and health data integration

17 changes.

This period focused on integrating a native AI chat interface with knowledge base capabilities and introducing a comprehensive offline FDA drug reference system. Development also established robust infrastructure for automated updates, self-hosting maintenance via sidecar updaters, and detailed system telemetry.

Features

Add offline FDA drug reference data for conditions, remedies, and interactions

The application now includes a comprehensive, offline-capable drug reference dataset covering medical conditions, home remedies, and natural remedies. This data is sourced from US government public-domain resources (FDA, CDC, NIH/NLM, NCCIH) and is generated from JSON collections into TypeScript modules (conditions.ts, home\_remedies.ts, natural\_remedies.ts) to serve as the single source of truth for curated health information within the admin interface.

admin/app/data · high confidence

Added documentation for the empty Calibre library seed

A new README file has been added to the install/calibre-empty-library directory, explaining the purpose and usage of the pre-seeded empty Calibre library database (metadata.db). This documentation clarifies that the file is used to prevent Calibre-Web from failing on fresh installations by providing a valid, albeit empty, database structure, and includes instructions for regenerating the file if needed.

install/calibre-empty-library · high confidence

Added response schemas for OpenAPI documentation

New VineJS validator schemas have been introduced in the admin application to support auto-generated OpenAPI documentation. These schemas define the structure for chat-related responses (including chat sessions and messages) and common API envelopes (health checks, error messages, and success notifications), enabling the Scalar UI to accurately document these API endpoints.

admin/app/validators/responses · high confidence

Added utility modules for FDA drug reference and ZIM file management

New pure, unit-testable helper modules have been added to the admin utilities to support the offline FDA drug reference and ZIM content features. The \drug\_labels.ts\ module maps raw openFDA label records to database rows, handling field clamping and name normalization. \drug\_interactions.ts\ parses FDA label sections into structured blocks for readable rendering. \conditions.ts\ provides helpers to parse curated condition data and match drug indications to health situations. \compare\_ids.ts\ validates and deduplicates drug IDs for side-by-side comparison. Additionally, \zim.ts\ adds type guards for ZIM file metadata, \files.ts\ provides recursive permission utilities, and \docs.ts\ includes a stream-to-string converter.

admin/util · high confidence

Admin UI for automatic core, app, and content updates

The Updates section in the admin interface now includes dedicated panels for configuring automatic updates across three categories. Administrators can enable and schedule automatic core updates (minor and patch versions) by setting a time window and cool-off period. A new Automatic App Updates panel allows toggling global auto-updates for installed apps, displaying which apps are opted in and their current status. Additionally, the Automatic Content Updates panel lets administrators schedule and cap data usage for automatic downloads of ZIM files and maps, while the existing Manual Content Updates interface remains for on-demand checks and installations.

admin/inertia/components/updates · high confidence

Admin UI gains hooks for auto-updates, live benchmarking, and content management

The admin interface now includes a suite of new React hooks to support opt-in automatic updates for the core app, installed ZIM content, and supply-depot apps, as well as live benchmark telemetry with GPU and disk metrics. It also adds hooks for managing creator packs, map markers with notes, download jobs, embedding jobs, and system settings, alongside a new dark mode theme toggle and internet status checks.

admin/inertia/hooks · high confidence

Automatic OpenAPI documentation generation and new admin routes

The admin interface now automatically generates an OpenAPI 3.1 specification from VineJS validators, exposing the API schema via the \/reference\ endpoint for interactive exploration. This change introduces a comprehensive set of new API routes and UI pages, including a new Easy Setup wizard, a dedicated Maps section with region and collection management, a Supply Depot for app installation, and a Chat interface. It also adds configuration for Redis connections, creator packs, and internet status testing, while reorganizing the kernel to include compression and static file middleware.

admin/start · high confidence

Database schema overhaul for services, benchmarks, and content management

The database schema has been significantly expanded to support new platform capabilities. The services table now includes fields for friendly names, descriptions, icons, display ordering, custom URLs, auto-update settings, and deprecation flags, enabling better organization and user customization of installed apps. A new benchmarking system is introduced with tables for storing detailed hardware scores, NOMAD scores, and platform metadata. Content management is enhanced through new tables for curated collections, installed resources, and ZIM file metadata, alongside a knowledge base ingest state tracker and ratio registry for estimating indexing costs. Additionally, a dedicated table for offline FDA drug labels supports the new medical reference feature, and legacy entries for Kolibri and Meshtastic have been handled via deprecation logic.

admin/database/migrations · high confidence

Enhanced download management and new content features

The admin interface now provides detailed tracking for active downloads, including real-time speed calculation, stall detection, and the ability to retry or dismiss failed jobs. A new component displays the status of AI model downloads with progress bars and cancellation controls, while another visualizes the processing queue for embedding jobs with health indicators and last-activity timestamps. Additionally, users can now configure custom launch URLs for applications via a dedicated modal, and new UI components support curated content categories, creator packs, and map region selection.

admin/inertia/components · high confidence

Expanded service catalog with auto-updates, dependencies, and custom URLs

The Service model now supports friendly names, descriptions, icons, and categories to improve the install catalog, alongside a dependency system allowing services to declare prerequisites. Users can now opt into automatic updates per service, with failure backoff and cool-off logic, and can set custom launch URLs to override default host/port links. Deprecated services are hidden from new installations but remain manageable, and the model tracks update availability and installation status.

admin/app/models · high confidence

Introduce disk-collector sidecar for host storage reporting

A new sidecar container is added to collect and report host disk layout and filesystem usage. It runs a script that gathers block device details via lsblk and filesystem statistics by reading the host's mount table (/proc/1/mounts), filtering out pseudo-filesystems and Docker bind-mounts to individual files. The collected data is written as JSON to /storage/nomad-disk-info.json, which is then read by the admin container. The script includes a fallback to use the /storage mount directly if the host mount table is unreadable, ensuring continuous availability of storage metrics.

install/sidecar-disk-collector · high confidence

Introduce native AI chat interface with streaming, reasoning, and knowledge base integration

The admin panel now includes a native AI chat interface, accessible via a floating action button or the sidebar, featuring real-time response streaming, collapsible reasoning blocks (thinking traces), and chat suggestions. The interface integrates with the Knowledge Base, allowing users to manage collections, view file ingestion status, and configure ingest policies (Always/Manual) through a dedicated modal. Custom system instructions can be set via a NOMAD.md editor, and the chat supports model selection with per-model thinking toggles and remote Ollama connectivity.

admin/inertia/components/chat · high confidence

Introduce offline FDA drug reference with tabbed search, interaction comparison, and safety disclaimers

The Drug Reference area now provides an offline, searchable database of U.S. FDA drug labels. Users can search by drug name (grouped by active ingredient), filter by symptoms/situations, and view detailed label sections (warnings, interactions, dosage) on a dedicated detail page. A new side-by-side comparison view allows selecting up to three drugs to contrast their labeled interaction warnings. To ensure safe usage, a mandatory disclaimer modal blocks access until acknowledged, and prominent warnings clarify that the tool is for information only and not a medical advice or pairwise interaction checker. The feature also includes an admin-facing status panel to monitor the download and indexing of the openFDA dataset.

admin/inertia/components/drug-reference, admin/inertia/pages/drug-reference · high confidence

Introduce opt-in automatic updates for the NOMAD core app and installed sibling apps

Users can now enable automatic updates for the NOMAD application itself and for installed apps (via Supply Depot). The new \AutoUpdateService\ and \AppAutoUpdateService\ implement a decision pipeline that respects a user-configurable time window (default 02:00–05:00), a 72-hour cool-off period after a new version is detected, and pre-flight checks (such as disk space). Updates are restricted to minor and patch releases to avoid breaking changes, and the system automatically disables itself for a specific app after three consecutive failures to prevent update loops. The core app update triggers the existing sidecar-based update mechanism, while app updates are handled in-process via the Docker service.

admin/app/services · high confidence

New Easy Setup Wizard with tiered content and AI policy options

The admin interface now includes a new Easy Setup Wizard (located at admin/inertia/pages/easy-setup) to guide users through initial configuration. The wizard presents core capabilities like the Information Library, Education Platform, and AI Assistant, allowing users to select specific services. It introduces a tiered content system where users can select curated categories and specify resource tiers, alongside a dedicated Wikipedia selector. For the AI Assistant, users can now configure a custom name and set an auto-indexing policy (Manual or Always) for the Knowledge Base. The flow also supports optional Creator Packs and includes a final review step before completion, which displays background installation and download activity.

admin/inertia/pages/easy-setup · high confidence

New React context providers for modals, notifications, and theming

The admin interface now includes dedicated React context providers to manage UI state more consistently. A new ModalProvider enables opening, closing, and clearing modals via context, while the NotificationProvider handles displaying toast-style alerts with auto-dismissal and global callback integration. Additionally, a ThemeProvider exposes light/dark mode state and toggling logic to the component tree, supporting the new 'Night Ops' dark mode experience.

admin/inertia/providers · high confidence

The Settings sidebar now includes dedicated pages for managing system configuration and content. The Advanced page allows operators to override the internet connectivity test URL. The Apps page provides controls to install, update, start, stop, and force-reinstall services. The Benchmark page enables running system and AI performance tests and submitting results. The Maps page manages global and regional map downloads. The Models page handles AI model installation and configuration, including remote Ollama support. The Creator Packs page manages offline video content. The Legal page displays license and privacy notices. The Support page offers donation and community links. The System page shows real-time resource usage and hardware details. The Updates page manages core, app, and content auto-updates.

admin/inertia/pages/settings · high confidence

New ZIM content management interface with upload, scanning, and remote browsing

Admins now have a dedicated Content Manager page to manage ZIM files, featuring a sortable table of local files, an uploader for files up to 20 GB, and a 'Rescan Library' button to detect sideloaded files. The interface also includes a remote explorer for browsing curated collections and custom library sources, with logic to automatically refresh the local file list after downloads complete to prevent ghost entries.

admin/inertia/pages/settings/zim · high confidence

New ZIM file uploader in the content manager

A new ZimUploader component has been added to the admin interface, enabling users to upload ZIM files (up to 20 GB) via a Uppy-based dashboard. The uploader enforces specific business rules: it prevents duplicate filenames and restricts uploads to a single Wikipedia file at a time. It also includes stability improvements to prevent upload cancellation during tab refocus or re-renders by managing callback references and Uppy instance lifecycle.

admin/inertia/components/ZimUploader · high confidence

New admin commands for auto-update dry-runs, content updates, and system benchmarks

This change introduces several new administrative commands to the system. It adds dry-run capabilities for the core application, installed apps, and content auto-update features, allowing administrators to verify eligibility and decision logic without triggering actual updates or downloads. It also adds commands to run, view, and submit system and AI benchmarks (including the NOMAD Score) to a community repository. Additionally, a new queue worker command is introduced to process jobs from multiple queues, including new handlers for drug data downloads and ingestion.

admin/commands · high confidence

New admin controllers for benchmarking, chat, maps, and content management

This change introduces a suite of new HTTP controllers in the admin application to support newly added features. The BenchmarkController enables users to run system and AI benchmarks and submit results to a central repository. The ChatsController manages chat sessions and integrates with the AI Assistant service. The MapsController handles map asset downloads, region extraction, and marker management. The DrugReferenceController and ConditionsController provide a unified interface for browsing and searching drug information and medical conditions. Additionally, controllers for CreatorPacks, Downloads, CollectionUpdates, and RAG (Retrieval-Augmented Generation) are added to manage offline content packs, file downloads, content updates, and knowledge base embeddings. The EasySetupController facilitates initial configuration, while the OpenApiController serves a self-hosted Scalar API reference. These controllers collectively provide the backend endpoints for the new admin UI features.

admin/app/controllers · high confidence

New background jobs for automated updates, content downloads, and system benchmarking

This change introduces a suite of new scheduled and ad-hoc background jobs to the system. Users can now opt-in to automatic updates for the core NOMAD application, installed third-party apps, and offline content (ZIM and map files), with the system checking for and applying updates on a configurable schedule. A new job handles the download and ingestion of the offline FDA drug reference dataset, while another job allows users to run system benchmarks to generate a NOMAD score. Additionally, the job infrastructure now supports robust, cancellable downloads for models and content, with improved progress tracking and error handling.

admin/app/jobs · high confidence

New file uploader component with configurable limits

The admin interface now includes a new FileUploader component that allows users to drag-and-drop or click to upload files. This component supports configuring the minimum and maximum number of files (defaulting to 1), maximum file size (defaulting to 100MB), and allowed file types. It provides a clear method to reset the upload state and integrates with the Uppy library for the upload dashboard.

admin/inertia/components/file-uploader · high confidence

New installation helper scripts and disk-collector migration tool

The install directory now includes dedicated helper scripts to start, stop, and uninstall Project NOMAD containers, along with a migration script that moves the disk-info collection from a fragile host-based process to a dedicated Docker sidecar. The migration script updates the compose configuration to add the sidecar and remove the old bind mount, ensuring stable disk usage reporting in the Command Center. Additionally, the entrypoint script now waits for Redis before booting the application to prevent startup race conditions, and the installation script enforces required dependencies like curl and gpg while warning on unsupported architectures.

install · high confidence

New interactive map interface with markers, coordinates, and scale controls

The admin maps view now features a fully interactive map component that displays real-time coordinates on mouse hover, allows users to place and manage named location markers with custom colors and notes, and includes a scale bar with a toggle for imperial or metric units. The map view state (position and zoom) is persisted across page refreshes, and a dedicated panel lets users fly to, select, or delete saved pins.

admin/inertia/components/maps · high confidence

New live benchmark run view with real-time telemetry and end-of-run score reveal

The benchmark interface now features a dedicated live run view that displays real-time telemetry for CPU, memory, disk, and AI inference stages, including per-core load visualization, GPU utilization overlays, and sparkline charts. Upon completion, users see a detailed score reveal with animated gauges and a composite NOMAD Score, with specific handling to distinguish partial runs from the full authoritative score.

admin/inertia/components/benchmark · high confidence

New offline medical reference, AI chat, and maps pages; redesigned dashboard and settings

This update introduces several new standalone pages and significantly restructures the user interface. A new Chat page provides an AI assistant interface with configurable suggestions and a custom name. The Drug Reference feature now includes a dedicated 'When to use what' condition detail page that displays FDA-matched over-the-counter drugs and natural remedies with safety disclaimers. A full-page Maps interface has been added, featuring coordinate display toggles and explicit warnings when map assets or basemaps are missing. The main Dashboard has been redesigned to use a dynamic, ordered grid of tiles for installed services, highlighting new capabilities like Maps and Drug Reference, and adding an Easy Setup entry point. Additionally, the legacy Settings page has been removed in favor of a new system settings structure, and the Supply Depot page has been expanded to support app management, auto-updates, and custom launch URLs.

admin/inertia/pages · high confidence

New sidecar updater for self-updating Project NOMAD

A new sidecar updater component has been added to the installation, consisting of a Dockerfile and an update-watcher script. This sidecar monitors for update requests and performs self-updates by modifying the compose.yml file with the target image tag, pulling new images, and recreating core services (admin, mysql, redis, dozzle) individually. To prevent disk space exhaustion on long-running installs, the updater also prunes superseded Docker images and dangling layers specific to Project NOMAD after a successful update, ensuring that unrelated images on the host are not affected.

install/sidecar-updater · high confidence

New standardized form input components for the admin interface

The admin interface now includes three new reusable UI components—Input, Select, and Switch—located in the admin/inertia/components/inputs directory. These components provide a consistent, styled foundation for form fields, featuring support for labels, help text, error states, required indicators, and accessibility attributes. The Input component handles standard text entry with optional left icons, the Select component offers a customizable dropdown using Headless UI, and the Switch component provides a toggle control with label and description support. These components standardize the look and feel of forms across the admin panel.

admin/inertia/components/inputs · high confidence

New type definitions for benchmarking, content collections, and system updates

The admin interface now includes a comprehensive set of TypeScript type definitions to support new and expanded features. This adds structured types for the system benchmarking tool (including live telemetry, hardware detection, and scoring), the curated content system (defining tiers, categories, and gated creator packs), and the offline drug reference (condition and remedy data). It also introduces types for the new auto-update mechanisms (covering core, app, and content updates), the knowledge base ingest state machine, and the RAG embedding pipeline, alongside definitions for the new chat interface and system information display.

admin/types · high confidence

Supply Depot port audit script and drug-reference data generation tool

Two new admin scripts are introduced to improve data integrity and operational visibility. The \audit\_catalog\_ports.py\ script probes curated services in the Supply Depot catalog to detect mismatches between the published host port and the actual internal listening port, helping identify misconfigurations like the Meshtastic Web port issue. The \generate\_curated\_data.ts\ script automates the creation of TypeScript data modules from JSON sources in the \collections/\ directory, ensuring that drug-reference data (conditions, natural remedies, home remedies) remains synchronized and eliminating manual sync efforts.

admin/scripts · high confidence

Security

Input validation and security hardening for admin API endpoints

This change introduces comprehensive request validation for the admin API using VineJS, covering new capabilities such as AI chat sessions, RAG file management, system benchmarks, and custom app installation, while also adding strict security guards. Specifically, it enforces SSRF protections by blocking loopback, link-local, and cloud metadata addresses (with allowances for LAN mirrors), validates custom launch URLs to prevent dangerous schemes, and ensures safe handling of Docker service configurations and content update parameters.

admin/app/validators · high confidence

Behavioural changes

Added medical safety disclaimers and updated admin configuration

This change introduces two new Inertia components, RemedySafetyNote and SafetyBanner, to display prominent medical disclaimers on condition and drug reference pages, clarifying that the content is informational and not a substitute for professional medical advice. Additionally, the admin environment configuration has been expanded to support Redis (including logical database indexing), NOMAD storage paths, and Creator Packs, while the Dockerfile and README for the admin service have been removed, indicating a shift in deployment or infrastructure management.

admin · high confidence

Admin UI infrastructure overhaul: new context providers, API client, and utility libraries

The admin interface now uses a new React context system for managing modals and global notifications, replacing the previous WebSocket-based \transmit\ client with a dedicated Axios-based API client (\api.ts\) that handles service controls, content updates, and map/ZIM downloads. This change introduces a suite of frontend utility libraries for benchmark score display, knowledge-base file grouping and guardrails, job health visualization, and icon tree-shaking, while also adding robust URL normalization for service links to prevent XSS and support custom reverse-proxy configurations.

admin/inertia/lib · high confidence

Admin interface introduces 'Night Ops' dark mode with warm charcoal theme

The admin interface now supports a dark mode, activated via the \[data-theme="dark"\] attribute, which replaces the previous light desert palette with a warm charcoal background and adjusted text/accent colors for readability. This change includes a comprehensive set of CSS custom properties for semantic surfaces, text, and borders, as well as specific styling overrides for MapLibre map popups to ensure they remain legible in dark mode. The transition between themes is animated with a smooth 0.2s ease effect on background and color changes.

admin/inertia/css · high confidence

Centralized configuration constants for admin settings and features

The admin interface now uses a dedicated constants directory to manage configuration for multiple subsystems. This includes definitions for service names (e.g., Kiwix, Ollama, Supply Depot apps), broadcast channels for progress telemetry, and specific settings keys for the new auto-update, AI assistant, and knowledge base features. It also introduces curated starter tags for the Knowledge Base collection picker, fallback model recommendations for Ollama, and configuration for regional map extraction via pmtiles.

admin/constants · high confidence

Improved reliability and observability for background jobs and logging

The application now shares a single, lazy-connected ioredis instance across all BullMQ queues and workers to prevent connection exhaustion during high-load ZIM ingestion, while also configuring the database connection pool with explicit limits and timeouts to fail fast instead of hanging. Production logging has been updated to write JSON output to both the local log file and stdout, ensuring visibility in Docker environments, and the body parser limit has been increased to 110MB to support larger file uploads. Additionally, the AI assistant name is now cached in memory for 60 seconds to reduce database load, and the transmit configuration now uses Redis for real-time communication.

admin/config · high confidence

Introduces global state management and environment-aware dev tools

The application root now wraps all pages with React Query, theme, notifications, modals, and WebSocket providers, enabling consistent state handling across the admin interface. Additionally, React Query Devtools are automatically visible only in development and staging environments, while the application name defaults to 'Project NOMAD' and a polyfill is added for environments lacking native crypto.randomUUID support.

admin/inertia/app · high confidence

Major overhaul of service definitions with new apps and pinned versions

The service seeder has been completely rewritten to define a comprehensive catalog of pre-configured applications, replacing the previous minimal list. This change introduces several new services including Qdrant Vector Database, Ollama AI Assistant, CyberChef Data Tools, FlatNotes, and a new Kolibri Gen 2 (v0.19.4) replacing the legacy version. All container images are now pinned to specific versions (e.g., Kiwix 3.8.1, Ollama 0.24.0, CyberChef 10.24.0) to ensure stability. The configuration also adds user-facing metadata such as friendly names, descriptions, icons, and categories, while enforcing absolute storage paths via the NOMAD\_STORAGE\_PATH environment variable and disabling anonymous telemetry for Qdrant by default.

admin/database/seeders · high confidence

New documentation and settings layouts with enhanced app header and AI chat integration

The application introduces dedicated layout components for Documentation (DocsLayout) and Settings (SettingsLayout), providing structured sidebars for navigating docs and a comprehensive settings menu that includes conditional entries for the AI Assistant, Creator Packs, and new sections like Supply Depot, Benchmark, and Legal Notices. The main AppLayout has been significantly updated to support a 'compact' mode for focused tools, switch the logo to WebP format, and conditionally render a 'Back to Home' link. Additionally, the AI Assistant chat interface (ChatButton and ChatModal) is now integrated into the AppLayout, appearing only when the Ollama service is installed.

admin/inertia/layouts · high confidence

Overhaul of admin utility modules for content, downloads, and system management

The admin utility layer has been significantly expanded and restructured to support new content management, download reliability, and system integration features. Download handling now includes resumable transfers with progress tracking, automatic retry backoff for failures, and specific fixes for Wikimedia mirror 403 errors and partial file corruption. Content management introduces gated access for curated resources, automatic update logic with disk space preflight checks, and cleanup of superseded files. The Knowledge Base (KB) system gains granular control with ingest policy toggles (Always/Manual), conditional status warnings for stalled or empty embeddings, and disk-cost estimation for embeddings. System utilities now include AMD GPU HSA overrides for better Ollama compatibility, platform metadata normalization for benchmarks, and robust ZIM file validation and filename handling.

admin/app/utils · high confidence

Redesigned system information page with new UI components

The system information page in the admin interface has been redesigned to improve visual clarity and data presentation. This change introduces three new reusable components: CircularGauge, which displays percentage-based metrics (such as CPU, memory, or disk usage) with animated progress rings and color-coded severity levels; InfoCard, which presents structured key-value data in a styled card format with optional icons and variant styling; and StatusCard, which provides a simple, high-contrast display for single-value status indicators. These components replace the previous layout, offering a more modern and consistent look for system monitoring data.

admin/inertia/components/systeminfo · high confidence

Skip gzip compression for Server-Sent Events and add maps static middleware

The compression middleware now explicitly excludes Server-Sent Events (text/event-stream) from gzip compression to prevent streaming data from being buffered and collapsed into a single block, ensuring real-time updates are delivered correctly. Additionally, a new MapsStaticMiddleware has been introduced to handle static asset serving for maps, delegating to the AdonisJS static middleware with configurable paths.

admin/app/middleware · high confidence

Updated administrative country boundary data

The \admin/resources/geodata/ne\_50m\_admin\_0\_countries.geojson\ file has been updated with new geographic boundary data for sovereign countries, including Zimbabwe, Zambia, Yemen, Vietnam, and Venezuela. This change refreshes the underlying map geometry used in the admin interface, ensuring that regional map displays and downloads reflect the latest country shape definitions.

admin/resources · high confidence

Fixes

Admin startup providers for self-healing and configuration fixes

New startup providers in the admin application now automatically remediate common post-update issues and enforce correct container configurations. On boot, the system checks for and fixes stale 'update available' banners, migrates Kiwix to library mode (rebuilding the library XML if missing), and ensures the Qdrant container has the correct 'unless-stopped' restart policy. Additionally, it detects broken NVIDIA GPU passthrough in the Ollama container and automatically reinstalls it to restore GPU inference, while also configuring static file serving for map assets.

admin/providers · high confidence

Test coverage

Added functional tests for OpenAPI documentation generation; Added standalone gate tests for drug-reference utilities; Added unit tests for AMD GPU override, auto-update eligibility, and security validators.

Dependencies

Admin panel dependency overhaul and license standardization

The admin application has undergone a significant dependency update, upgrading core frameworks like AdonisJS (to 6.19.3), React (to 19.2.7), and Tailwind CSS (to 4.2.2), while introducing new libraries for background job processing (BullMQ, ioredis), AI integration (Ollama, OpenAI), document handling (mammoth, pdf-parse), and mapping (MapLibre GL, Protomaps). The project license has been standardized to Apache-2.0 across both the root and admin packages, and new npm scripts have been added to manage specific background queues for downloads, model downloads, and benchmarks.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 33 → 47 (+14.4)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.16) — scores are not directly comparable.

Lenses

  • Code Health 56 → 60 (+4.1)
  • Architecture 69 → 58 (-11.1)
  • Maturity 60 → 64 (+3.7)
  • Readiness 17 → 43 (+26.2)
  • Security 35 → 43 (+8.0)
  • Accessibility 52 (new)
  • Performance 100 (new)

Resolved (78)

  • Change coupling: KnowledgeBaseModal.tsx ↔ routes.ts (admin/inertia/components/chat/KnowledgeBaseModal.tsx)
  • Change coupling: api.ts ↔ routes.ts (admin/inertia/lib/api.ts)
  • Change coupling: benchmark_service.ts ↔ benchmark.tsx (admin/app/services/benchmark_service.ts)
  • Change coupling: index.tsx ↔ remote-explorer.tsx (admin/inertia/pages/settings/zim/index.tsx)
  • Change coupling: rag_controller.ts ↔ api.ts (admin/app/controllers/rag_controller.ts)
  • Change coupling: system_controller.ts ↔ api.ts (admin/app/controllers/system_controller.ts)
  • Change coupling: zim_controller.ts ↔ api.ts (admin/app/controllers/zim_controller.ts)
  • Critical CVE: [GHSA redacted] (admin/package-lock.json)
  • Critical IaC: DS-0031 (Dockerfile)
  • Critical IaC: DS-0031 (Dockerfile)
  • Dimension evaluation failed
  • High CVE: [GHSA redacted] (admin/package-lock.json)
  • High CVE: [GHSA redacted] (admin/package-lock.json)
  • High CVE: [GHSA redacted] (admin/package-lock.json)
  • High CVE: [GHSA redacted] (admin/package-lock.json)
  • High CVE: [GHSA redacted] (admin/package-lock.json)
  • High CVE: [GHSA redacted] (admin/package-lock.json)
  • High CVE: [GHSA redacted] (admin/package-lock.json)
  • High CVE: [GHSA redacted] (admin/package-lock.json)
  • High CVE: [GHSA redacted] (admin/package-lock.json)
  • …and 58 more

New (429)

  • API.streamChatMessage (cognitive 17) (admin/inertia/lib/api.ts)
  • ActiveDownloads.ActiveDownloads (cognitive 52) (admin/inertia/components/ActiveDownloads.tsx)
  • ActiveDownloads.ActiveDownloads (cyclomatic 38) (admin/inertia/components/ActiveDownloads.tsx)
  • ActiveModelDownloads.ActiveModelDownloads (cognitive 33) (admin/inertia/components/ActiveModelDownloads.tsx)
  • ActiveModelDownloads.ActiveModelDownloads (cyclomatic 25) (admin/inertia/components/ActiveModelDownloads.tsx)
  • Alert.Alert (cognitive 75) (admin/inertia/components/Alert.tsx)
  • Alert.Alert (cyclomatic 52) (admin/inertia/components/Alert.tsx)
  • AppUrlModal.AppUrlModal (cyclomatic 16) (admin/inertia/components/AppUrlModal.tsx)
  • AutoUpdateDryRun.run (cognitive 23) (admin/commands/auto_update/dry_run.ts)
  • AutoUpdateDryRun.run (cyclomatic 18) (admin/commands/auto_update/dry_run.ts)
  • Banned license: @openzim/libzim
  • BenchmarkService._buildV2Submission (cognitive 18) (admin/app/services/benchmark_service.ts)
  • BenchmarkService._buildV2Submission (cyclomatic 20) (admin/app/services/benchmark_service.ts)
  • BenchmarkService._runBenchmark (cognitive 26) (admin/app/services/benchmark_service.ts)
  • BenchmarkService._runBenchmark (cyclomatic 23) (admin/app/services/benchmark_service.ts)
  • BenchmarkService.getHardwareInfo (cognitive 55) (admin/app/services/benchmark_service.ts)
  • BenchmarkService.getHardwareInfo (cyclomatic 43) (admin/app/services/benchmark_service.ts)
  • CategoryCard.CategoryCard (cognitive 22) (admin/inertia/components/CategoryCard.tsx)
  • CategoryCard.CategoryCard (cyclomatic 21) (admin/inertia/components/CategoryCard.tsx)
  • Change coupling: index.tsx ↔ downloads.ts (admin/inertia/pages/easy-setup/index.tsx)
  • …and 409 more

Changes since last survey

  • 5 commits — 3 feature/other, 2 fixes

By area

  • admin/app — 2 commits
  • (repo) — 1 commit
  • (root) — 1 commit
  • .github/workflows — 1 commit

Notable commits

  • fix: fix(zim): extract Kiwix catalog URL into system-wide constant
  • fix: fix(zim): use the OPDS catalog host, not Kiwix's gated browse host
  • change: chore(collections): surface FDA Drug Reference in Medicine > Standard (#1167)
  • change: chore(release): 1.34.1 [skip ci]
  • change: ci: add Build Translate Proxy Image workflow

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

Crosstalk-Solutions/project-nomad was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 85da928019c428faf43cf96785f16f7da9efb0df — the exact code this score is about.
  • Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.