Keep your workflow
Upload, download, and browse repositories through supported Hugging Face clients. Set your endpoint, provide a token, and disable Xet. No client patches.
A Hugging Face Hub API server you can host yourself. Keep your model and dataset workflows on infrastructure you control.
One Go binary. PostgreSQL. S3-compatible storage.
Tested client workflows
20 compatibility tests β
01 / Familiar tools, your infrastructure
Repository storage with the essentials built in. Point supported clients at your hub and get to work.
Upload, download, and browse repositories through supported Hugging Face clients. Set your endpoint, provide a token, and disable Xet. No client patches.
Branches, tags, commit history, and revision-aware reads. Use parent_commit for optimistic concurrency when writers work together.
LFS uploads and downloads use presigned S3 URLs, including multipart uploads. By default, the hub reads each new object once to verify its SHA-256.
A static Go binary, PostgreSQL, and S3-compatible storage. The development Compose stack includes PostgreSQL and MinIO, with healthchecks.
Users, organizations, roles, and bearer tokens. Public and private repositories, with private repos hidden from unauthorized callers.
Inspect the code, run it on your infrastructure, and build on it. Available under AGPL-3.0-or-later.
02 / Up and running
Start a local hub, create your credentials, and upload your first model.
Build the app and wait for the hub, PostgreSQL, and MinIO to be ready.
git clone https://github.com/conacademy/RubbingEggplant
cd RubbingEggplant
make devSave the token printed by the second command. It is shown only once.
docker compose exec app /rubbing-eggplant admin user add alice --admin
docker compose exec app /rubbing-eggplant admin token create --user aliceInstall the tested CLI in a virtual environment, then paste your token at login.
python3 -m venv .venv
source .venv/bin/activate
python -m pip install 'huggingface_hub==1.29.0'
export HF_ENDPOINT=http://127.0.0.1:8080
export HF_HUB_DISABLE_XET=1
hf auth loginXet uploads are not supported. Keep HF_HUB_DISABLE_XET=1 set in every client environment.
Create a small example repository, upload a file, and download it from your hub.
hf repo create alice/my-model
hf upload alice/my-model ./README.md README.md
hf download alice/my-model README.mdThis uploads the checkoutβs README as a smoke test. For model weights, replace ./README.md README.md with your model directory and ., for example ./my-model ..
03 / A focused first release
Pre-release v0.1 focuses on repository storage. Your existing clients are the interface.
git clone and git pushDeploying for a team? v0.1 assumes mutually trusted writers for in-flight uploads. Review the operational notes for upload limitations, backups, TLS, and garbage collection.