QW

Qwen3.9 Flash

⭐ 2,200•Python•Local Model

Alibaba's 32B MoE local agent model with native OpenAI-compatible tool-calling and 128K context, designed for 24-32GB consumer hardware.

LocalMoETool CallingOpenAI CompatibleApache 2.0Consumer Hardware

Overview

Qwen3.9 Flash is the consumer-hardware tier of the Qwen family, released October 9, 2026 (67 HN points). 32B MoE with ~8B active parameters, 128K context, native OpenAI Responses API wire format, Apache 2.0 license. First Qwen shipped with agent-ready tool-calling protocol matching the hosted Claude and GPT APIs, closing the local-first gap. INT4 quantization fits in 16GB VRAM; FP16/INT8 variants available.

Features

  • ✓32B MoE with ~8B active parameters per token
  • ✓128K context window
  • ✓Native OpenAI Responses API wire format
  • ✓Apache 2.0 license — commercial use unrestricted
  • ✓FP16/INT8/INT4 quantizations available
  • ✓Vision support built in
  • ✓BFCL 78% pass rate — competitive with Claude Haiku 4.5
  • ✓Distilled 14B and 7B variants ship in the same release
  • ✓Compatible with every major agent framework

Installation

ollama pull qwen3.9-flash # or pip install transformers and load Qwen/Qwen3.9-Flash

Pros

  • +OpenAI-compatible wire format — drop-in replacement
  • +Apache 2.0 license — commercial-friendly
  • +Fits on a 24GB consumer GPU
  • +128K context sufficient for most agent workflows
  • +Native tool-calling without adapters

Cons

  • −128K context below Opus 4.7's 2M
  • −No video understanding in this release
  • −Smaller community than GPT-5.6 or Claude
  • −Vision quality trails Gemini 3.5-Flash on specialized benchmarks

Alternatives

Documentation

Qwen3.9 Flash

Overview

Qwen3.9 Flash is the consumer-hardware tier of the Qwen model family, released October 9, 2026 (67 HN points) as Alibaba's answer to the local-first agent runtime market. The design target is unambiguous: run on a single workstation with 24–32 GB of VRAM, support agent tool-calling out of the box, and stay within a 32B parameter envelope. It's the first Qwen model shipped with an agent-ready tool-calling protocol matching the OpenAI/Anthropic style, not as a downstream adaptation.

Qwen3.9 Flash sits above the 14B consumer variants that shipped in 2025 and below the 72B/235B reasoning tiers. Its purpose is to be the "Claude Haiku replacement" for local deployments — small enough to run locally, capable enough for real agent work, fast enough to feel interactive. The release closes the last meaningful gap in Alibaba's local model story: prior Qwen releases supported structured outputs but required glue code to integrate with agent frameworks; Qwen3.9 Flash ships the same wire format as the hosted Claude and GPT APIs.

Features

  • 32B MoE architecture — ~8B active parameters per token, keeping latency on a single 24 GB GPU under 200 ms per token
  • 128K context window — long enough for most agent workflows; not 2M, but enough for full-file code review and long document QA
  • Native tool-calling — same wire format as OpenAI Responses API; framework libraries work without adapters
  • Structured output enforcement — JSON Schema and Pydantic mode; hallucination rate on schema conformance under 1%
  • Vision support — image understanding built in, matching the general-purpose multimodal tier
  • Function-calling benchmarks — 78% pass rate on BFCL (Berkeley Function Calling Leaderboard), competitive with Claude Haiku 4.5 hosted
  • License: Apache 2.0 — commercial use unrestricted; the first time a frontier-class Qwen ships under a permissive license
  • Multiple quantizations — ships FP16, INT8, and INT4 weights; INT4 fits in 16 GB VRAM with minor quality loss
  • Distillation options — 14B and 7B distilled variants ship in the same release

Installation

# Hugging Face
pip install transformers accelerate
model_id = "Qwen/Qwen3.9-Flash"

# Ollama (one-liner)
ollama pull qwen3.9-flash

# LM Studio
# Search "Qwen 3.9 Flash" in the model browser

# vLLM (serving)
docker pull vllm/vllm:latest
vllm serve Qwen/Qwen3.9-Flash --max-model-len 128000

Quick Start

from openai import OpenAI

# Point any OpenAI-compatible client at a local Qwen3.9 Flash server
client = OpenAI(base_url="http://localhost:8000/v1", api_key="local")

response = client.responses.create(
    model="Qwen3.9-Flash",
    input="Review this function for bugs",
    tools=[{
        "type": "function",
        "name": "read_file",
        "parameters": {"type": "object", "properties": {"path": {"type": "string"}}},
    }],
)

Because the wire format is OpenAI-compatible, every agent framework that talks to GPT-5.6 can talk to Qwen3.9 Flash unchanged — Claude Code, OpenAI Agents SDK, LangGraph, CrewAI, PydanticAI.

Core Concepts

The MoE Design Tradeoff

Qwen3.9 Flash is a 32B-parameter mixture-of-experts model with ~8B active parameters per token. This is the same design philosophy as Mixtral and DeepSeek: sparse activation keeps latency in the local range while total parameter count enables frontier-tier quality on reasoning and code. The tradeoff is total memory — the full 32B weight set is resident, but only a fraction is active per token.

Tool-Calling Wire Format

The release's most impactful change is not architectural; it's the wire format. Prior Qwen releases emitted tool calls in a custom <function_call>...</function_call> XML tag. Qwen3.9 Flash emits tool calls in the OpenAI Responses API format — a structured JSON object with a function_call block. Every downstream framework now treats Qwen as a drop-in replacement for GPT-5.6 in agent frameworks, without framework-specific adapters.

Vision Support

Vision is built in, not bolted on. The same model accepts text and image inputs; image understanding quality is on par with the general-purpose Gemini 3.5-Flash tier. Video understanding is not in the initial release — that's expected in Qwen3.10.

Advanced Features

  • Batch inference — batch_size parameter for serving multiple prompts on a single GPU
  • Streaming responses — SSE streaming supported out of the box
  • Prompt caching — compatible with prefix-caching libraries (vLLM's automatic prefix caching)
  • Reasoning mode — thinking_budget parameter controls reasoning depth, similar to Claude
  • Custom function schemas — support for JSON Schema draft 2020-12 in tool definitions

Deployment

Ollama

ollama run qwen3.9-flash

Interactive terminal; agents can connect via http://localhost:11434/v1.

vLLM Serving

vllm serve Qwen/Qwen3.9-Flash \
  --max-model-len 128000 \
  --tensor-parallel-size 1 \
  --enable-auto-tool-choice

TGI

docker run -p 8080:8080 ghcr.io/huggingface/text-generation-inference:latest \
  --model-id Qwen/Qwen3.9-Flash \
  --max-input-length 128000

Agent Framework Integration

Every major agent framework now lists Qwen3.9 Flash as a supported local model:

  • LangGraph — init_chat_model("qwen3.9-flash:latest", model_provider="ollama")
  • CrewAI — LLM(model="ollama/qwen3.9-flash")
  • PydanticAI — ModelSettings(model="ollama/qwen3.9-flash")
  • OpenAI Agents SDK — via OpenAI(base_url="http://localhost:11434/v1")
  • Claude Code — via claude --model ollama/qwen3.9-flash (with custom provider config)

Examples

A local agent with Qwen3.9 Flash:

from pydantic_ai import Agent
from pydantic import BaseModel

class Plan(BaseModel):
    steps: list[str]

agent = Agent("ollama/qwen3.9-flash", output_type=Plan)

result = await agent.run("Break down this task into 5 steps: ship a MCP server")
print(result.data.steps)

Structured output at scale:

# Schema-validated extraction from 10,000 customer emails
# Locally, ~4 hours on a single RTX 4090

Pros

  • OpenAI-compatible wire format; drop-in replacement in every major agent framework
  • Apache 2.0 license — commercial-friendly
  • 32B MoE fits on a 24 GB consumer GPU
  • 128K context is enough for most agent workflows
  • Native tool-calling support without adapters
  • INT4 quantization fits in 16 GB VRAM

Cons

  • 128K context is well below Claude Opus 4.7's 2M; not suitable for full-corpus RAG replacement
  • No video understanding in this release
  • Smaller community than GPT-5.6 or Claude Opus for edge-case debugging
  • Vision quality trails the Gemini 3.5-Flash tier on specialized benchmarks

When to Use

  • Local-first agent deployments where hosted model APIs are not an option
  • Regulated environments where data residency matters
  • High-volume batch inference where per-token cost on hosted APIs is prohibitive
  • Teams that want agent-framework portability across hosted and local models

Resources