mlx-agentBLOCK
🍏 Discover, verify, and wire local MLX-optimized models on Apple Silicon: plugins for Claude Code, Codex, Antigravity, and OpenCode, plus a portable AgentSkill.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Discover, verify, and wire local MLX-optimized models on Apple Silicon — for your coding agent.
Current package version: 0.6.0.
Provider support
First-class adapters are included for each provider below. The universal installer supports both user and project scopes.
-brightgreen.svg)
The MLX model landscape moves weekly. mlx-agent queries the HuggingFace Hub live, matches models to your machine's memory and installed runtimes, tells you which are reasoning models (so you don't put one in a fast/cheap slot), and emits the exact config to wire a pick into your ag
fe2e46f6cf6fOBSERVED · 2026-10-12Install
Commands as the repository documents them. They are shown, not run.
claude plugin install mlx-agent@mlx-agent
git clone --depth 1 --branch v0.6.0 https://github.com/cavi-ai/mlx-agent.git
git clone --depth 1 --branch v0.6.0 https://github.com/cavi-ai/mlx-agent.git
claude plugin install mlx-agent
claude plugin install mlx-agent
claude plugin install mlx-agent@mlx-agent
Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| claude-code | mentioned | |
| codex | mentioned | |
| gemini-cli | mentioned | |
| openclaw | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
name: mlx-converter
description: "Inventory local GGUF weights on this Mac — what is already converted to MLX, what is still pending, and which copies are redundant — then run confirmation-gated GGUF to MLX conversions."
homepage: https://github.com/cavi-ai/mlx-agent
license: MIT
metadata:
openclaw:
emoji: "🔁"
requires:
bins: ["python3"]
---
# mlx-converter
Turn GGUF files already on disk into MLX models, and keep the local weight
collection honest. The scan is read-only and stdlib-only; conversion is a
preview-then-confirm job that never downloads, never overwrites, and never
deletes.
## Use when
- Deciding what to convert: which local GGUFs have no MLX output yet.
- Reclaiming disk: finding byte-identical or same-quantization duplicates.
- Converting one GGUF to MLX 4bit or 8bit.
- Checking on a conversion already running.
## Run
- Inventory the well-known roots: `python3 scripts/mlx_converter.py scan`
- Specific directories: `python3 scripts/mlx_converter.py scan --gguf-root ~/models --mlx-root ~/mlx`
- Only what still needs converting: `python3 scripts/mlx_converter.py scan --pending-only`
- Machine-readable: `python3 scripts/mlx_converter.py scan --json`
- Preview a conversion: `python3 scripts/mlx_converter.py start --gguf ~/models/model-Q4_K_M.gguf --q-bits 4`
- Run the reviewed plan: `... start --gguf PATH --q-bits 4 --confirm --preview-hash HASH`
- Poll jobs: `python3 scripts/mlx_converter.py status`
`scan` needs nothing but Python. Conversion needs `mlx-lm` on PATH plus
`torch`, `transformers`, and `gguf` importable by the same interpreter; the
skill reports what is missing and never installs it for you.
## Reading the scan
Each GGUF gets a status:
- `pending` — no MLX output found. This is the convert list.
- `converted` — an MLX output exists. `evidence` says how it was matched:
`provenance` (the marker this tool wrote — exact), `receipt` (a convert
receipt), or `name` (a name match — weaker, confirm before deleting anything).
- `shard` — a non-first shard of a split model; convert the `-00001-of-` file.
- `companion` — a projector (`mmproj`) or similar sidecar. Not convertible on
its own; it belongs to a base model.
Duplicate groups come in two kinds:
- `exact` — same bytes, or same structure at the same quantization. Everything
outside `keep` is redundant and its size counts toward `reclaimable_bytes`.
- `variant` — the same model at different quantization levels. Reported so the
choice is visible, never recommended for removal.
Duplicate identity uses a size-plus-head-plus-tail signature rather than a full
digest, because full digests of multi-gigabyte weights are not worth the I/O.
Pass `--no-signature` to skip it entirely and fall back to header structure.
## Converting
Conversion is two steps in one job: `transformers` dequantizes the GGUF back to
Hugging Face weights, then `mlx_lm.convert` quantizes those to MLX. The
intermediate checkpoint is temporary and removed afterwards, but it is
full-precision — budget roughly 2x the original model's fp16 size in free disk
while the job runs.
Quality is capped by the GGUF's own quantization: a Q4 GGUF converted to MLX
4bit has been quantized twice. When the original fp16 weights are available,
convert those instead (`start --repo publisher/model`).
The job writes `mlx-converter.json` into the output directory recording which
GGUF produced it, so later scans can pair them exactly.
## Removing redundant copies
The scan only reports. Deleting is the user's call, and the file paths in
`redundant` are the exact candidates. Move rather than delete when unsure.Trust audit
BLOCKgrade F · trust 54/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (3 observation(s))
- Network
- declared (10 observation(s))
- Shell
- declared (6 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
exec(compile(tree, "<coding-probe>", "exec"), namespace)
exec(compile(tree, "<coding-probe>", "exec"), namespace)
exec(compile(tree, "<coding-probe>", "exec"), namespace)
return str(importlib.import_module(module).__version__)
port = importlib.import_module(arguments.module)
port = importlib.import_module(arguments.module)
if url.startswith("http://127.0.0.1") or url.startswith("http://localhost"):return OpenAICompatibleRuntimeClient("mlx_lm", "http://127.0.0.1:8080")return OpenAICompatibleRuntimeClient("litellm", "http://127.0.0.1:4000")OpenAICompatibleRuntimeClient("mlx_lm", "http://127.0.0.1:8080"),OpenAICompatibleRuntimeClient("litellm", "http://127.0.0.1:4000"),secret = "/private/models/customer-secret"
secret = "terminal-json-receipt-backup-secret"
"ghp_abcdefghijklmnopqrstuvwxyz123456",
"github_pat_abcdefghijklmnopqrstuvwxyz123456",
.mlx-agent-generated-files.json
.mlx-agent-generated-files.json
.mlx-agent-generated-files.json
.mlx-agent-generated-files.json
.mlx-agent-generated-files.json
modules[name] = importlib.import_module(name)
return importlib.import_module(name)
DomainIntent(domain="../../etc/passwd", roles=("vision",)),"http://169.254.169.254/latest/meta-data",
raw = bytearray(__import__("base64").b64decode(source["frames_base64"]))Gates applied: no_behavioural_pass.
fe2e46f6cf6ffull audit observations/trust-audit/skill/cavi-ai__mlx-agent.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | fe2e46f6cf6f | BLOCK | F | 54 | first audit |
Questions
What does the mlx-agent skill do?
🍏 Discover, verify, and wire local MLX-optimized models on Apple Silicon: plugins for Claude Code, Codex, Antigravity, and OpenCode, plus a portable AgentSkill.
Is mlx-agent safe to install?
No — not without reading the findings first. The audit graded it F (54/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What can mlx-agent access on my machine?
The audit observed that it reaches the network, runs shell commands and reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: found — see the findings.
What do I need installed to use mlx-agent?
Its own instructions reference mlx-lm. Dependencies are not all pinned to exact versions, so what installs today may differ tomorrow.
Which assistants does mlx-agent work with?
Its documentation mentions claude-code, codex, gemini-cli and openclaw. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (fe2e46f6cf6f), read on 2026-10-12. The repository is watched, and a new audit runs when it changes — this is the first audit.