Reference · rapid-mlx 0.16.2 · ← Back to README

Integration matrix

Which agents and frameworks work with which model families, tested end to end. To connect one, use its agent guide — every supported agent has a one-line setup command (rapid-mlx agents <name> --setup).

How to read the results. Every ✅ cell booted a real rapid-mlx serve, made a real tool call (or a real file edit for the CLI agents) and checked the outcome, not just that the API answered. The cells below were last run on rapid-mlx 0.11.3 (Mac Studio M3 Ultra, 2026-07-28) with an independent re-run on 0.11.5 (Mac mini M2 Pro 32 GB, 2026-08-01). Results for the current release with real agent binaries are on the agent guides page.

Agent tiers

For local Goose and Crush setup, see the Goose and Crush guides. They are outside the historical family matrix below; this table does not claim results for them.

TIER-1 claude-code (/v1/messages) · codex-cli (/v1/responses) · hermes · aider · deepseek-harness (/v1/chat/completions). Tier-1 agents are exercised end to end on real weights before each release, have a first-class --setup and a maintained guide.

TIER-2 cursor (IDE chat only; its agent path runs on Cursor's backend) · opencode · qwen-code · openhands · kilo-code · copilot · droid · kimi-code · gpt-oss (raw SDK) · and the three frameworks. These are covered by wire-level smoke tests and on-demand runs.

Results at a glance

60 cells run → 49 PASS · 11 XFAIL · 0 FAIL on the M3 Ultra run. Every XFAIL has a documented root cause (10 architectural, 1 upstream format gap). The M2 Pro re-run on 0.11.5 gave 43 PASS · 12 skipped · 1 XFAIL · 0 FAIL: the skips were OpenHands without a Docker daemon (4) and the DeepSeek R1-Distill model declining to emit tool calls (8), and it used the 4- and 8-bit aliases a 32 GB machine can hold (qwen3.5-9b-4bit, gemma-4-12b-4bit, gpt-oss-20b-mxfp4-q8, deepseek-r1-32b-4bit).

The suite also has Hunyuan 3 (Hy3) and Muse Glimmer columns, not shown here: Hy3 needs a 192 GB+ Mac and runs only in the weekly large-Mac job, and the Muse cells were not part of the runs above.

Cheap-alias policy

Each family column boots one representative alias — the smallest that still exercises the family's tool-call and reasoning parsers:

FamilyBoot aliasWhy this alias
Qwen 3.6 qwen3.6-35b-8bit (MoE, 3 B active) The Qwen3.6 flagship MoE.
Gemma 4 gemma-4-31b-4bit (dense) Dense Gemma 4, text-only path.
DeepSeek deepseek-r1-32b-4bit (R1-distilled Qwen 32B) About 16 GB; exercises the DeepSeek reasoning parser. Every V4-Flash build needs a 192–256 GB Mac, so it is not in the matrix.
gpt-oss gpt-oss-120b-mxfp4-q8 (MoE) Harmony tool and reasoning parsers.

Agent × Family matrix

11 agents × 4 families = 44 cells. ✅ = passed; XFAIL = a known, root-caused failure (see below).

Pi has a local setup and test harness, but is not yet a family cell in this matrix.

Agent Qwen 3.6 Gemma 4 DeepSeek gpt-oss
codex-cli T1 /v1/responses ✅✅✅✅
claude-code T1 /v1/messages · 5-min guide ✅✅✅✅
opencode ✅✅XFAIL (arch)✅
qwen-code ✅✅XFAIL (arch)✅
openhands pinned 0.9.0 Docker E2E ✅✅✅XFAIL (format)
hermes-agent T1 ✅✅XFAIL (arch)✅
aider T1 real bash-CLI harness ✅✅✅✅
kilo-code ✅✅XFAIL (arch)✅
deepseek-harness T1 ✅✅XFAIL (arch)✅
copilot wire smoke ✅✅XFAIL (arch)✅
droid wire smoke ✅✅XFAIL (arch)✅
kimi-code wire smoke ✅✅XFAIL (arch)✅

Cline and Continue have setup guides. They have no dedicated family matrix rows here.

Framework × Family matrix

3 frameworks × 4 families = 12 cells.

Framework Qwen 3.6 Gemma 4 DeepSeek gpt-oss
LangChain + LangGraph ✅✅XFAIL (arch)✅
PydanticAI ✅✅XFAIL (arch)✅
smolagents ✅✅✅✅

Why the XFAIL cells fail

XFAIL (arch) — DeepSeek R1-Distill does not emit tool calls

The DeepSeek column boots deepseek-r1-32b-4bit, a reasoning distill of Qwen 32B. R1's post-training was reasoning-only (arXiv 2501.12948 §2.3.3), and the distill lost the base model's tool-calling: it answers "I cannot provide the current weather in Tokyo as I cannot access the get_weather tool." deterministically at 4-bit and 8-bit. It is a model limit, not a parser bug — the cells that do not need OpenAI tool_calls (Codex CLI, Claude Code, smolagents' code execution, and Aider / OpenHands, which parse text actions) pass on the same server.

XFAIL (format) — gpt-oss with OpenHands

gpt-oss's native Harmony output never emits the <execute_bash> / <execute_ipython> text-action tags that OpenHands' CodeActAgent parses, so this one cell fails on the OpenHands side — tracked upstream at All-Hands-AI/OpenHands #15167.

Reproduce locally

From an engine checkout, boot one family's alias, then run its shard:

$ rapid-mlx serve qwen3.6-35b-8bit

# strict, one family per booted server (the intended workflow)
$ RAPID_MLX_MATRIX_STRICT=1 RAPID_MLX_AGENT_MATRIX_FAMILY=qwen36 \
    pytest tests/integrations/test_agents_matrix.py

Or test one agent against your own running server: rapid-mlx agents <name> --test.

Environment overrides

VariableDefaultPurpose
RAPID_MLX_BASE_URLhttp://localhost:8000/v1Where matrix clients point.
RAPID_MLX_AGENT_MATRIX_FAMILY(all)Restrict to qwen36 / gemma4 / deepseek / gptoss / hy3 / muse.
RAPID_MLX_MATRIX_STRICT0If 1, a missing server fails instead of skipping.

Next steps