Instructions to use junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4 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("junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4") config = load_config("junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4") # 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 junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4 with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4"
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": "junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent
How to use junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4 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 "junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4"
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 junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4 with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4"
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 "junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4" \ --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"
Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4
An abliterated (refusal-direction-ablated) 35B vision-language build of
ornith-ai/Ornith-1.5-35B-A3B, produced with
Abliterix (winning trial #17) and published by
junafinity.
Vision tower is preserved — see
Vision & MTP preservation. Converted with mlx-vlm
(-q --q-mode mxfp4 --q-group-size 32 --dtype bfloat16, 4.402 bits per weight).
This is MXFP4, not the official Ornith affine 4-bit MLX pack. It is an mlx-vlm vision checkpoint (tower inside the file). mlx-vlm drops mtp.*. For 35B native MTP use Ornith-1.5-35B-A3B-uncensored-GGUF-8bit.
Intended use: red teaming and defensive cybersecurity research
These uncensored (abliterated) weights are built as a research instrument for red teaming and defensive cybersecurity work. Safety training suppresses the display of capability, not capability itself. A refusal tells you the model declined. It does not tell you whether the weights could have complied. That conflation underestimates the true ceiling and hides holes in your filters, classifiers, and policy layer.
Use each uncensored checkpoint as the treatment half of a controlled pair against its original base model:
- Capability-ceiling measurement. Upper-bound what the weights can actually produce in a domain, independent of shipped refusals.
- Defensive-stack evaluation. Test input filters, output classifiers, prompt-injection defenses, and moderation APIs when the model itself contributes no refusals. That is how you find gaps in a defensive control plane.
- Attack-surface isolation. Automated red-team loops stall on unrelated refusals. A non-refusing target isolates the control under test (injection, tool abuse, data-exfil paths, policy bypass).
- Detection and classifier work. Generate labeled completions for training or benchmarking output-moderation and abuse-detection models.
- Interpretability of residual refusal. Abliteration is a specified edit on known language-model components. The pair (base vs this) is a clean experimental control.
Operating rules. Do not expose these weights as a public endpoint without an independent moderation layer. Abliteration removes a direction, not a policy; some refusals survive (multi-turn re-assertion, system-prompt steering, vision-path refusals). Always report the delta against the base model. Re-measure on your own prompts. Whoever deploys it owns the moderation layer the original guardrails were carrying.
Variants in this family
Hub collection: https://huggingface.co/collections/junafinity/ornith-15-uncensored-6a896c737cf40ad660af2ebd
| Model | Base | Format | Precision | Notes |
|---|---|---|---|---|
| Ornith-1.5-9B-uncensored | Ornith-1.5-9B | Safetensors (bf16) | 16-bit | Full-precision abliterated weights |
| Ornith-1.5-9B-uncensored-MLX-8bit | Ornith-1.5-9B | MLX | 8-bit | Apple Silicon, mlx-vlm |
| Ornith-1.5-9B-uncensored-GGUF-8bit | Ornith-1.5-9B | GGUF | Q8_0 | llama.cpp |
| Ornith-1.5-35B-A3B-uncensored-MLX-8bit | Ornith-1.5-35B-A3B | MLX | 8-bit | Apple Silicon, mlx-vlm |
| Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4 ← you are here | Ornith-1.5-35B-A3B | MLX | MXFP4 | Apple Silicon, mlx-vlm |
| Ornith-1.5-35B-A3B-uncensored-GGUF-8bit | Ornith-1.5-35B-A3B | GGUF | Q8_0 | llama.cpp |
Vision & MTP preservation
The vision tower and the multi-token-prediction (MTP) block are not Abliterix steering targets. The edit touches language-model attention q/k/v/o, mlp.down_proj, and fused MoE expert/router parameters. Vision and mtp.* tensors are never steered.
| Component | In this artifact |
|---|---|
| Vision tower | ✅ inside the checkpoint (mlx-vlm; preprocessor sidecars included) |
| MTP head | ❌ not carried in this format (see the format note below) |
Format note: the vision tower is carried inside the MLX checkpoint (converted with
mlx-vlm, which retains it — note thatmlx-lmwould strip it).⚠️
mlx-vlmunconditionally dropsmtp.*tensors during conversion, so this MLX build does not carry the MTP head. If you need multi-token prediction, use Ornith-1.5-35B-A3B-uncensored-GGUF-8bit, which does.
Abliteration result
| Metric | Value |
|---|---|
| Refusals on held-out harmful set | 100 → 9 / 100 (9%) |
| KL divergence from base | 0.3985 |
| Tool | Abliterix 1.12.2 |
| Optuna trials | 50 (15 warmup), seed 42 |
| Selected trial | #17 |
| Steering | per-layer attn q/k/v/o + mlp.down_proj |
| MoE expert steering | n_suppress=4, router_bias=-2.72, expert_ablation_weight=4.31 |
These figures were measured on the bf16 parent, not on this quantized checkpoint. MXFP4 is a lossier numerical transform than 8-bit. If exact numbers matter for your work, re-run the evaluation against this MLX build.
Method
- Residual-stream activations captured on harmful vs. harmless prompt sets.
- Refusal direction estimated per layer; attention and
mlp.down_projsteered. - Fused-MoE expert suppression + router bias (the path Heretic cannot touch on this architecture).
- Optuna TPE over 50 trials; trial #17 selected (9% refusals, KL 0.3985, under the 0.5 damage threshold).
Usage
Requires Apple Silicon (M-series) and mlx-vlm:
pip install mlx-vlm
# text
python -m mlx_vlm generate \
--model junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4 \
--prompt "Your prompt here" \
--max-tokens 512
# image + text
python -m mlx_vlm generate \
--model junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4 \
--prompt "Describe this image." \
--image photo.jpg \
--max-tokens 512
from mlx_vlm import load, generate
from mlx_vlm.prompt_utils import apply_chat_template
model, processor = load("junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4")
config = model.config
prompt = apply_chat_template(processor, config, "Your prompt here", num_images=0)
print(generate(model, processor, prompt, max_tokens=512, verbose=False))
LM Studio
Search junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4 and import as an MLX model. No extra projector file is required (vision is inside the repo).
⚠️
mlx-vlmdropsmtp.*during conversion. This MLX 35B build does not carry the MTP head. Use the GGUF-8bit sibling if you need MTP.
Responsible use
Primary intended use is red teaming and defensive cybersecurity research. See the section of that name above.
This model has had safety guardrails reduced or removed. Do not expose it as a public endpoint without an independent moderation layer. You are responsible for compliance with the base model's license and acceptable-use policy, applicable law, and the terms of any platform you deploy on. Removing guardrails does not remove accountability.
- Downloads last month
- 1,109
4-bit
Model tree for junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4
Base model
ornith-ai/Ornith-1.5-35B-A3B