v0.6.0 — local inference available

Keep the harness.
Change the model.

Run MLX models on your Mac today. Give every coding agent one local endpoint for local and approved remote models.

$uv tool install ppmlx Copied
View the source
Local MLX: available Routing contract: accepted
http://localhost:6767 local

Harness input

Claude CodeCodexOpenCodePi
Available now Local MLX models qwen3.5:9b
Remote opt-in Approved providers policy + account

One local endpoint. Native protocol at each edge.

One switchboard under every coding agent.

A harness keeps its native protocol. ppmlx selects an approved model, preserves tool meaning, and returns the expected response shape.

Input

Keep the harness

Claude Code, Codex, OpenCode, and Pi keep their own request format.

Messages · Responses · Chat
ppmlx

Normalize and route

The policy checks tools, privacy, health, account, and fallback rules.

Agent IR · route policy
Output

Use the selected model

A local MLX model or an approved provider answers the request.

local first · remote opt-in
Contract accepted Runtime support follows exact replay tests.

No silent tool repair. No credential reuse from another app. No fallback after output starts.

Read the decisions →

Five commands, zero config

Every workflow fits in one command. See the real CLI in action.

One command starts a coding agent on your local GPU. No API keys, cloud costs, or network delay.

Pick from 5 agent launchers: Claude Code, Codex, OpenCode, Pi — or start a plain chat.

Model picker built in. Select, launch, code. Under 10 seconds from cold start.

Connect any OpenAI-compatible tool to localhost:6767.

Supports Chat Completions, Responses API, Anthropic Messages — one server, every protocol.

Change models without a restart. The LRU cache keeps your most-used models in memory.

168+ models from the curated MLX registry. Clear aliases and weights optimized for Apple Silicon.

Select several models and download them in one action.

Models are stored locally in ~/.ppmlx/models. No Docker, no containers, no overhead.

ppmlx downloads a missing model when you first use it. Type the name and start a chat.

Streaming REPL with token stats, timing, and slash commands built in.

Change models during a session with /model. You do not need to restart.

Bring any HuggingFace model. Convert to MLX format and quantize to 4-bit in one step.

69% smaller models with minimal quality loss. Fits large models in unified memory.

Run your quantized model immediately. You do not need extra setup or config files.

ppmlx launch
$
TUI launcher — pick action & model, launch in one step

Numbers don't lie

MacBook Pro M4 Pro, 48 GB. Same prompts, 3 runs averaged. All models 4-bit quantized.

ppmlx (MLX native) Ollama (GGUF)
Time To First Token
MacBook Pro M4 Pro · 48 GB| 3 runs averaged · ± std dev| Reproduce →

Local inference is still the foundation.

Install one Python package. Run the server on your Mac. Connect through the protocol that your tool expects.

Local MLX inference

Run quantized language models on Apple Silicon with native MLX execution.

Three agent protocols

Use Chat Completions, Responses, or Anthropic Messages with one local server.

Local tool calls

Stream tool calls to Codex, Claude Code, OpenCode, and other compatible clients.

Vision and embeddings

Use local images and vectors through optional MLX packages and the same server.

168+ model aliases

Select Llama, Qwen, Mistral, Phi, Gemma, DeepSeek, and other curated MLX models.

Experimental memory

Capture scoped events locally. Inspect the graph through CLI and MCP tools.

Local model access for Claude Code · Codex · OpenCode · Pi · Open WebUI · OpenAI SDKs
One policy layer for remote providers · model normalization · read grants — see the issues →

Memory should be read, not injected.

ppmlx can capture scoped events in a local temporal graph. It does not add hidden memory to every prompt.

Available Local capture, search, graph tools, and MCP server
Read grant A user-added read skill with explicit tools and project scope

The harness decides when memory can help. ppmlx enforces the read grant.

Start local.
Keep your options open.

Run MLX models now. Follow the switchboard work in public.

$uv tool install ppmlx Copied
Follow on GitHub