🜛

Reach — Universal LLM Model Manager

OLLAMA · HUGGINGFACE · GITHUB — ONE UNIFIED API FOR ANY MODEL, ANY PLATFORM

Rust-native universal LLM model manager. Reach connects to three model platforms, handles acquiring and running models from each, and provides a unified interface so any downstream system sees one consistent API regardless of where the model lives or how it runs. Self-hosted. No cloud dependency. No Python wrapper.

3Platforms Unified
1Unified API
30dAuto-Cleanup
mmapZero-Copy Loading
RustNative Core

The Unified Router

The caller never needs to know which platform a model lives on — ask for a model by name or ID and Reach figures out the rest. Watch requests route to Ollama, HuggingFace, and GitHub, land in the registry, and stale models drain out through the cleanup scheduler.

⬡ REACH UNIFIED API · PLATFORM ROUTER

● RUNNING
Models Tracked
Requests Routed
Pulls Completed
Space Reclaimed
Dash Accelerated
cleanup always dry-runs first — deletion requires --force

Three Platforms, Three Different Things

Reach treats its three sources differently because they are fundamentally different things — a live runtime, a weight repository, and an architecture source.

LIVE EXECUTION TARGET

⬡ Ollama

Ollama is already running models locally. Reach calls Ollama's existing API to submit prompts and get responses. No downloading, no loading — the model is already live. If Ollama is not running, Reach reports it clearly rather than failing silently.

Reach → Ollama API
(localhost:11434)
→ running model → response
WEIGHT REPOSITORY

⬡ HuggingFace

Reach downloads GGUF or SafeTensors files from HuggingFace repos, stores them locally, then loads and runs them. Authenticates via HF token, validates file integrity via hash check after download, reports progress.

Reach → HF Hub API
→ download weights
→ local storage → load → run
ARCHITECTURE SOURCE

⬡ GitHub

GitHub hosts model architecture code and configs — not always runnable weights. Reach pulls repos, reads model configs, and where weights are referenced, retrieves them. The most complex source: it understands repo structure before running anything.

Reach → GitHub API
→ clone/pull → parse config
→ locate weights → load → run

Router · Registry · Cleanup

Caller → Reach Unified API → Platform Router → the three platforms → Model Registry → Cleanup Scheduler. Every stage is a real module in the Rust core.

⬡ PLATFORM ROUTER

Inspects the incoming request, determines which platform the model lives on, and routes accordingly. The caller just asks for a model by name or ID — dolphin-mixtral:8x7b or TheBloke/Mixtral-8x7B…GGUF — Reach figures out the rest.

⬡ MODEL REGISTRY

Persists to ~/.reach/registry.json. Tracks every model: name, platform source, local path, size, format (GGUF / SafeTensors), last-used timestamp, and usage count. Source of truth for cleanup and for "what do I have available right now."

⬡ CLEANUP SCHEDULER

Runs on a configurable interval. Stale = not accessed within threshold (default 30 days). Reports stale models and optionally deletes them — always dry-runs first. Deletion requires explicit confirmation or --force.

⬡ LOADER (mmap)

GGUF loads via mmap — the model streams from disk, never fully in RAM. SafeTensors supported. Coordinates with Dash when present for automatic acceleration.

⬡ EXECUTION MODULES

platforms::ollama · platforms::huggingface · platforms::github · manager::registry · manager::loader · cleanup::scanner · server — one module per responsibility, async Rust throughout.

⬡ SERVER MODE

reach serve --port 8766 exposes the full capability over local REST — OpenAI-compatible chat plus Reach-specific model-management endpoints. Non-Rust systems call it like any OpenAI endpoint.

$ reach list # all models, all platforms
$ reach pull hf:TheBloke/Mixtral-8x7B-Instruct-v0.1-GGUF
$ reach pull gh:username/model-repo
$ reach chat dolphin-mixtral:8x7b "explain quantum entanglement"
$ reach serve --port 8766 # unified API server
$ reach registry show
$ reach cleanup --dry-run # report only
$ reach cleanup --force --stale-days 30

One API, Every Shape

Library mode for Rust systems, binary mode for the terminal, server mode for everything else — OpenAI-compatible out of the box.

⬡ Server Mode — OpenAI-Compatible

POST /v1/chat/completions — chat with any modelGET  /v1/models — list available modelsGET  /reach/registry — full registry dumpPOST /reach/pull — pull from any platformDELETE /reach/model/:id — remove a modelPOST /reach/cleanup — trigger cleanup scanGET  /reach/platforms — Ollama up? HF? GitHub?

⬡ Library Mode — Rust

let reach = Reach::new().await?;// Reach figures out platform automaticallyreach.chat(ChatRequest{  model: "dolphin-mixtral:8x7b",  messages, ..Default::default()}).await?;// or explicit: platform: Some(Platform::HuggingFace) // mmap loading · hash validation · dash accel

⬡ DASH INTEGRATION — OPTIONAL ACCELERATION

If Dash is present and running, Reach routes model execution through Dash automatically — library mode via crate, or API mode via dashd on localhost:8765. If neither, Reach runs without acceleration and logs a warning. Reach works either way.

"Reach gets the models. Dash makes them fast. Everything else just calls them."

Not an inference engine — that is Dash

Not an accelerator — that is Dash

Not a cloud service — fully self-hosted

Not a Python wrapper — Rust-native