Skip to content

Offline-first tool server that fills a disk with open-source software, AI models, and reference content (Wikipedia, docs), then serves them over local wifi for humans and AI agents to discover and download — an oasis for networks without internet.

License

Notifications You must be signed in to change notification settings

mvalancy/val-ark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Val Ark

Created by Matthew Valancy

43 tools, AI models, and a web server -- online-optional. Local-first, peer-to-peer, offline-capable.

Val Ark Web UI

More Screenshots

Software Catalog

Software Page

Model Families

Model Cards

Tool Detail

Tool Detail

Wikipedia / Content Library

Wikipedia

Light Mode

Light Mode

Architecture

%%{init: {'theme': 'base', 'themeVariables': {
  'primaryColor': '#1a2230',
  'primaryBorderColor': '#2a3545',
  'primaryTextColor': '#e8edf4',
  'lineColor': '#4da6ff',
  'secondaryColor': '#131921',
  'tertiaryColor': '#0a0e14'
}}}%%
graph TB
    subgraph Entry["Entry Points"]
        style Entry fill:#1a2230,stroke:#4ade80
        START["start.sh<br/>Interactive Menu + CLI"]
        CRON["Cron Job<br/>Weekly Auto-Update"]
    end

    subgraph WebServer["Web Server (port 3000)"]
        style WebServer fill:#1a2230,stroke:#fb923c
        SERVER["server.js<br/>Node.js API + SSE"]
        KIWIX["kiwix-serve<br/>Port 8888"]
    end

    subgraph Scripts["Core Scripts"]
        style Scripts fill:#1a2230,stroke:#4da6ff
        UPDATE["update.sh<br/>Tools & Assets"]
        DOWNLOAD_T["download-tools.sh<br/>AI Engines"]
        DOWNLOAD_M["download-models.sh<br/>AI Models"]
    end

    subgraph Storage["Local Storage"]
        style Storage fill:#1a2230,stroke:#a78bfa
        TOOLS["tools/ — Binaries"]
        SOURCES["sources/ — Build from Source"]
        MODELS["models/ — AI Models"]
        CONTENT["content/zim/ — Offline ZIMs"]
    end

    START --> UPDATE
    START --> DOWNLOAD_T
    START --> DOWNLOAD_M
    START --> SERVER
    SERVER --> KIWIX
    CRON --> UPDATE
    UPDATE --> TOOLS
    UPDATE --> SOURCES
    DOWNLOAD_M --> MODELS
    KIWIX --> CONTENT
Loading

Download Priority

%%{init: {'theme': 'base', 'themeVariables': {
  'primaryColor': '#1a2230',
  'primaryBorderColor': '#2a3545',
  'primaryTextColor': '#e8edf4',
  'lineColor': '#4da6ff',
  'secondaryColor': '#131921',
  'tertiaryColor': '#0a0e14'
}}}%%
flowchart TD
    DISK{Disk Space OK?} -->|Yes| T1
    DISK -->|No| SKIP([Skip])
    T1["1. Dev CLI tools ~30MB"] --> T2["2. Infrastructure ~20MB"]
    T2 --> T3["3. Networking & Databases ~35MB"]
    T3 --> T4["4. Editors & Runtimes ~225MB"]
    T4 --> T5["5. AI Engines ~200MB"]
    T5 --> M1["6. Tier 1 Models ~15GB"]
    M1 --> M2["7. Tier 2 Models ~150GB"]
    M2 --> M3["8. Tier 3 Models ~300GB+"]
Loading

What's Included (43 Tools)

AI Inference

llama.cpp, whisper.cpp, stable-diffusion.cpp, BitNet.cpp, Ollama, ONNX Runtime, Vosk, Piper TTS

AI Platforms

n8n, Milvus, ComfyUI, Open WebUI

Creative

Blender, FreeCAD, KiCad, Godot, GIMP, Inkscape, Kdenlive, Calibre

Media

FFmpeg, VLC, Audacity, yt-dlp

Infrastructure

Syncthing, Coolify, Kiwix, Tailscale, Mosquitto, MQTT Explorer, Redis, PostgreSQL, InfluxDB, Telegraf, SQLite, btop, tmux

Dev Tools

Helix, VSCodium, Miniforge, python-build-standalone, Claude Code, Dev CLI Bundle (ripgrep, fd, bat, jq, fzf, lazygit)

Content Library

Offline ZIM files served via Kiwix: Wikipedia Simple English (3.1GB), Full Wikipedia (111GB)

AI Models (~500GB, downloaded by priority)

  • Tier 1 (Edge/Mobile): Small fast models for phones, tablets, IoT (~15GB)
  • Tier 2 (Workstation): Balanced quality/speed models (~150GB)
  • Tier 3 (Full): Largest, highest quality models (~300GB+)

Platforms

Platform Arch Notes
NVIDIA Jetson arm64 Orin/Xavier, CUDA builds
macOS arm64 Apple Silicon, Metal acceleration
Linux x86_64 Ubuntu/Debian, optional CUDA
Windows x64 Prebuilt binaries

Quick Start

./start.sh                        # Interactive menu
./start.sh serve                  # Launch web UI server (port 3000)
./start.sh setup                  # Install dependencies
./start.sh download tools         # Get tools (smallest first)
./start.sh download models tier1  # Edge/mobile models
./start.sh status                 # See what's installed
./start.sh cron install           # Weekly auto-update (Sundays 3 AM)

Offline & P2P

%%{init: {'theme': 'base', 'themeVariables': {
  'primaryColor': '#1a2230',
  'primaryBorderColor': '#2a3545',
  'primaryTextColor': '#e8edf4',
  'lineColor': '#4da6ff',
  'secondaryColor': '#131921',
  'tertiaryColor': '#0a0e14'
}}}%%
graph TB
    subgraph Internet["Internet (one-time)"]
        style Internet fill:#1a2230,stroke:#fb923c
        GH["GitHub"] & HF["HuggingFace"]
    end
    subgraph Server["Val Ark Server"]
        style Server fill:#1a2230,stroke:#4ade80
        SYNC["Syncthing"]
        STORE["Local Storage"]
    end
    subgraph Peers["LAN Peers"]
        style Peers fill:#1a2230,stroke:#a78bfa
        P1["Peer 1"] & P2["Peer 2"] & P3["Peer 3"]
    end
    Internet -->|"download once"| Server
    SYNC <-->|"P2P sync"| P1 & P2 & P3
Loading

Download once from the internet, then share across your LAN using Syncthing P2P. All tools and models work fully offline after initial download.

Web Server

./start.sh serve launches a Node.js API server on port 3000 serving the web UI with:

  • Live tool status and disk space info
  • SSE-based download progress streaming
  • Software catalog and model browser
  • Content Library tab for offline ZIM files

When valid ZIM files exist in content/zim/, the server automatically starts kiwix-serve on port 8888, providing offline Wikipedia browsing without internet access.

Project Structure

val-ark/
├── start.sh                  # Entry point: interactive menu + CLI
├── scripts/
│   ├── server.js             # Web UI API server (port 3000)
│   ├── update.sh             # Update tools, apps, assets, sources
│   ├── download-tools.sh     # Download AI inference engines
│   ├── download-models.sh    # Download AI models by tier
│   ├── setup.sh              # Install dependencies
│   ├── status.sh             # Show installed inventory
│   ├── monitor.sh            # Watch active downloads
│   ├── screenshots.sh        # Capture screenshots & recordings
│   ├── release.sh            # Create git release tags
│   ├── tools/                # Per-tool download scripts (43 tools)
│   └── ...
├── web-ui/                   # Web interface + assets
├── content/
│   └── zim/                  # Offline ZIM files (Wikipedia, etc.)
├── tests/
│   ├── run-all.sh            # Test runner
│   ├── screenshots/          # 256 Playwright tests
│   └── test-*.sh             # Validation scripts
├── docs/
│   ├── ARCHITECTURE.md       # Mermaid diagrams
│   ├── TOOLS.md              # Complete tools catalog
│   ├── PLATFORMS.md          # Platform-specific notes
│   ├── OFFLINE.md            # Offline and P2P guide
│   └── MODEL_INVENTORY.md   # Model details
├── tools/                    # Downloaded binaries (gitignored)
├── sources/                  # Cloned repos (gitignored)
└── assets/ollama/            # Ollama installers (gitignored)

Documentation

Testing (256 Playwright Tests)

./start.sh test               # Run via menu
./tests/run-all.sh            # Run directly
./start.sh screenshots        # Capture web + terminal screenshots
./start.sh screenshots web    # Web UI only
./start.sh screenshots terminal  # Terminal recordings only

Releases

Releases are created by pushing version tags:

./scripts/release.sh 1.0.0          # Create annotated tag
./scripts/release.sh 1.2.0 --push   # Create and push (triggers GitHub release)

The GitHub Actions workflow generates a changelog from commits and creates a release automatically.

License

GPL-3.0 - See LICENSE

About

Offline-first tool server that fills a disk with open-source software, AI models, and reference content (Wikipedia, docs), then serves them over local wifi for humans and AI agents to discover and download — an oasis for networks without internet.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •