Instructions to use Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit 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("Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit") 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 Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit"
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": "Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit" } ] } } }Run Pi
# Start Pi in your project directory: pi
- MLX LM
How to use Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit" # Calling the OpenAI-compatible server with curl curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit", "messages": [ {"role": "user", "content": "Hello"} ] }' - Hermes Agent
How to use Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit 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 "Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit"
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 Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit"
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 "Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit" \ --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"
lfm25-1.2b-muesli-cleanup-v12-mlx-8bit
On-device dictation cleanup model for Muesli, a macOS dictation app: it takes raw speech-to-text output (plus optional on-screen app context) and returns the cleaned text. It fixes clear recognition errors, removes fillers, applies self-corrections ("no wait…", "scratch that"), formats dictated lists, and follows the destination app's punctuation style. Correct text is returned unchanged.
Format: MLX 8-bit (mlx-lm). Base model: LiquidAI/LFM2.5-1.2B-Instruct.
| File | Size | Notes |
|---|---|---|
model.safetensors + tokenizer/config |
1.2 GB | MLX 8-bit, group size 64 |
Prompt (must match training exactly)
One user turn, no system message, greedy decoding (temperature 0 / top_k=1, no repetition penalty), max 1,024 new tokens.
Stop on <|im_end|>. Build the string yourself instead of relying on a chat-template engine:
<|startoftext|><|im_start|>user
{USER_TEXT}<|im_end|>
<|im_start|>assistant
USER_TEXT = SYSTEM_PROMPT + "\n\n" + CONTEXT_BLOCK + transcript. The transcript is raw; do not wrap it in tags.
SYSTEM_PROMPT (verbatim):
Clean up speech-to-text transcription. Only make changes when there is a clear error. If the text is already correct, output it exactly as-is.
The user input may include an <APP-CONTEXT> section with focused app, document, URL, selected text, or OCR screen text. Use it only to resolve obvious transcription errors, names, acronyms, and formatting intent. Never copy app context into the output unless the user dictated it.
You may: fix obvious misspellings, remove filler words (um, uh, like), apply 'scratch that' deletions, and format numbered or bullet lists when dictated.
Do not: paraphrase, reword, add words, remove meaningful words, change the meaning in any way, wrap the output in markdown, code fences, tags, labels, or commentary, or repeat the output more than once. Preserve the speaker's original phrasing.
CONTEXT_BLOCK is an empty string when there is no screen context, otherwise:
<APP-CONTEXT>
App: {app name}
Document context: {focused field}
OCR screen text: {screen text}
</APP-CONTEXT>
Omit the Document context / OCR screen text lines when empty, and cut the text between the tags to 1,200 characters.
Results
Word error rate against the reference cleanup (%, lower is better), one request at a time:
| Build | Screen-context held-out (400) | Plain dictation (512) | New categories A (309) | New categories B (284) |
|---|---|---|---|---|
| MLX 8-bit | 8.85 | 1.39 | 2.66 | 3.01 |
| Muesli's previous Qwen3.5-0.8B cleanup (reference) | 37.52 | 2.26 | – | – |
Test sets are held out from training. Rows were written by open models (DeepSeek/GLM for set A, ember-1 for set B) and filtered by a model judge. They are not real user dictations; a blind test on real dictations has not been run yet.
Speed on an Apple M5 Mac, ~550 prompt tokens, ~17 output tokens (median of 60 prompts): mlx-lm 0.32.2: median 0.35 s, p90 0.48 s, prefill 4,002 tok/s, decode 82 tok/s.
Training
LoRA rank 16 (Unsloth), 1 epoch, loss on the answer only, merged into the base weights. Data: 155,081 cleanup pairs (blend-v12)
covering email, chat, documents, AI-agent prompts, code, spreadsheets/slides, search boxes and long dictations, with
about 20% of rows carrying screen context. Pairs were written by open models hosted on Fireworks and filtered by a model judge.
Notes and limits
- License: LFM Open License v1.0 (see
LICENSE). Commercial use is free only for organisations under USD 10M annual revenue. This is a modified version of LFM2.5-1.2B-Instruct (LoRA fine-tune, merged). - English only. Cleanup only: not a speech recogniser.
- Training put the focused field's name in "Document context"; apps that send the field's content there may see weaker results.
- Recommended app-side guard: if the output is empty or longer than 3x the input, paste the raw transcript.
- Downloads last month
- 21
8-bit
Model tree for Muesli-HQ/lfm25-1.2b-muesli-cleanup-v12-mlx-8bit
Base model
LiquidAI/LFM2.5-1.2B-Base