| --- |
| title: hf-save |
| emoji: 💾 |
| colorFrom: blue |
| colorTo: indigo |
| sdk: docker |
| app_port: 7860 |
| pinned: false |
| --- |
| |
| # hf-save |
|
|
| An ultra-fast, zero-overhead developer tool to save work artifacts from ephemeral GPU instances (RunPod, Vast.ai, Lambda Labs) and restore them later. |
|
|
| Uses a **Hugging Face Docker Space** with a **Dataset Storage Mount** at `/data` as the backend and a **Single-binary Go CLI** on the client side. |
|
|
|
|
| --- |
|
|
| ## Deploying the Backend Space |
|
|
| 1. Create a new Space on [Hugging Face](https://huggingface.co/spaces). |
| 2. Set the SDK to **Docker** (Blank template). |
| 3. **Set up Persistent Storage / Dataset Mount**: |
| * Mount a dataset repository at `/data` inside your Space configuration settings. |
| 4. **Set environment variable**: |
| * In your Space's settings, add a new Secret variable: `HF_SAVE_API_KEY` (e.g. `my-super-secret-key-123`). This will authenticate client-side uploads. |
| 5. Clone your space repository locally, copy the repository files (`main.go`, `cli/`, `Dockerfile`, `go.mod`), commit and push to the Space repo. Hugging Face will automatically compile the server and build the CLI binaries for Linux, macOS, and Windows. |
|
|
| --- |
|
|
| ## Client Installation |
|
|
| To install the client binary on any GPU instance or development machine, run the appropriate command. Replace `your-space-name.hf.space` with your actual Hugging Face Space hostname. |
|
|
| ### Linux: |
| ```bash |
| curl -fsSL "https://your-space-name.hf.space/init?platform=linux&token=YOUR_API_KEY" | bash |
| ``` |
|
|
| ### Windows (PowerShell): |
| ```powershell |
| irm "https://your-space-name.hf.space/init?platform=windows&token=YOUR_API_KEY" | iex |
| ``` |
|
|
| ### macOS: |
| ```bash |
| curl -fsSL "https://your-space-name.hf.space/init?platform=mac&token=YOUR_API_KEY" | bash |
| ``` |
|
|
| *Note: If you omit the `&token=YOUR_API_KEY` parameter from the URL, the installer will interactively prompt you to enter the API Key during setup.* |
|
|
| --- |
|
|
| ## CLI Usage Guide |
|
|
| Once installed, use the CLI commands to backup and restore files. |
|
|
| ### 1. Saving Directories |
| To backup folders at the end of a session: |
| ```bash |
| # Save a single directory |
| hf-save outputs |
| |
| # Save multiple directories |
| hf-save outputs logs checkpoints |
| ``` |
| This scans files, filters out binary/bloat directories (like `.git`, `__pycache__`, `venv`), and streams them directly to `/data/{YYYY-MM-DD}/{HH-MM-SS}_{name}` on your backend. |
|
|
| ### 2. Listing Backups |
| List all backup dates: |
| ```bash |
| hf-list |
| ``` |
|
|
| List individual snapshots for a specific date: |
| ```bash |
| hf-list 2026-06-15 |
| ``` |
|
|
| ### 3. Restoring Backups |
| To restore the **latest** backup of a specific folder name automatically: |
| ```bash |
| hf-mount outputs |
| ``` |
|
|
| To restore a **specific** timestamped backup run: |
| ```bash |
| hf-mount 2026-06-15 16-35-20_outputs |
| ``` |
| This downloads the files and reconstructs the folders inside your current working directory. |
|
|