// how it works

How It Works

Client-side AI needs model weights, and every app used to ship its own copy — re-downloaded by every visitor, unscanned, unattributed. The registry replaces that with one vetted, immutable copy per file that the browser shares across *.skillsafe.ai. Six steps between a model existing somewhere on the internet and running on your device.

Browse the registry
  1. 01

    Someone asks for it

    A builder or a visitor requests a model by name and source URL. Duplicate asks merge into votes, so the queue ranks demand. A publisher who already has the weights in hand files the exact bytes directly through the vetting API instead.

  2. 02

    The bytes are vetted, not the URL

    The platform fetches each file from a content-pinned source — a Hugging Face commit, an exact npm version, a GitHub commit — never a branch tip. It walks the ONNX graph or WebAssembly module structurally: operator inventory, non-default domains, external-data references, imports and exports. The registry's own licence and publisher facts are recorded beside the requester's claims. A reviewer approves the SHA-256; the file's input and output signature is read from the graph at the same time.

  3. 03

    Hosted once, at an immutable URL

    Approved bytes live once in object storage and are served from models.skillsafe.ai/{id}@{revision}/{path} — and by hash at /{sha256}. Responses are credential-free, byte-identical for every app and marked immutable for a year, which is what lets the browser keep one copy across every *.skillsafe.ai app. Edge caches hold files up to 500 MB per region. Only parameter files are hosted; tokenizer and config JSON ship in the app bundle, where the release scanner reads them.

  4. 04

    Apps declare what they load

    A release names its models — "models": [{"id": "modnet", "revision": "fa2fa546"}]. An unknown or withdrawn id is refused with a 400 naming it. The declaration is what lets the app page say "downloads 12.4 MB on first use · runs on your device" and generates /models.txt from the licence's attribution text, so a Llama or Gemma notice is never forgotten.

  5. 05

    The SDK loads it, verifying as it goes

    ss.models.load() streams the file with progress, checks its SHA-256 against the catalogue before returning a byte, keeps a durable copy in the app's Cache API, and reports whether the bytes came from the network or from cache. ss.models.capabilities() tells the app whether WebGPU or WASM SIMD is available so it can pick the right variant before downloading. A withdrawn model surfaces as a distinct error, never a retry loop.

  6. 06

    Withdrawal is one switch

    If a hash is ever revoked, the registry answers 410 for it everywhere within minutes, the catalogue entry drops out of the list, new releases declaring it are refused, and app pages mark it withdrawn. Nothing has to be redeployed by anyone.

Details builders ask about

Does a model cost credits?
No. The bytes are on the platform's bill and the compute is the visitor's device. Model bytes never count toward a bundle cap or storage quota either.
Is the cache really shared between apps?
Yes, through the browser's HTTP cache: every {slug}.skillsafe.ai page is the same site, and the responses carry no credentials or Vary header, so a file fetched by one app is a cache hit for the next. The Cache API copy the SDK keeps is per app and exists for durability — big files are the first thing a browser evicts.
Can I just fetch the URL myself?
You can; the host allows plain fetches from any SkillSafe page and honours range requests, so runtimes that fetch by URL (transformers.js, web-llm) work unchanged. The SDK adds the verification, the progress events and the cache-hit signal.
Which formats are hosted?
ONNX, TFLite, per-model WASM kernels and weight shards (.bin, .onnx_data, .safetensors). Multi-file models with external data and LLM shard sets are on the roadmap.
What does a model page show?
Every revision, each file with its hash and URL, the ONNX input/output signature read from the bytes, licence and attribution, the apps already running it, and generated code for the release declaration, the SDK and the runtime.