Open source Β· v0.1 pre-release

Your models.
Your buckets.
Your rules.

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 β†—

huggingface_hub1.29.0
hf CLI1.29.0
transformers5.17.0
datasets5.0.1

01 / Familiar tools, your infrastructure

A home for your weights.

Repository storage with the essentials built in. Point supported clients at your hub and get to work.

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.

Give every version a home

Branches, tags, commit history, and revision-aware reads. Use parent_commit for optimistic concurrency when writers work together.

Put the bytes in your bucket

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.

Keep the stack small

A static Go binary, PostgreSQL, and S3-compatible storage. The development Compose stack includes PostgreSQL and MinIO, with healthchecks.

Make room for your team

Users, organizations, roles, and bearer tokens. Public and private repositories, with private repos hidden from unauthorized callers.

Own the whole setup

Inspect the code, run it on your infrastructure, and build on it. Available under AGPL-3.0-or-later.

02 / Up and running

Meet your
new endpoint.

Start a local hub, create your credentials, and upload your first model.

Before you start
Docker running with Compose, Git, Make, and Python 3.10+ with pip. Run these commands in the same terminal.
Read the setup docs
  1. Bring up the stack

    Build the app and wait for the hub, PostgreSQL, and MinIO to be ready.

    TERMINAL
    git clone https://github.com/conacademy/RubbingEggplant
    cd RubbingEggplant
    make dev
  2. Create a user and token

    Save the token printed by the second command. It is shown only once.

    TERMINAL
    docker compose exec app /rubbing-eggplant admin user add alice --admin
    docker compose exec app /rubbing-eggplant admin token create --user alice
  3. Connect your client

    Install the tested CLI in a virtual environment, then paste your token at login.

    TERMINAL Β· macOS / Linux
    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 login

    Xet uploads are not supported. Keep HF_HUB_DISABLE_XET=1 set in every client environment.

  4. Make a round trip

    Create a small example repository, upload a file, and download it from your hub.

    TERMINAL
    hf repo create alice/my-model
    hf upload alice/my-model ./README.md README.md
    hf download alice/my-model README.md

    This 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

Know what’s in the box.

Pre-release v0.1 focuses on repository storage. Your existing clients are the interface.

Ready to work with

  • Model, dataset, and Space repositories (storage only)
  • Regular files and S3-backed LFS, including multipart uploads
  • Branches, tags, commits, and revision-aware downloads
  • Model cards, metadata tags, search, and repository listing
  • Users, organizations, tokens, and private repositories
  • Garbage collection through the administrator CLI

Outside v0.1

  • A web UI, self-signup, password login, or OAuth
  • Xet storage and transfers
  • Git smart HTTP: git clone and git push
  • Pull requests, discussions, likes, and collections
  • Inference endpoints and Spaces runtime
  • Full compatibility with every Hugging Face service

Deploying 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.