Text Generation
MLX
Safetensors
multilingual
granitemoehybrid
text
summarization
on-device
conversational
6-bit
Instructions to use desert-ant-labs/title with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use desert-ant-labs/title with MLX:
# Make sure mlx-lm is installed # pip install --upgrade mlx-lm # Generate text with mlx-lm from mlx_lm import load, generate model, tokenizer = load("desert-ant-labs/title") prompt = "Write a story about Einstein" messages = [{"role": "user", "content": prompt}] prompt = tokenizer.apply_chat_template( messages, add_generation_prompt=True ) text = generate(model, tokenizer, prompt=prompt, verbose=True) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Pi
How to use desert-ant-labs/title with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "desert-ant-labs/title"
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "mlx-lm": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "desert-ant-labs/title" } ] } } }Run Pi
# Start Pi in your project directory: pi
- MLX LM
How to use desert-ant-labs/title with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "desert-ant-labs/title"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "desert-ant-labs/title" # Calling the OpenAI-compatible server with curl curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "desert-ant-labs/title", "messages": [ {"role": "user", "content": "Hello"} ] }' - Hermes Agent
How to use desert-ant-labs/title with Hermes Agent:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "desert-ant-labs/title"
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 desert-ant-labs/title
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use desert-ant-labs/title with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "desert-ant-labs/title"
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 "desert-ant-labs/title" \ --custom-provider-id mlx-lm \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
Restore the card after the sync flattened it again
Browse files
README.md
CHANGED
|
@@ -14,6 +14,7 @@ tags:
|
|
| 14 |
pipeline_tag: text-generation
|
| 15 |
---
|
| 16 |
|
|
|
|
| 17 |
# Title
|
| 18 |
|
| 19 |
Names what you just wrote.
|
|
@@ -21,3 +22,103 @@ Names what you just wrote.
|
|
| 21 |
On-device titles and descriptions: a short factual title and a one- to two-sentence description for any passage of text.
|
| 22 |
|
| 23 |
- **SDKs, install and examples:** https://github.com/Desert-Ant-Labs/desert-ant-core/blob/main/docs/models/title.md
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
pipeline_tag: text-generation
|
| 15 |
---
|
| 16 |
|
| 17 |
+
<!-- card-header:start (generated from manifest.json, edit below this block) -->
|
| 18 |
# Title
|
| 19 |
|
| 20 |
Names what you just wrote.
|
|
|
|
| 22 |
On-device titles and descriptions: a short factual title and a one- to two-sentence description for any passage of text.
|
| 23 |
|
| 24 |
- **SDKs, install and examples:** https://github.com/Desert-Ant-Labs/desert-ant-core/blob/main/docs/models/title.md
|
| 25 |
+
|
| 26 |
+
<!-- card-header:end -->
|
| 27 |
+
|
| 28 |
+
<!-- card-install:start (generated from manifest.json, edit below this block) -->
|
| 29 |
+
| | |
|
| 30 |
+
| --- | --- |
|
| 31 |
+
| **Platforms** | iOS, macOS, tvOS, visionOS |
|
| 32 |
+
| **Weights** | [v0.1.0](https://huggingface.co/desert-ant-labs/title) |
|
| 33 |
+
|
| 34 |
+
## Install
|
| 35 |
+
|
| 36 |
+
**Swift** ([requirements](https://github.com/Desert-Ant-Labs/desert-ant-core/blob/main/README.md#swift))
|
| 37 |
+
|
| 38 |
+
```swift
|
| 39 |
+
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core.git", from: "3.0.0",
|
| 40 |
+
traits: ["MLX"])
|
| 41 |
+
```
|
| 42 |
+
|
| 43 |
+
Then add the `Title` product to your target. The `MLX` trait is required: without it the module compiles as a stub.
|
| 44 |
+
<!-- card-install:end -->
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
Get a title and a one or two sentence description for any passage of text, on device.
|
| 48 |
+
|
| 49 |
+
Fine-tuned on transcript clips, but it works on any prose. The register is deliberately plain, with no emoji, no hashtags and no clickbait,
|
| 50 |
+
and a description is meant to identify *this* passage rather than its topic.
|
| 51 |
+
|
| 52 |
+
## Files
|
| 53 |
+
|
| 54 |
+
An MLX model directory. Load the folder, not a single file.
|
| 55 |
+
|
| 56 |
+
| File | Contents |
|
| 57 |
+
|---|---|
|
| 58 |
+
| `model.safetensors` | 6-bit quantized weights |
|
| 59 |
+
| `model.safetensors.index.json` | shard index; present even for one shard, because the loader reads it |
|
| 60 |
+
| `config.json` | architecture and quantization config |
|
| 61 |
+
| `generation_config.json` | decode defaults |
|
| 62 |
+
| `tokenizer.json`, `tokenizer_config.json` | byte-level BPE with merges |
|
| 63 |
+
| `chat_template.jinja` | the chat template the fine-tune was trained against |
|
| 64 |
+
|
| 65 |
+
The chat template is not incidental. A different template is a different task to this model.
|
| 66 |
+
|
| 67 |
+
## The prompt
|
| 68 |
+
|
| 69 |
+
The model was fine-tuned against one specific instruction, and a paraphrase is a different
|
| 70 |
+
task to it. It lives in `Titles.prompt` in the SDK; use that wording. The reply is two labelled
|
| 71 |
+
lines:
|
| 72 |
+
|
| 73 |
+
```
|
| 74 |
+
TITLE: <3-8 words, no final punctuation>
|
| 75 |
+
DESC: <1-2 sentences>
|
| 76 |
+
```
|
| 77 |
+
|
| 78 |
+
Parse tolerantly. A card model that drifts off format should degrade to a usable title rather
|
| 79 |
+
than throw.
|
| 80 |
+
|
| 81 |
+
## Apple only
|
| 82 |
+
|
| 83 |
+
MLX runs on Apple silicon and nowhere else, so there is no Android, Linux or Windows artifact
|
| 84 |
+
here and no manifest promising one. A Core ML export exists in the training repository and is
|
| 85 |
+
kept as evidence rather than as a candidate: on short autoregressive decode the Neural Engine
|
| 86 |
+
is bandwidth-bound, and the Core ML arm lost on first token, throughput, load time and resident
|
| 87 |
+
memory.
|
| 88 |
+
|
| 89 |
+
## Status
|
| 90 |
+
|
| 91 |
+
Internal testing, and less settled than that phrase usually implies. This card carries no
|
| 92 |
+
quality figures: no independent review has been completed, and a known open issue is that the
|
| 93 |
+
model sometimes opens a description with a stock phrase its own instruction forbids. Treat the
|
| 94 |
+
output as needing a read before it reaches a user.
|
| 95 |
+
|
| 96 |
+
## Built on
|
| 97 |
+
|
| 98 |
+
- [`ibm-granite/granite-4.0-350m`](https://huggingface.co/ibm-granite/granite-4.0-350m) ,
|
| 99 |
+
the base model this is fine-tuned from.
|
| 100 |
+
|
| 101 |
+
<!-- card-footer:start (generated from manifest.json, edit above this block) -->
|
| 102 |
+
## License
|
| 103 |
+
|
| 104 |
+
[Desert Ant Labs Source-Available License](https://license.desertant.com/1.0). Free for most
|
| 105 |
+
apps, and a commercial license is required at scale. Full terms are at the link.
|
| 106 |
+
Licensing: <licensing@desertant.com>.
|
| 107 |
+
|
| 108 |
+
See [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md).
|
| 109 |
+
|
| 110 |
+
## Citation
|
| 111 |
+
|
| 112 |
+
```bibtex
|
| 113 |
+
@software{title_2026,
|
| 114 |
+
title = {Title: On-device titles and descriptions: a short factual title and a one- to two-sentence description for any passage of text},
|
| 115 |
+
author = {Desert Ant Labs},
|
| 116 |
+
year = {2026},
|
| 117 |
+
url = {https://huggingface.co/desert-ant-labs/title},
|
| 118 |
+
}
|
| 119 |
+
```
|
| 120 |
+
|
| 121 |
+
---
|
| 122 |
+
|
| 123 |
+
© 2026 Desert Ant Labs · <https://desertant.com>
|
| 124 |
+
<!-- card-footer:end -->
|