You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: Thorough README audit and rewrite for v6.3.0 accuracy
Fixed inaccuracies:
- Removed "No IDE integration" — Xcode Source Editor Extension ships in v6.3.0
- Removed "No internet access" — GitHub tool calls GitHub API
- Removed stale Python Import Validation security bullet (Python is gone)
- Removed stale cloud AI credential storage section (AIBackendManager deleted)
- Opening line updated: "no cloud inference" not "no API keys" (GitHub API exists)
Improved content:
- Features section now has dedicated Xcode Integration section covering both
the chat tools AND the Source Editor Extension
- GitHub Integration gets its own section
- Architecture diagram expanded with Views layer and XcodeActionHandler
- Key design decisions updated (Jinja fallback, extension communication)
- Security section rewritten to be accurate: no Python, no cloud AI, GitHub-only network
- What It Doesn't Do: replaced IDE integration item with accurate extension caveat
- Version history consolidated and cleaned up
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+75-92Lines changed: 75 additions & 92 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,13 +6,13 @@
6
6
7
7
**Local AI coding assistant for macOS, powered by Apple MLX (Machine Learning eXtensions).**
8
8
9
-
MLX Code runs language models directly on your Mac using Apple Silicon. No cloud, no API keys, no subscriptions. Your code stays on your machine.
9
+
MLX Code runs language models directly on your Mac using Apple Silicon. No cloud inference, no subscriptions, no data leaving your machine. Integrates directly into Xcode via a Source Editor Extension.
10
10
11
11
---
12
12
13
13
## What It Does
14
14
15
-
MLX Code is a chat-based coding assistant with tool calling. You describe what you need, and the model reads files, searches code, runs commands, and builds your project — all locally.
15
+
MLX Code is a chat-based coding assistant with tool calling and Xcode integration. You describe what you need, and the model reads files, searches code, runs commands, and builds your project — all locally.
16
16
17
17
**14 built-in tools:**
18
18
@@ -24,7 +24,7 @@ MLX Code is a chat-based coding assistant with tool calling. You describe what y
24
24
|**Glob**| Find files by pattern |
25
25
|**Xcode**| Build, test, clean, archive, full deploy pipeline |
- Chat templates applied natively by `mlx-swift-lm` tokenizer — no Python required for inference
192
+
- Inference via `mlx-swift-lm` Swift framework — no Python required
193
+
- Chat templates applied natively by the tokenizer; falls back to flat format for unsupported models
169
194
- Tool prompt is ~500 tokens (not 4000) — leaves room for actual conversation
170
-
- Context budget system allocates tokens: system prompt, messages, project context, output reservation
195
+
- Context budget system allocates tokens: system prompt, messages, project context, output
171
196
- Two tool tiers: core (always available) and development (when project is open)
172
197
- User memories injected at runtime from AppSettings — no personal data in source code
198
+
- Xcode extension communicates via shared App Group container + `mlxcode://` URL scheme
173
199
174
200
---
175
201
176
202
## Security
177
203
178
204
### Shell Execution Safety
179
205
-**Command Validation**: All bash commands pass through `CommandValidator` with regex word-boundary matching before execution, blocking dangerous patterns (rm -rf /, fork bombs, etc.)
180
-
-**Python Import Validation (v6.1.0)**: Regex-based validation with comment filtering prevents bypass via inline comments
181
-
-**No Shell Interpolation**: Git and build tools use `process.currentDirectoryURL` instead of `cd` string interpolation, preventing directory traversal and injection attacks
206
+
-**No Shell Interpolation**: Git and build tools use `process.currentDirectoryURL` instead of string interpolation, preventing directory traversal and injection attacks
182
207
-**Tool Approval Flow**: Write and execute tools (bash, file write, xcode build) require user confirmation before running
183
208
-**Read-Only Auto-Approve**: Only safe, read-only tools (grep, glob, file read) auto-approve without user interaction
184
-
-**Permission Checks (v6.1.0)**: File permission validation before script execution in CommandValidator
185
-
186
-
### Credential Security (v6.1.0)
187
-
-**macOS Keychain Storage**: All API keys (OpenAI, Anthropic, Google, AWS, Azure, IBM) stored in macOS Keychain using `SecItemAdd`/`SecItemCopyMatching`
188
-
-**Automatic Migration**: Existing UserDefaults-stored keys automatically migrated to Keychain on first launch
189
-
-**No Plaintext Secrets**: Non-secret config only (region, model names) stored in UserDefaults
190
-
191
-
### Model Security (v6.1.0)
192
-
-**SHA256 Hash Verification**: Downloaded models verified against expected hashes using CryptoKit
193
-
-**Secure Logging**: All debug output routed through `SecureLogger` instead of `print()` — no sensitive data in console
194
209
195
210
### Data Privacy
196
-
-**100% Local**: All model inference runs on-device via Apple MLX -- no data leaves your machine
197
-
-**No Telemetry**: No analytics, crash reporting, or usage tracking
198
-
-**No API Keys Required**: No cloud services, no subscriptions, no accounts
199
-
-**Local Memory Storage**: User memories stored in `~/.mlxcode/memories.json`, never transmitted
211
+
-**100% Local Inference**: All model inference runs on-device via Apple MLX — no prompts or responses leave your machine
212
+
-**No Telemetry**: No analytics, crash reporting, or usage tracking of any kind
213
+
-**No Cloud AI**: No OpenAI, Anthropic, or other cloud AI services — the model runs on your GPU
214
+
-**GitHub API only**: The only external network calls are to the GitHub API (via the GitHub tool), which you explicitly invoke
215
+
-**Local Memory Storage**: User memories stored locally, never transmitted
200
216
201
217
### Thread Safety
202
218
-**Actor isolation**: `MLXService` is a Swift actor — all model state is automatically serialized
@@ -209,98 +225,65 @@ MLX Code (SwiftUI)
209
225
210
226
-**Deeper Xcode integration** — write responses back into the editor buffer without switching apps
211
227
-**Structured output** — grammar-constrained generation to guarantee well-formed tool calls from smaller models
212
-
-**Streaming progress UI** — real-time download progress bar for model downloads
228
+
-**Streaming download progress** — real-time progress bar for model downloads
213
229
214
230
---
215
231
216
232
## What It Doesn't Do
217
233
218
234
Being honest about limitations:
219
235
220
-
-**No web browsing** — can't fetch arbitrary URLs or browse the internet (GitHub API is the exception)
236
+
-**No web browsing** — can't fetch arbitrary URLs or browse the internet
221
237
-**No image/video/audio generation** — this is a code assistant, not a media tool
222
238
-**Small model constraints** — 3-14B parameter models make mistakes, especially with complex multi-step reasoning
223
-
-**No IDE integration** — standalone app, not an Xcode plugin (yet)
224
-
-**Tool calling is imperfect** — local models sometimes format tool calls incorrectly
239
+
-**Tool calling is imperfect** — local models sometimes format tool calls incorrectly (auto-retry helps but isn't perfect)
240
+
-**Extension requires app switch** — the Xcode extension opens MLX Code in a separate window rather than responding inline
225
241
226
242
---
227
243
228
244
## Version History
229
245
230
246
### v6.3.0 (March 4, 2026) — Current
231
-
-**Xcode Source Editor Extension** — 5 commands in Editor > MLX Code menu (Explain, Refactor, Generate Tests, Fix Issues, Ask). Communicates with main app via shared App Group + `mlxcode://` URL scheme
232
-
-**Native model downloads** — replaced Python `huggingface_downloader.py` with `Hub.HubApi.snapshot()`. Python fully eliminated from the app
247
+
-**Xcode Source Editor Extension** — 5 commands in Editor > MLX Code menu (Explain, Refactor, Generate Tests, Fix Issues, Ask). Communicates via shared App Group + `mlxcode://` URL scheme
248
+
-**Native model downloads** — replaced Python downloader with `Hub.HubApi.snapshot()`. Python fully eliminated
233
249
-**Syntax highlighting** — Swift, Python, JS/TS, Bash, JSON, Objective-C in all code blocks
234
-
-**Collapsed tool calls** — raw `<tool>` assistant messages now show as a compact chip; expand to inspect
250
+
-**Collapsed tool calls** — raw `<tool>` assistant messages show as a compact chip; expand to inspect
235
251
-**Accurate context bar** — syncs to model's actual context window on load; tracks conversation totals
236
252
-**Resume generation** — Continue button on last assistant message after stopping
-**Default temperature 0.2** — reduced from 0.7 to cut hallucinations in code analysis
239
-
-**Jinja template fallback** — models with unsupported chat templates (e.g. Mistral 7B) now fall back gracefully to flat prompt format instead of crashing
255
+
-**Jinja template fallback** — models with unsupported chat templates fall back to flat prompt format
240
256
241
257
### v6.2.0 (March 4, 2026)
242
-
**Native MLX Swift — Python dependency eliminated for inference**
243
-
244
-
- Replaced Python subprocess daemon (`mlx_daemon.py`) with native `mlx-swift-lm` framework
245
-
- Model loading now uses `LLMModelFactory` + `ModelContainer` directly in Swift — no Python process
246
-
- Chat generation uses `MLXLMCommon.UserInput` + `AsyncStream<Generation>` for streaming
0 commit comments