Instructions to use VisualInference/FLUX-3-Image-Klein-pup-MLX-8bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use VisualInference/FLUX-3-Image-Klein-pup-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("VisualInference/FLUX-3-Image-Klein-pup-MLX-8bit") config = load_config("VisualInference/FLUX-3-Image-Klein-pup-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 VisualInference/FLUX-3-Image-Klein-pup-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 "VisualInference/FLUX-3-Image-Klein-pup-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": "VisualInference/FLUX-3-Image-Klein-pup-MLX-8bit" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent
How to use VisualInference/FLUX-3-Image-Klein-pup-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 "VisualInference/FLUX-3-Image-Klein-pup-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 VisualInference/FLUX-3-Image-Klein-pup-MLX-8bit
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use VisualInference/FLUX-3-Image-Klein-pup-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 "VisualInference/FLUX-3-Image-Klein-pup-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 "VisualInference/FLUX-3-Image-Klein-pup-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"
FLUX 3 Image Klein Prompt Upsampler, MLX 8bit
FLUX 3 Image Klein Prompt Upsampler (a 9B Qwen3.5 fine-tune by Black Forest Labs), converted with mlx-vlm and quantized to 8bit. It turns a short request, edit instruction or bounding-box layout (plus up to 10 reference images) into the fully described caption FLUX 3 Image Klein works best with.
An independent community conversion, not affiliated with or endorsed by Black Forest Labs.
pip install "flux3-mlx[pup]"
flux3-mlx "a man walking with his dog, afternoon sun" --upsample 8bit
Examples
Short requests expanded by the 4-bit upsampler, then rendered with FLUX-3-Image-Klein-MLX-8bit on an M4 Pro.
Request: "a halved pomegranate on a plaster plinth, hard window light, Portra 400"
Upsampled caption (189 words, 4-bit upsampler)
Full-color indoor still-life photograph on Kodak Portra 400 film, shot straight-on at tabletop height with a medium depth of field. A halved pomegranate rests near the center of a rectangular off-white plaster plinth, its cut face turned toward the camera. The exposed interior is packed with tightly clustered ruby-red arils in cream-colored membranes, with several seeds pressed against the uneven rind and one loose aril resting beside the fruit. Its thick crimson skin has a dry burgundy edge, scattered pale speckles, and an irregular crown-shaped top where the shell was removed. Hard window light enters from the upper left, illuminating the translucent red seeds and casting a sharply defined diagonal shadow across the plinth toward the lower right. Fine scratches, shallow chips, and trowel marks break up the matte plaster surface around the fruit. Behind it, a plain warm gray wall falls into deep shade, with the bright rectangular edge of the window forming a narrow patch of light along the far left. The restrained palette combines Portra 400’s warm color response, muted cream highlights, saturated red fruit, and dense brown-gray shadows, with fine film grain across the frame.
Request: "night bus stop in the rain, CineStill 800T, one woman waiting under a red umbrella"
Upsampled caption (249 words, 4-bit upsampler)
Full-color outdoor photograph on Kodak CineStill 800T film, a night bus stop in steady rain, shot at eye level with visible fine grain and muted blue-green shadows. A single woman waits beneath a red umbrella near the center of the frame. She is an East Asian woman in her thirties with fair skin and shoulder-length black hair, wearing a dark wool coat over a cream scarf and holding a closed black handbag against her chest. The umbrella tilts toward her left shoulder as rain streaks through its translucent red canopy; water beads along the rim and drips from the pointed tip. Her face is turned toward the road, eyes fixed on the approaching lane, while one hand grips the umbrella shaft and the other rests around the handbag. On the right, a narrow bus shelter stands beside the curb, its wet glass wall reflecting the red umbrella and a dim amber lamp mounted above it. A small illuminated sign reads "BUS STOP" in white uppercase letters. In the foreground, puddles cover the dark asphalt, broken by ripples and elongated reflections from the shelter light. A few fallen leaves cling to the pavement near the woman’s boots. On the left, the empty roadway recedes into darkness, where the headlights of an approaching city bus form two pale beams through the rain, their edges smeared by motion. In the background, low apartment windows and distant streetlights dissolve into soft pools of yellow and cyan, while the upper sky remains nearly black.
Edit instruction: "remove the parked car and its shadow"
Upsampled caption (182 words, 4-bit upsampler)
Create a photograph preserving the first image exactly as the canvas, including the same wide side-on composition, fixed camera position, quiet suburban street, grassy foreground, leafy tree canopy, distant houses, and teal-green atmospheric sunlight streaming through the trees. Remove the parked dark two-door car completely, including its body, windows, wheels, chrome trim, reflections, and every visible part of the vehicle. Also remove the car’s entire cast shadow from the grass and pavement, replacing that area with a continuous natural continuation of the existing scene. Reconstruct the exposed ground as an uninterrupted stretch of green lawn meeting the same pale residential street, with the woman walking in precisely the same position, stride, scale, profile, clothing, and silhouette as in the original image. Preserve her long dark hair, sleeveless dark outfit, bare legs, and leftward walking pose without alteration. Keep the houses at frame-right, the distant parked vehicle at frame-left, the tree trunks, foliage, sunbeams, and all surrounding shadows unchanged. Blend the newly revealed lawn and road naturally into the original teal illumination, with no trace, outline, or residual shadow of the removed car.
- Size: 9.8 GB
- Speed: ~28 tok/s, 11–12 s per prompt
- Peak memory: 11–12 GB (M4 Pro)
Decoding follows BFL's reference (flux3/pup.py):
- greedy;
- presence penalty 1.5 over the whole output for text-to-image, 0 for edits;
- thinking disabled;
- the shipped
system_prompts.json(t2i,i2i,t2i_bbox,i2i_bbox).
The flux3-mlx runner applies all of this. With plain mlx-vlm, use the
system prompts and settings above.
Check against BFL's examples (4-bit):
- The text-to-image expansion of "A man walking with his dog, afternoon sun" closely follows BFL's published example.
- The
3_bandanaedit caption matches BFL's reference caption word for word for the first ~300 characters.
License: Apache-2.0, as the original (a fine-tune of Qwen3.5-9B by the Qwen team, Apache-2.0). The vision tower is kept at higher precision by mlx-vlm's default recipe.
- Downloads last month
- -
8-bit
Model tree for VisualInference/FLUX-3-Image-Klein-pup-MLX-8bit
Base model
Qwen/Qwen3.5-9B-Base

