Instructions to use eins78/Kolibri-1-mlx-5bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use eins78/Kolibri-1-mlx-5bit 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("eins78/Kolibri-1-mlx-5bit") 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 eins78/Kolibri-1-mlx-5bit with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "eins78/Kolibri-1-mlx-5bit"
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": "eins78/Kolibri-1-mlx-5bit" } ] } } }Run Pi
# Start Pi in your project directory: pi
- MLX LM
How to use eins78/Kolibri-1-mlx-5bit with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "eins78/Kolibri-1-mlx-5bit"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "eins78/Kolibri-1-mlx-5bit" # Calling the OpenAI-compatible server with curl curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "eins78/Kolibri-1-mlx-5bit", "messages": [ {"role": "user", "content": "Hello"} ] }' - Hermes Agent
How to use eins78/Kolibri-1-mlx-5bit 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 "eins78/Kolibri-1-mlx-5bit"
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 eins78/Kolibri-1-mlx-5bit
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use eins78/Kolibri-1-mlx-5bit with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "eins78/Kolibri-1-mlx-5bit"
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 "eins78/Kolibri-1-mlx-5bit" \ --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"
eins78/Kolibri-1-mlx-5bit
Aleph-Alpha/Kolibri-1 converted to MLX with stock
mlx-vlm 0.7.8 convert, from the BF16 release
Aleph-Alpha/Kolibri-1-BF16.
Quantisation: affine 5-bit, group size 64, for all linear layers except the router; embedding and lm_head in bf16. 5.59 bits per weight on average, 54.6 GB on disk.
It is 54.6 GB on disk; a 64 GB Mac with nothing else running may be enough, which was not tested; 96 GB is the safe choice.
Kolibri 1 is Aleph Alpha's German/English mixture-of-experts model (78B parameters, 50 layers, 384 experts, 6 routed plus 1 shared expert per token, sliding-window attention of 513 tokens in a 4:1 sliding:full pattern). Refer to the original model card for what the model is for.
This is one rung of a set; all rungs were measured the same way (table below).
Use with mlx-vlm
No fork and no extra code: mlx-vlm 0.7.8 and later include the kolibri1 architecture.
pip install -U "mlx-vlm>=0.7.8"
python -m mlx_vlm generate --model eins78/Kolibri-1-mlx-5bit --max-tokens 400 \
--temperature 1.0 --top-p 0.97 --top-k 128 \
--prompt "Erkläre in zwei Sätzen, warum der Himmel blau ist."
from mlx_vlm import load, generate
model, processor = load("eins78/Kolibri-1-mlx-5bit")
tokenizer = processor.tokenizer if hasattr(processor, "tokenizer") else processor
messages = [{"role": "user", "content": "Erkläre in zwei Sätzen, warum der Himmel blau ist."}]
prompt = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, tokenize=False, reasoning_effort="low"
)
result = generate(model, processor, prompt, max_tokens=600, temperature=1.0, top_p=0.97, top_k=128)
print(result.text)
Recommended sampling (Aleph Alpha): temperature 1.0, top_p 0.97, top_k 128. The chat template switches
reasoning with reasoning_effort ("none", "low", "medium", "high") or enable_thinking=False; with
reasoning on the model writes <think>...</think> first. Tool calls come out as Hermes-style
<tool_call>{"name": ..., "arguments": ...}</tool_call> (pass tools=[...] to apply_chat_template).
Not for mlx-lm: the weight names follow mlx-vlm's layout (language_model. prefix), so mlx_lm.load does
not read these files, even with the open mlx-lm pull request for Kolibri. For mlx-lm, see
eins78/Kolibri-1-mlx-mixed-4-8-bit.
The set
Top-1 token agreement / mean KL divergence against the unquantised model in bf16, on two prompts longer than the 513-token window (English 618 tokens, German 612 tokens), scored at every position of the prompt. Higher top-1 and lower KL are better. For scale, bf16 itself against fp32 scores 0.977 / 0.0066 (en_long) and 0.923 / 0.0318 (de_long).
| Repository | Bits per weight | Size | en_long vs bf16 | de_long vs bf16 | Generation | Peak memory | Load and generate tested |
|---|---|---|---|---|---|---|---|
| Kolibri-1-mlx-3bit | 3.61 | 35.3 GB | 0.833 / 0.1714 | 0.778 / 0.3218 | 59 tok/s | 35.9 GB | yes |
| Kolibri-1-mlx-4bit | 4.60 | 44.9 GB | 0.940 / 0.0493 | 0.859 / 0.1183 | 55 tok/s | 45.5 GB | yes |
| Kolibri-1-mlx-mixed-4-8bit-vlm | 4.64 | 45.3 GB | 0.953 / 0.0150 | 0.891 / 0.0966 | 44 tok/s | 45.9 GB | yes |
| Kolibri-1-mlx-5bit (this model) | 5.59 | 54.6 GB | 0.963 / 0.0158 | 0.899 / 0.0455 | not measured | not measured | no: did not run next to other services on the 64 GB test Mac |
| Kolibri-1-mlx-6bit | 6.59 | 64.3 GB | 0.964 / 0.0119 | 0.928 / 0.0366 | not measured | not measured | no: larger than the 64 GB test Mac |
| Kolibri-1-mlx-8bit | 8.57 | 83.6 GB | 0.968 / 0.0103 | 0.925 / 0.0297 | not measured | not measured | no: larger than the 64 GB test Mac |
| Aleph-Alpha/Kolibri-1-BF16 (no MLX copy needed) | 16 | 156 GB | baseline | baseline | not measured | not measured | no |
There is no bf16 MLX copy: stock mlx-vlm loads Aleph-Alpha/Kolibri-1-BF16 directly.
Measured quality of this model
Baselines: bf16 is the unquantised BF16 release run in bf16 through mlx-vlm's own layers; fp32 is the
same weights run in fp32. The last column shows how far bf16 itself is from fp32.
| Prompt (tokens) | vs bf16: top-1 / KL mean | vs fp32: top-1 / KL mean | bf16 floor vs fp32 |
|---|---|---|---|
| en_long (618) | 0.963 / 0.0158 | 0.953 / 0.0192 | 0.977 / 0.0066 |
| de_long (612) | 0.899 / 0.0455 | 0.910 / 0.0540 | 0.923 / 0.0318 |
| en_short (15) | 0.867 / 0.0179 | 0.933 / 0.0124 | 0.933 / 0.0066 |
| de_code (24) | 1.000 / 0.0059 | 1.000 / 0.0072 | 1.000 / 0.0025 |
| de_short (13) | 0.538 / 0.8210 | 0.692 / 0.8103 | 0.538 / 0.2700 |
The short prompts (13 to 24 tokens) are noisy even for bf16: the first positions of a context carry very large activations, and small errors there change the top-1 token more often.
Not verified here
This model is 54.6 GB. On the 64 GB Mac used for this release, with other services running, loading it went into swap, so
loading and generation were not tested. The quality numbers above are measured on these exact files: the
weights were read one decoder layer at a time and the prompt was run through all 50 layers (with causal
attention this gives the same logits as a full-model prefill; for the rungs that fit, the two agree to the
digit). Speed and memory were not measured. The weights load with mlx_vlm.load the same way as the tested
rungs, and they were written by the same convert call with a different --q-bits.
How this was verified
- The mlx-vlm model code is exact. mlx-vlm 0.7.8's own
kolibri1layers, run in fp32 one layer at a time from the embedding to the logits on the FP8 checkpoint, reproduce a fp32 PyTorch reference written from Aleph Alpha's vLLM plugin: top-1 1.000 and top-5 1.000 on five German and English prompts, mean KL about 1e-11, identical expert choice at every layer. So every difference measured on this card is precision (bf16 and quantisation), not a wrong implementation. The reference is a torch rebuild of the plugin's math; the plugin itself needs CUDA and was not run. - Each rung is measured on its own files against bf16 and fp32 runs of the BF16 weights, through the same mlx-vlm layers.
- Rungs that fit in 64 GB were also loaded whole with
mlx_vlm.loadand given the smoke and speed test.
Scripts and method: kolibri-mlx, section
11. Stock mlx-vlm and the MLX release (scripts/vlm_chain.py, scripts/vlm_e2e.py,
scripts/vlm_smoke.py, scripts/vlm_convert.py).
AI assistance
The conversion, the verification scripts, the measurements and this model card were produced by an AI coding agent (Claude Code, Claude Opus 5.5) working from a written brief, directed and reviewed by the repository owner (eins78). The numbers on this card were generated from the result files by script, not typed by hand. The upload was done by the agent with the owner's approval.
License
Apache License 2.0, inherited from Aleph Alpha's
Kolibri-1-BF16 (the LICENSE file is included).
Model weights and tokenizer are by Aleph Alpha; this repository only changes the format and precision.
Aleph Alpha publishes no acceptable use policy for Kolibri and asks users to use it lawfully; see the
Responsible Use section of the original card.
- Downloads last month
- 91
5-bit
Model tree for eins78/Kolibri-1-mlx-5bit
Base model
Aleph-Alpha/Kolibri-1-BF16