AIHub is a lightweight, open-source platform for discovering AI models and datasets. It doesn't host any model or dataset files itself — everything is hosted externally, primarily in GitHub repositories. AIHub simply reads a pair of index files and turns them into a browsable, searchable site.
The whole site is plain HTML, CSS, and JavaScript. No build tools, no frameworks, no backend, no database. It's designed to run directly on GitHub Pages.
AIHub/
│
├── index.html Homepage
├── models.html Model listing (search, filter, sort)
├── datasets.html Dataset listing (search, filter, sort)
├── model.html Model detail page
├── dataset.html Dataset detail page
│
├── style.css Shared styling for every page
├── script.js Shared data loading, rendering, and page logic
│
├── Indexes/
│ ├── ModelIndex.json List of all models
│ └── DatasetIndex.json List of all datasets
│
└── README.md
models.html and datasets.html fetch Indexes/ModelIndex.json and
Indexes/DatasetIndex.json respectively, then render a card per entry.
Each card links to a detail page (model.html?id=... or
dataset.html?id=...), where id is the model or dataset name converted
to a URL-safe slug (lowercased, non-alphanumeric characters replaced with
hyphens). The detail page re-fetches the same index, finds the matching
entry by slug, and renders its full details.
Because the site is entirely index-driven, adding a new entry to a JSON file is enough to make it show up everywhere: the listing page, search, tag filters, sorting, the homepage stat counters, and its own detail page.
- Push your model's files to its own GitHub repository (or wherever you want to host the actual files — GitHub Releases is a common choice for the download link).
- Open
Indexes/ModelIndex.jsonand add a new object to the array:
{
"name": "My Model",
"author": "your-username",
"description": "A short description of what the model does.",
"downloads": 0,
"likes": 0,
"updated": "2026-08-05",
"tags": ["text-generation", "my-tag"],
"license": "MIT",
"github": "https://github.com/your-username/my-model",
"download": "https://github.com/your-username/my-model/releases"
}- Commit and push. The model will appear on
models.htmland atmodel.html?id=my-model.
Same process, but in Indexes/DatasetIndex.json:
{
"name": "My Dataset",
"creator": "your-username",
"description": "A short description of what the dataset contains.",
"size": "500MB",
"samples": 5000,
"updated": "2026-08-05",
"tags": ["computer-vision", "my-tag"],
"license": "MIT",
"github": "https://github.com/your-username/my-dataset",
"download": "https://github.com/your-username/my-dataset/releases"
}Each index is a plain JSON array. There's no size limit built into the
format — the site is written to handle anything from a handful of entries
to thousands, since search, filtering, and sorting all happen client-side
against the loaded array. If AIHub eventually needs to support very large
catalogs, the index files can be paginated or split without changing the
page structure, as long as script.js is updated to fetch the right
pages.
Two fields matter most for how an entry is found and displayed:
name— used to generate the detail-page URL slug. Keep names unique; two entries that slugify to the same value will collide.tags— used to build the tag filter chips on the listing pages.
- Push this repository to GitHub.
- In the repository, go to Settings → Pages.
- Under Build and deployment, set the source to Deploy from a
branch, pick the branch (e.g.
main) and the root (/) folder. - Save. GitHub Pages will publish the site at
https://kerbalmissile.github.io/AIHub/.
No further configuration is needed — every path in the site is relative, so it works whether it's hosted at the root of a domain or in a sub-path like a GitHub Pages project site.