Instructions to use junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-8bit 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-8bit 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-8bit") config = load_config("junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-8bit") # 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-8bit 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-8bit"
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-8bit" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent
How to use junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-8bit 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-8bit"
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-8bit
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-8bit 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-8bit"
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-8bit" \ --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-8bit
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-bits 8 --dtype bfloat16, 8.596 bits per weight).
This 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 ← you are here | Ornith-1.5-35B-A3B | MLX | 8-bit | Apple Silicon, mlx-vlm |
| Ornith-1.5-35B-A3B-uncensored-MLX-MXFP4 | 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. Quantization is applied after those measurements. 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-8bit \
--prompt "Your prompt here" \
--max-tokens 512
# image + text
python -m mlx_vlm generate \
--model junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-8bit \
--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-8bit")
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-8bit 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
- 2,021
8-bit
Model tree for junafinity/Ornith-1.5-35B-A3B-uncensored-MLX-8bit
Base model
ornith-ai/Ornith-1.5-35B-A3B