Instructions to use netprojects/h2o-lightning-4b-mlx-q8 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use netprojects/h2o-lightning-4b-mlx-q8 with MLX:
# 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("netprojects/h2o-lightning-4b-mlx-q8") config = load_config("netprojects/h2o-lightning-4b-mlx-q8") # 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) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Pi
How to use netprojects/h2o-lightning-4b-mlx-q8 with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "netprojects/h2o-lightning-4b-mlx-q8"
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": "netprojects/h2o-lightning-4b-mlx-q8" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent
How to use netprojects/h2o-lightning-4b-mlx-q8 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 "netprojects/h2o-lightning-4b-mlx-q8"
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 netprojects/h2o-lightning-4b-mlx-q8
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use netprojects/h2o-lightning-4b-mlx-q8 with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "netprojects/h2o-lightning-4b-mlx-q8"
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 "netprojects/h2o-lightning-4b-mlx-q8" \ --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"
H2O-Lightning-4B โ MLX 8-bit
Built and tested on Apple M5 Max (128 GB) ยท upstream revision H2O-Lightning-4B v1.4.2 (708e939)
An 8-bit MLX conversion (affine, group size 64; mlx-vlm 0.7.8) of h2oai/h2o-lightning-4b v1.4.2 (commit 708e93926a034195d908e033fcb796c55398a6f5; the weights are unchanged since v1.4.1, so this build was not reconverted), for Apple Silicon. 4.8 GB. Supports H2O's two-way reading and Box questions.
Published by NetProjects (Internet Projects Ltd). Not affiliated with H2O.ai. Linked from H2O.ai's official model card.
This is a decision model, not a chat model. It returns a probability for each answer option (or, for a Box question, a bounding box), not free text.
Serve it with the H2O shim, not with
mlx_lm.serveror a plainmlx_vlmgenerate call. The generic "Use this model" snippets Hugging Face shows for MLX models do not return the label probabilities this model is made for. The commands below set it up with H2O's official shim, unmodified, on top of h2o-lightning-mlx, which reads the label log-probabilities with a float32 head, as the original does on vLLM.
JevBench public (231, JevBench v1.2.1, --adapter typesafe) |
two-way | one-way |
|---|---|---|
| this checkpoint | 205 / 231 (48/48 ยท 72/72 ยท 85/111) | 201 / 231 |
| original weights on MLX (bf16) | 205 / 231 | 201 / 231 |
| H2O's model card (vLLM) | 206 / 231 | 202 / 231 |
| vs bf16 on MLX | 231 / 231 answers identical; probability drift mean 0.003, p95 0.011 | 231 / 231 identical |
Within one item of H2O's own result in both modes, and the same answers as the original weights on MLX: the recommended MLX build.
Two-way reading. H2O v1.3+ answers under two attention patterns, and two-way is its recommended default. This build serves both from one engine: a request picks "attention_mode": "two-way" or "one-way", and two-way is the default. Before its first two-way answer, H2O's shim checks the engine against the answers H2O recorded on the release weights; this build matches them to within 0.014 (tolerance 0.05).
Box questions (always on since v1.4.0): ask for a bounding box of a named object in an image and get box, a calibrated confidence, present and found. The facade answers H2O's guided box generation exactly as the shim requests it. On H2O's receipt example, the box for the total-amount line has confidence 0.97.
Speed (MacBook Pro M5 Max, 27 October 2026, through serve.sh, one request at a time): about 63 ms per JevBench item; a 2,000-token record in 0.46 s two-way and 0.39 s one-way; a 32K-token state in 14.3 s two-way and 7.8 s one-way. Two-way memory grows quickly with long inputs (MLX peak 55 GB at 32K tokens, against 8.9 GB one-way): for long inputs on a Mac with less than 64 GB, use one-way.
Images. Image input works through the unchanged shim. On H2O's own receipt example this build gives the same answers as the original weights. It is not a reproduction of H2O's image benchmark.
About v1.4.1 (from H2O's card): the v1.4.0 fine-tune continued on more training data, with unchanged calibration constants; stronger on retrieval and on six task families the added data covers (including choosing a function to call), level on H2O's held-out decision skills overall. The shim now checks at start that the engine uses the training tokenizer (tokenizer/, Qwen2Tokenizer), which this build ships and the facade uses.
v1.4.2 (29 October 2026). Carries v1.4.2 (708e939): weights unchanged, new serving files (H2O's shim and serve_config.json; the matching serve.sh options are in h2o-lightning-mlx). Yes/no answers are now served without the 0.801 floor by default (H2O's routing mode is the default); PROFILE=di ./serve.sh (h2o-lightning-mlx) restores the floor and turns on H2O's Decision Index re-read (a choice or score question under 0.8 is read once more with the input written twice, 2:1 in favour of the first read). Images up to 1,638,400 pixels are read whole (was 1,048,576); larger ones are resized to that size, as on vLLM (this needs h2o-lightning-mlx at v1.4.2, whose facade now applies the shim's image size cap). A request may also give the attention mode as kwargs.attention_mode, as on H2O's hosted gateway. A client that disconnects before its answer no longer leaves an error in the server log. Checked on this build: JevBench public 205 / 231 two-way and 201 / 231 one-way, the same 231 answers as with the 28 October files (only yes/no probabilities move, by the floor change); text and Box answers identical to the 28 October files under the same floor; tokenizer contract 24 / 24; two-way probe check 0.014.
28 October 2026 revision. H2O updated v1.4.1 in place; the weights did not change, so this build was not reconverted, and it now ships the updated shim, serve_config.json and the new selector_v2.py. Over-long records are now trimmed to fit the context by BM25 selection instead of a fixed cut at 32,000 tokens, so a request never fails for length: on a 60,000-token test record with one key line in the middle, this build now answers correctly (0.97 two-way, 0.96 one-way). Image answers are read at temperature 1.0 instead of 0.65: the top answers stay the same and the confidence values are lower (receipt item count 0.92 โ 0.79 two-way, 0.94 โ 0.82 one-way). Text requests that fit the context are read exactly as before.
Limits (as for the original): mostly evaluated in English; works best with about 16 answer options or fewer; no explanations and no video input.
git clone https://github.com/internet-projects/h2o-lightning-mlx && cd h2o-lightning-mlx && ./setup.sh
hf download netprojects/h2o-lightning-4b-mlx-q8 --local-dir mlx-q8
MODEL=mlx-q8 ./serve.sh # http://127.0.0.1:8741/v1/systemone
Versions. main is H2O v1.4.2 (tag v1.4.2). The 28 October v1.4.1 files stay available with --revision v1.4.1-oct28, and the original 27 October v1.4.1 files with --revision v1.4.1-initial. Earlier builds stay available: H2O v1.4.0 (two-way, 206 / 231) with --revision v1.4.0, H2O v1.3.1 (two-way, 203 / 231) with --revision v1.3.1, and H2O v1.2.3 (one-way, 205 / 231) with --revision v1.2.3; use each with the matching tag in the GitHub repo (git checkout v1.4.0).
Full precision: use the original weights, h2oai/h2o-lightning-4b, with the same repo and shim. There is no separate bf16 copy here.
Credits: H2O.ai (H2O-Lightning-4B, Apache-2.0), Qwen team (Qwen3.5-4B, Apache-2.0). This conversion is not affiliated with H2O.ai.
More NetProjects MLX builds: NetProjects MLX builds collection ยท all models at huggingface.co/netprojects
- Downloads last month
- 910
8-bit