hayward / README.md
hedgerow-dev's picture
Credit hedgerow.dev on the page and in the card
761e91f verified
|
Raw
History Blame Contribute Delete
1.76 kB
---
title: Hayward
emoji: 🌾
colorFrom: green
colorTo: blue
sdk: static
app_file: index.html
pinned: false
license: mit
short_description: Check whether loading a model repo will run code
tags:
- security
- pickle
- model-security
- supply-chain
- safetensors
---
# Hayward
Paste a Hub repo id, or drop a checkpoint from your own machine. Hayward reads
the model files and tells you whether loading them will run code.
`torch.load`, `joblib.load` and `numpy.load(allow_pickle=True)` execute code
from the file they read. That is what pickle does, and the Hub is still full
of pickle.
The real thing runs offline, in your CI, with one dependency:
```bash
pip install hayward
hayward scan ./models
```
Source and documentation: https://github.com/hedgerow-dev/hayward
Hayward is built by [Hedgerow](https://hedgerow.dev/open-source#hayward).
## How this page works
There is no server. The page loads the `hayward` wheel from PyPI into
Pyodide and runs the identical scanner in WebAssembly, in your browser. A file
you drop here is never uploaded anywhere. A repo you name is fetched from the
Hub straight into the tab.
That is the same property the CLI has, which is the point: a scanner that
phones home is a scanner you cannot run on a file you are worried about.
## What it does
1. Lists the repo's files and keeps the ones Hayward can read.
2. Fetches them one at a time, scans, then discards.
3. Shows every finding, and every file it had to skip.
A clean result means Hayward read the files and recognised nothing dangerous
in them. It does not mean the model is safe.
## Limits
A browser tab is not a build box: this stops at 25 files and 500 MB per file.
Anything it skips is listed as skipped rather than quietly dropped.