Instructions to use eins78/Kolibri-1-mlx-4bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use eins78/Kolibri-1-mlx-4bit 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-4bit") 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-4bit 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-4bit"
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-4bit" } ] } } }Run Pi
# Start Pi in your project directory: pi
- MLX LM
How to use eins78/Kolibri-1-mlx-4bit 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-4bit"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "eins78/Kolibri-1-mlx-4bit" # 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-4bit", "messages": [ {"role": "user", "content": "Hello"} ] }' - Hermes Agent
How to use eins78/Kolibri-1-mlx-4bit 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-4bit"
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-4bit
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use eins78/Kolibri-1-mlx-4bit 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-4bit"
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-4bit" \ --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-4bit
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 4-bit, group size 64, for all linear layers except the router; embedding and lm_head in bf16. 4.60 bits per weight on average, 44.9 GB on disk.
Peak memory was 45.5 GB on a 64 GB Mac (618-token prompt, 256 new tokens), so it needs a Mac with 64 GB or more; long contexts need more.
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-4bit --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-4bit")
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 (this model) | 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 | 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.940 / 0.0493 | 0.945 / 0.0467 | 0.977 / 0.0066 |
| de_long (612) | 0.859 / 0.1183 | 0.861 / 0.1165 | 0.923 / 0.0318 |
| en_short (15) | 0.867 / 0.0547 | 0.933 / 0.0521 | 0.933 / 0.0066 |
| de_code (24) | 0.917 / 0.0187 | 0.917 / 0.0194 | 1.000 / 0.0025 |
| de_short (13) | 0.538 / 0.9358 | 0.462 / 0.8254 | 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.
Tested on this machine
Loaded and run with stock mlx-vlm 0.7.8 on an Apple M4 Pro with 64 GB, greedy decoding. Other services
were running on the machine, so the speeds are a lower bound.
| Check | Result |
|---|---|
German prompt, reasoning on (reasoning_effort="low") |
passes: <think> block, then the answer |
English prompt, reasoning off (enable_thinking=False) |
passes: no <think> block |
Tool call (get_weather, "What is the weather in Zurich right now?") |
passes: {"name": "get_weather", "arguments": {"city": "Zurich"}} |
| Prompt speed (618-token prompt) | 626 tok/s |
| Generation speed (256 tokens) | 55.1 tok/s |
| Peak memory | 45.5 GB |
| Full-model prefill vs the layer-by-layer numbers above | identical |
| Decode with cache vs prefill (last 8 tokens, max logit difference) | 1.44; the decode path uses different attention kernels, and the mlx-lm port measured 0.59 to 1.33 on the same prompts |
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
- 158
4-bit
Model tree for eins78/Kolibri-1-mlx-4bit
Base model
Aleph-Alpha/Kolibri-1-BF16