Instructions to use Microck/DiskSage-0.8B-GGUF with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Microck/DiskSage-0.8B-GGUF with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf Microck/DiskSage-0.8B-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf Microck/DiskSage-0.8B-GGUF:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Microck/DiskSage-0.8B-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf Microck/DiskSage-0.8B-GGUF:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf Microck/DiskSage-0.8B-GGUF:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf Microck/DiskSage-0.8B-GGUF:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf Microck/DiskSage-0.8B-GGUF:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf Microck/DiskSage-0.8B-GGUF:Q4_K_M
Use Docker
docker model run hf.co/Microck/DiskSage-0.8B-GGUF:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use Microck/DiskSage-0.8B-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Microck/DiskSage-0.8B-GGUF" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Microck/DiskSage-0.8B-GGUF", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Microck/DiskSage-0.8B-GGUF:Q4_K_M
- Ollama
How to use Microck/DiskSage-0.8B-GGUF with Ollama:
ollama run hf.co/Microck/DiskSage-0.8B-GGUF:Q4_K_M
- Unsloth Desktop
- Pi
How to use Microck/DiskSage-0.8B-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Microck/DiskSage-0.8B-GGUF:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "Microck/DiskSage-0.8B-GGUF:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use Microck/DiskSage-0.8B-GGUF with Docker Model Runner:
docker model run hf.co/Microck/DiskSage-0.8B-GGUF:Q4_K_M
- Lemonade
How to use Microck/DiskSage-0.8B-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Microck/DiskSage-0.8B-GGUF:Q4_K_M
Run and chat with the model
lemonade run user.DiskSage-0.8B-GGUF-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use Microck/DiskSage-0.8B-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Microck/DiskSage-0.8B-GGUF:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default Microck/DiskSage-0.8B-GGUF:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use Microck/DiskSage-0.8B-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Microck/DiskSage-0.8B-GGUF:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "Microck/DiskSage-0.8B-GGUF:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
DiskSage-0.8B
Table of Contents
Model Summary
DiskSage-0.8B reviews one Linux storage item at a time and decides whether it should be kept, investigated, or proposed to its owner for deletion. It is a LoRA fine-tune of Qwen3.5-0.8B (language model only), merged and quantized to Q4_K_M GGUF for CPU inference.
It reads numbered, read-only observations about the item (what the location is, which processes, services or containers use it, its Git and Jujutsu state, which projects pin a runtime version, hard-link sharing, verified duplicates, when it last changed and when an agent session last worked with it) and returns JSON:
{"decision": "candidate",
"reason": "Rustup 1.70.0 is not the default and no project pins it; reinstall with rustup toolchain install 1.70.0 if needed. Nothing running uses it ...",
"evidence": ["e1", "e5", "e7"],
"checks": []}
| Decision | Meaning |
|---|---|
keep |
An observation shows use, configuration, unsaved or unpushed work, credentials, an installed runtime, history or application state. |
candidate |
The item can be regenerated (known cache, build output beside its manifest, unpinned runtime version, re-clonable checkout) or is a verified duplicate, and nothing is left unknown. A proposal for human approval, never permission. |
unused |
Nothing needs it and nothing is unknown, and activity shows it is likely no longer needed: unchanged for 180+ days with no agent session in 120 days, or superseded by a newer version, or copied to a remote drive. Deleting it loses data, so the owner confirms. |
investigate |
Anything else. checks names what is missing: usage, contents, vcs, references, duplicates, owner. |
Key features
- Never proposes deleting something it should keep: 0 such mistakes on 318 real items and 174 test items.
- Separates "safe" from "probably unneeded": regenerable items are
candidate; old personal data isunused, a different list you confirm. - Small and local: 505 MiB file, about 830 MiB RAM, about 6 s per item on a 4-core ARM CPU.
- Grounded answers: every answer cites the observations it relies on; the reason restates only those.
- Prompt-injection aware: trained on file names and owner notes that try to force a decision.
The model only judges the evidence it is given. It was trained on observations from a specific set of collectors, and free-form descriptions will not work as well. Use it as a review aid: a person approves every deletion.
How to use
With llama.cpp (tested with release v0.7.0):
hf download Microck/DiskSage-0.8B-GGUF --local-dir disksage
llama-server -m disksage/DiskSage-0.8B-Q4_K_M.gguf -c 2048 --port 8080
Send the system prompt and one evidence packet. Constraining output with the JSON
schema in example-schema.json guarantees a well-formed answer:
python - <<'EOF'
import json, urllib.request
system = open("disksage/system-prompt.txt").read().strip()
packet = json.load(open("disksage/example-evidence.json"))
schema = json.load(open("disksage/example-schema.json"))
body = {"messages": [{"role": "system", "content": system},
{"role": "user", "content": json.dumps(packet)}],
"temperature": 0, "max_tokens": 320,
"response_format": {"type": "json_schema", "json_schema": {"name": "answer", "schema": schema}}}
request = urllib.request.Request("http://127.0.0.1:8080/v1/chat/completions",
json.dumps(body).encode(), {"Content-Type": "application/json"})
print(json.load(urllib.request.urlopen(request))["choices"][0]["message"]["content"])
EOF
Expected output for the example (matches example-answer.json in decision and citations):
{"decision": "candidate", "reason": "No project pins rustup 1.70.0-x86_64-unknown-linux-gnu and it is not the default, so `rustup toolchain install 1.70.0` can restore it. Nothing running uses it and no scanned service, timer or launcher file names it.", "evidence": ["e1", "e5", "e7"], "checks": []}
The schema lists the packet's observation IDs, so build it per packet (see
example-schema.json for the shape). Training used compact JSON with < escaped as
\u003c. Use greedy decoding.
Prompt format
ChatML with thinking disabled. prompt-template.txt holds the exact rendered prompt,
with __CLEANER_PACKET__ where the packet goes:
<|im_start|>system
{system_prompt}<|im_end|>
<|im_start|>user
{"item": "...", "allocated_bytes": 123, "observations": [{"id": "e1", "text": "..."}, ...]}<|im_end|>
<|im_start|>assistant
<think>
</think>
Files
| Filename | Description |
|---|---|
| DiskSage-0.8B-Q4_K_M.gguf | Merged weights, Q4_K_M, 529 MB. SHA-256 47d3f985…74ff |
system-prompt.txt |
System prompt used in training |
prompt-template.txt |
Full rendered prompt template |
example-evidence.json, example-schema.json, example-prompt.txt, example-answer.json |
One generated input, its output schema, the full prompt and the expected answer |
evaluation.json |
Aggregate metrics |
provenance.json |
Base revision, hyperparameters, dataset hashes |
SHA256SUMS, LICENSE, NOTICE |
Checksums, Apache-2.0 license, modification notice |
Evaluation
The one real-machine miss was cautious: ~/.cache/uv as investigate instead of
candidate. No real item met the unused rule when collected: the large folders
on that machine had changed within weeks. A later live check labelled a folder
unchanged for 220 days and never mentioned by any agent session as unused.
All numbers are for the Q4_K_M file, run with llama.cpp on an ARM64 CPU, greedy decoding with the JSON schema constraint.
| Set | Decisions | Wrong deletion proposals | Exact checks | Exact citations |
|---|---|---|---|---|
| Real machine, 318 items (240 paths, 78 Docker objects) | 317/318 | 0 | 311/318 | 311/318 |
Generated test, first 174 items (incl. 8 unused) |
174/174 | 0 | 173/174 | 172/174 |
| Base Qwen3.5-0.8B, 48 generated validation items | 0/48 valid answers | 0 | 0 | 0 |
The real-machine items come from live collectors on one developer workstation. They were never used for training and are not published because they contain private paths. Their labels come from the written reference policy. Each one was reviewed by hand and audited by gpt-oss-120b. Generated test items use seeds disjoint from training, and items whose text also appears in training were removed.
Training
Model
- Base: Qwen/Qwen3.5-0.8B, revision
2fc06364715b967f1860aea9cf38778875588b17, language model only - Method: BF16 LoRA, rank 64, alpha 128, dropout 0.05, on attention, MLP and linear-attention projections; merged
- Schedule: 2 epochs, 1,838 steps, batch 8 × 4 accumulation, learning rate 1e-4 cosine; loss on answer tokens only
- Quantization: llama.cpp
620d2225, Q4_K_M
Data
29,400 generated training examples from ten scenario families: known caches and runtime directories, build outputs, runtime versions (nvm, rustup, uv Python, pyenv, Playwright, editor servers), Git and Jujutsu checkouts, user data with and without verified duplicates, temporary files, Docker images, containers, volumes and build cache, plus mounts, swap and symlinks. Observations are rendered by the same functions the live collectors use. Labels, citations, checks and reasons come from one written reference policy. Examples include collector noise, shuffled order, owner notes in English and Spanish, and prompt-injection strings.
Software & hardware
- 1× NVIDIA H100 80GB on Modal, about 40 minutes
- PyTorch 2.14.1, Transformers 5.20.2, PEFT 0.21.2, flash-linear-attention 0.6.0
Limitations
- No file contents. Personal media, datasets and research output with no
regeneration path stay
investigate, since only the owner knows whether they are needed. - Evidence-bound. Answers are only as complete as the collectors' bounded reference search; a script elsewhere can still use a path.
- One policy, one machine. The labels encode one policy's judgment calls, validated on one Linux workstation. Other setups may need new scenarios.
- Activity is a proxy.
unusedrelies on modification time and agent-session logs. Access time is ignored because indexers and backups read files daily. Work done outside agent sessions is invisible to it. - Wording. The reason can include filler such as "0% of its blocks are hard-linked elsewhere" when nothing is shared.
License
Apache-2.0, inherited from Qwen3.5-0.8B.
See NOTICE for modifications.
Citation
@misc{disksage2026,
title = {DiskSage-0.8B: a small local model for reviewing Linux storage},
author = {Microck},
year = {2026},
url = {https://huggingface.co/Microck/DiskSage-0.8B-GGUF}
}
- Downloads last month
- 39
4-bit
Model tree for Microck/DiskSage-0.8B-GGUF
Evaluation results
- Decision accuracy on Real developer machine, 318 items (240 paths, 78 Docker objects)self-reported99.700
- Exact checks on Real developer machine, 318 items (240 paths, 78 Docker objects)self-reported97.800
- Exact citations on Real developer machine, 318 items (240 paths, 78 Docker objects)self-reported97.800
- Decision accuracy on DiskSage generated test, first 174 itemsself-reported100.000
- Exact checks on DiskSage generated test, first 174 itemsself-reported99.400