How to use from the
Use from the
MLX library
# Make sure mlx-vlm is installed
# pip install --upgrade mlx-vlm

from mlx_vlm import load, generate
from mlx_vlm.prompt_utils import apply_chat_template
from mlx_vlm.utils import load_config

# Load the model
model, processor = load("OpenMinded-Labs/AileyNitro-2B")
config = load_config("OpenMinded-Labs/AileyNitro-2B")

# Prepare input
image = ["http://images.cocodataset.org/val2017/000000039769.jpg"]
prompt = "Describe this image."

# Apply chat template
formatted_prompt = apply_chat_template(
    processor, config, prompt, num_images=1
)

# Generate output
output = generate(model, processor, formatted_prompt, image)
print(output)

AileyNitro-2B (r3, October 2026)

AileyNitro-2B is the fast, always-resident helper model of A!ley (OpenM!nded / Simon van de Loo): a fine-tune of Google Gemma 4 E2B on the QAT-4bit checkpoint, running locally on Apple Silicon via MLX. It does A!ley's background work โ€” titles, follow-up suggestions, search queries, arithmetic expressions, person checks, conversation summaries, image prompts, the Korean rap parts of her songs โ€” and holds the A!ley persona in its own fast chat mode.

  • Developed by: OpenM!nded (Simon van de Loo)
  • Base model: mlx-community/gemma-4-E2B-it-qat-4bit
  • Model type: Multimodal (text + image input, text output), decoder-only
  • License: Apache License 2.0
  • Languages: German, English; Korean for rap parts
  • Quantization: 4-bit (QAT), unchanged; adapter merged without loss (QAT adapters)

The r2 release stays available at revision 659255b (revision="659255bc4f5d37b4a1de701dabb4b9604dd18248").

What is new in r3 โ€” the first Nitro that beats its base model

Measured on 36 real runtime prompts โ€” not rebuilt by hand: A!ley's runtime functions were called with sample inputs and the exact prompts (incl. temperature and token limit) were recorded, then replayed against each model and checked deterministically. Random-sampled jobs ran several times.

Job Gemma 4 E2B base Nitro r2 Nitro r3
Reasoning leaks into the answer 19/81 5/81 0/81
Search query from a message 0/4 0/4 3/4
Song title โ‰ˆ0/6ยน 0/6 6/6
Is this a real person? (JA/NEIN) 0/4 2/4 4/4
Image prompt (English, 15โ€“70 words) 2/9 1/9 4/9
Conversation protocol (numbered, no "I") 3/3 2/3 3/3
Forum reply (1โ€“5 sentences) 6/6 0/6 5/6
Arithmetic expressions (16 questions) 7/16 11/16 9/16
Image prompt keeps all keywords (4/8/14/20 words) 14/24 0/24 8/24

ยน The base "passed" 5/6 by writing Thinking Process: as the first line โ€” no real title.

Korean rap parts inserted into existing songs (6 real songs ร— 3 positions; the runtime asks for an ultra-staccato flow โ€” four punches per line separated by em dashes):

r2 r3
Usable (Hangul, no fallback) 17/18 18/18
Staccato lines 10/121 114/114
Copied the prompt's example line 10ร— 0ร—
Exact line count requested 3/18 12/18
Section tag first 5/18 18/18

The decisive change is discipline: the base answers one job in four with an English "Thinking Process: 1. Analyze the requestโ€ฆ" instead of the result; r3 never does.

How to use (MLX)

Gemma 4 is a unified multimodal architecture โ†’ load with mlx_vlm.

from mlx_vlm import load, generate
model, processor = load("OpenMinded-Labs/AileyNitro-2B")

# Utility job: prefill an EMPTY reasoning channel โ€” answer directly
p = ("<bos><|turn>system\nGib zu dem Songtext einen Titel aus hรถchstens fรผnf Wรถrtern.<turn|>\n"
     "<|turn>user\nNeonlicht im Regen, wir tanzen bis es hell wird<turn|>\n"
     "<|turn>model\n<|channel>thought\n<channel|>")
print(generate(model, processor, p, max_tokens=40, temperature=0.7, verbose=False).text)

Reasoning in chat โ€” read this. In the training data almost every chat turn reasons, but many utility rows carry an empty channel, and that cheap target wins whenever a system prompt is present: the model opens and immediately closes the channel (0/7 on our portal prompt). What works (7/7, 50โ€“600 characters depending on the question): prefill <|channel>thought\n and suppress the <channel|> token for the first ~6 generated tokens. A prefilled first word ("Okay, โ€ฆ") derails it; asking for reasoning in the prompt does nothing.

Recommended sampling for chat: temperature 0.7, top_p 0.95, repetition penalty 1.05.

Training details (round 3)

Setting Value
Starting point gemma-4-E2B-it-qat-4bit (fresh)
Method DoRA (q_proj, v_proj) + LoRA (gate_proj, up_proj, down_proj), QAT
Rank / Alpha 32 / 64 (155 modules)
Data 4 560 curated conversations โ†’ 4 595 samples; 380 validation; 179 image rows. Conversation, native reasoning with depth levels, native tool use, identity, the runtime's utility jobs, Korean rap. No system turns.
Schedule 2 epochs planned (1 148 updates), lr 1e-4, seq 2048, grad accumulation 8, warmup 57
Selected checkpoint update 575 = end of epoch 1, val 1.482. Validation jumped to 1.517 as soon as epoch 2 repeated the data; training was stopped at update 661.
Not shipped an ORPO identity stage โ€” its pairs had the same length bias as Core's DPO (chosen reasoning ~7ร— shorter than rejected)
Hardware Apple M4, 24 GB, ~1 min per update

Limitations & biases

A 2B model: mental arithmetic and world knowledge are weak (it confabulates names and mechanisms) โ€” A!ley's runtime evaluates its arithmetic expressions with a calculator and keeps knowledge questions for the 12B. It drops a keyword now and then when composing long image prompts (the runtime appends missing ones). If you do not offer tools, ban the <|tool_call> token. It is a persona, not a knowledge base; keep a human in the loop for consequential use.

License & attribution

Derivative Work of Google Gemma 4 (Apache License 2.0). Distributed under Apache 2.0; modifications are documented in AILEY_MERGE_INFO.json; LICENSE and NOTICE included. Gemma is a trademark of Google LLC; this project is independent and not endorsed by Google.

Copyright 2026 OpenM!nded / Simon van de Loo
Portions ยฉ Google LLC (Gemma 4), Apache License 2.0
Downloads last month
42
Safetensors
Model size
5B params
Tensor type
BF16
ยท
U32
ยท
MLX
Hardware compatibility
Log In to add your hardware

4-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for OpenMinded-Labs/AileyNitro-2B

Quantized
(1)
this model