Hologram Model Hub

foundation.uor.hub由 hub.uor.foundation 發布官方發布者v1.0.0更新於 Oct 24, 2026

Find open models and get download links with the SHA-256 each file must have.

發布方自己的服務:model.tools — Zero-Auth Agent Utilities

已驗證Streamable HTTP可網頁執行檔案與儲存AI 與機器學習

概覽

AI 產生的概覽

一個遠端 MCP 伺服器,讓助理搜尋開放模型索引,並取得附有 SHA-256 校驗值的下載連結。

可以做什麼
依任務、函式庫、授權、參數量或下載量搜尋中心的開放模型索引,每個檔案都以 SHA-256 定址並列出存放位置。查看單一模型的固定版本、檔案大小與校驗值、GGUF 量化版本,以及各來源目前的健康狀態。解析單一檔案目前的下载位置、應符合的校驗值、驗證方式,以及交給 hf、Ollama 或 llama.cpp 的指令。
適用情境
適合助理需要尋找開放模型、比較候選模型,或為使用者提供經過校驗的權重或 GGUF 量化檔下載途徑,而不是一個單純連結時使用。
執行需求
遠端 streamable HTTP 端點;未宣告任何套件、帳號、API 金鑰或環境變數。助理需要能存取該中心的網路。
安裝前請注意
伺服器只回傳下載位置和校驗值,不代管權重位元組;檔案來自 Hugging Face、ModelScope 或 IPFS 等第三方來源,使用前請以回傳的 SHA-256 驗證。README 指出 Hugging Face 權杖會送到所設定的端點,因此不要向未經驗證的端點傳送憑證。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Hologram Model Hub,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/foundation.uor.hub%2Fmodel-hub/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "hologram-model-hub": {
      "type": "http",
      "url": "https://hub.uor.foundation/mcp"
    }
  }
}

README

Model Hub

The catalog of trending open models with the content address of every file, published at hologram-technologies.github.io/hologram-live/model-hub/.

Every model page lists its files by address and offers Verify: the browser fetches small files from Hugging Face and ModelScope and hashes them against the address index. No server of ours is involved. Pulling models onto a hologram-live node comes with the Model Hub .holo application (issue #76, ADR 023 in #75).

Use it with your tools: HF_ENDPOINT

bash
export HF_ENDPOINT=https://gethologram.aihf download sentence-transformers/all-MiniLM-L6-v2

Everything that downloads from Hugging Face honours that variable (hf, huggingface_hub, transformers, diffusers, sentence-transformers, llama.cpp -hf), so the hub needs no client of its own. deploy/hub-resolve.mjs answers in Hugging Face's dialect from the address index and sends every file request, as a redirect, to a source that passed the last health probe: Hugging Face first (its CDN is the fastest), then ModelScope, then IPFS. No weight byte passes through the hub. main is the indexed revision, so a build gets the same bytes tomorrow. /via/ipfs, /via/modelscope or /via/huggingface in front of the path pins the first choice of source (HF_ENDPOINT=https://gethologram.ai/via/ipfs). …/resolve/main/SHA256SUMS is generated for every model, so a download is checked with plain sha256sum -c; the clients themselves verify nothing.

The dialect was recorded from the clients, not guessed (web/qa/hf-dialect/recorder.mjs): model info, the tree listing, HEAD and GET on resolve, and the Xet read-token route, which is a redirect to Hugging Face because huggingface_hub 1.32 follows our redirect on HEAD, meets Hugging Face's Xet headers there and asks this endpoint for the token. A user's Hugging Face token reaches whatever HF_ENDPOINT names: the front Caddy removes Authorization and Cookie before the service sees a request, and gated models are refused, never proxied. A model outside the index answers 404 with a sentence and is recorded in state/resolve/requested.txt.

Measured 2026-09-18 with web/qa/hf-dialect/matrix.sh in python:3.12-slim against the public URL, on huggingface_hub 1.32.0 and 0.36.2: hf download and snapshot_download of a whole model (30 of 30 files matching SHA256SUMS), cache reuse, transformers AutoConfig and AutoTokenizer, a plain GET and a Range request, and the clients' own typed errors for an unknown model and revision. Failover, measured the same day with huggingface.co, hf.co and Hugging Face's CDN hosts blackholed in the client container and Hugging Face marked down on the hub: hf download and snapshot_download of the whole model, 30 of 30 files matching, transformers loading, in 110 s from ModelScope and IPFS; and with ModelScope down as well, the same from IPFS alone in 126 s (135 reroutes logged). The first attempt had failed at .gitattributes: the IPFS archives had been packed without dotfiles (ipfs-car skips hidden paths). pin-model.sh now packs them and all eleven models were pinned again. Test whole repositories, not single files.

Ollama, and the design behind both

bash
ollama pull gethologram.ai/bartowski/MiniCPM5-2B-GGUF:Q4_K_M

The same service speaks Ollama's registry dialect for every GGUF repository in the index: the manifest's model layer is the GGUF file's SHA-256 from the index, the blob request is a 307 to a live source, and Ollama verifies the digest itself. The chat template and parameters come from Hugging Face's own manifest, accepted only when it names the very bytes our index names, and kept so the pull still works when Hugging Face is away (measured: Ollama 0.34.2 pulled, verified and ran a model; with Hugging Face blackholed the same pull completed from ModelScope). OCI clients get the same models as CNCF ModelPack artifacts from the same routes (oras pull gethologram.ai/hexgrad/kokoro-82m:latest, lowercase as OCI requires; measured: 72 files, every one matching), and agents get three tools over MCP at https://gethologram.ai/mcp. GET /api/models?search=… lists and searches in Hugging Face's shape (HfApi.list_models works), which is also the cheap path for agents. Why these dialects, what the research found, the path map and what comes next: docs/one-endpoint.md.

Download

Download saves a whole model as one .zip, any size, in any current browser. A small service worker (web/src/zip-sw.js, which answers only zip/… and never a page) assembles the archive while it streams, so the browser's own download manager saves it with a real progress bar and nothing is held in memory: the zip is uncompressed, so its exact size is declared before the first byte. Every file is hashed as it passes and compared with its address from the index; a wrong byte fails the download and nothing is kept. Each file comes from the first source that answers (Hugging Face, ModelScope, IPFS), a dropped connection resumes from the byte it reached, from the same source or the next, and the menu beside the button restricts the zip to one source. Inside every zip: SHA256SUMS (sha256sum -c SHA256SUMS checks it offline, forever) and HOLOGRAM.json (model, revision, index manifest, which source delivered each file). zip/<org>/<name>/auto.zip is the link; data/files/<org>/<name>.json is the file list it reads. Without a service worker the page falls back to the file picker stream (Chrome, Edge) or an in-memory zip up to 1.5 GB.

Measured 2026-09-18 (web/qa/zip-proof, Docker on the hub host): a generated 5.9 GB zip saved with the declared size exactly, valid, in Chromium 131 (140 s, browser memory 377 to 471 MB), WebKit 18.2 (38 s, 383 to 419 MB) and stock Firefox 156 (169 s at 60 MB/s, container under 1 GB). A connection cut mid-file resumed and verified; a planted wrong address failed the download in all three with nothing left on disk. Playwright's own Firefox build cannot judge downloads: an ordinary 6 GB server download exhausts its memory too. node qa/zip-size.test.mjs holds the declared size and the written bytes together (empty file, UTF-8 names, 65,536 entries, a file above 4 GiB).

The Archive

The header pill Index <day> opens every day the catalog was captured, the way the Wayback Machine opens a page's past. Choosing a day switches browse, filters, search and every model page to that day's index; the pill turns amber, a banner names the day, and Back to latest returns. ?at=YYYY-MM-DD on any page opens the nearest captured day on or before that date, so a link to a day is a link to exactly what it showed.

Each day is captured once by deploy/archive.sh after the daily registry push: the day's files are packed into a CAR (IPFS archive) whose root CID is computed locally, pinned through Filebase, and accepted only if the CID Filebase reports is the same. The day is appended to the ledger archive.json (hologram.model-hub.archive/v1), served at gethologram.ai/archive.json and pinned itself:

FieldMeaning
gateway, mirror, registryWhere a day is read: <gateway><cid>/<path> on IPFS and hologram pull <registry>:<date> on the hub registry for every day; <mirror><date>/<path> on the hub for the current day only. The mirror only makes reads fast; it is never trusted
days[].date, cidThe day and the root CID of its directory (index.json, models.json, one JSON per model)
days[].indexBLAKE3 of that day's index.json, which names every other file by address
days[].prev, prev_ledgerThe previous day's CID and the previous ledger's CID: a hash chain, so history cannot be rewritten silently
days[].models, addressed, files, bytes, source, archivedWhat the day held and when it was captured

The browser trusts none of the sources: it reads index.json, hashes it against the ledger's index, then hashes every file against the address the index records, before anything is shown. Bytes that fail are refused and the next source is tried (measured: a corrupted mirror file was rejected and the gateway's copy used). Verified bytes are kept in the Cache API under their content address, so a revisited day is instant and works offline. Verify and downloads stay with the latest index because they check live mirrors. at/<date>.json stubs give agents the CID, index address and read locations for a day. The hub's mirror holds today only; the registry keeps every day's tag (its store also holds the hub's published objects, so it is never rebuilt); a past day is read in the browser from IPFS, and its first visit can take a minute while the gateway fetches it (measured 25 to 55 s per file cold). What is immutable: the captures and the chain. What is one operator: the daily writer (a VPS cron) and the single pinning provider.

Build

bash
just model-hub-site   # catalog snapshot (if missing), token lint, static build → apps/model-hub/web/distjust model-hub-data   # refresh the catalog snapshot

BASE=/path/ builds for a site served under a path. GitHub Pages publishes it beside the documentation from .github/workflows/release-docs.yml: on pushes to apps/model-hub, daily with a fresh snapshot, and on manual runs. The documentation itself is always built from its latest docs-v* tag.

The catalog comes from Hugging Face's trending list joined with the model address index at humuhumu33.github.io/hologram-api (HOLOGRAM_API overrides it; HF_TOKEN avoids rate limits).

Brand kit

Every color, size, space, radius and font comes from Hologram-Technologies/hologram-brand-kit, vendored by web/scripts/vendor-kit.mjs at develop bce3bdf59 (the revision Desktop uses). Three gap tokens (--success, --success-foreground, --muted-foreground-subtle) come from the kit's open PR #1. web/scripts/lint-tokens.mjs fails on any literal color, size, radius, font or inline style in the product code.

The header

One top-level menu — Models, Registry, Docs — on every page of the site, with the section you are in marked aria-current and drawn in the accent. It is built once, by topNav() in web/build.mjs, and rendered by header(), which every generated page uses. The Registry page ships as its own finished file from web/public/registry/, so the build puts the same header() output into it at two marks in that file (<!--chrome:head-->, <!--chrome:header-->) rather than letting a second copy exist. The shared parts of the page — the brand aliases, the resets, the shell, the controls, the header, the theme switch, the sign-in — live in web/src/chrome.css and web/src/chrome.js; web/src/styles.css is the pages that hang off them.

npm run menu walks every page shape at two themes and twelve widths and fails if any of them carries a different menu, marks the wrong section, or draws the mark below AA.

Layout

PathWhat
web/build.mjsStatic generator: landing, browse page, one page per model, one page per Registry artifact, and the shared header
web/src/Rendering, client code, styles, generated brand tokens; chrome.css + chrome.js are the shared header
web/scripts/data.mjs (catalog snapshot), registry.mjs (every Registry row's profile and logo from its source API), vendor-kit.mjs, lint-tokens.mjs
web/vendor/hologram-brand-kit/Vendored kit CSS, tokens, fonts and logos
web/public/wallpapers/Immersive theme wallpapers
web/qa/Layout, contrast and animation audits used during design review; menu.mjs gates the top-level menu

來源:apps/model-hub/README.md,提交 e9247c9

工具

3

search_models

Search models

Find open models in the hub's index. Every result has all of its files addressed by SHA-256. Returns id, task, library, licence, parameters, weight size, downloads and where the bytes live.

輸入參數sorttasklimitqueryformatlicensemax_weights_gb

get_model

Get a model

The pinned revision of one model, its files with size and SHA-256, its GGUF quantisations if any, and its sources with their current health.

輸入參數id必填

resolve_file

Resolve a file

Where to download one file of a model right now, the SHA-256 it must have, how to check it, and the commands that hand it to an engine (hf, Ollama, llama.cpp). Give either a path or, for GGUF models, a quantisation such as Q4_K_M.

輸入參數id必填pathquant

版本歷史

1
  1. v1.0.0最新Sep 24, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Model 整合