Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,61 @@ recompiling. A breaking change waits for 2.0. (Before RC.1, `1.0.0-beta.N` and e
beta.4 → RC.1 changes that can break a build are listed under *Changed — breaking (pre-GA)* in the
RC.1 entry, and each entry's own "Beta caveats" apply to the betas.)

## 2.2.0 — GA — 2026-10-22

Nemotron 3.5 support in `LocalLMLabSDKInference`; no API change (the public surface is identical to
2.1.0's).

### Added

- **Nemotron 3.5 runs locally.** The MLX runtime reads Nemotron 3.5's configuration
(`layers_block_type` / `block_configs` instead of a `hybrid_override_pattern` string), adds its latent
MoE layers, registers `nemotron_h_puzzle` (the Bolt models), and skips the multi-token-prediction
weights it doesn't use. Before, `NVIDIA-Nemotron-3.5-Lightning-30B-A3B` failed to load. Tested with
tools, including the GitHub MCP server:
- `mlx-community/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-4bit` and `-8bit`
- `rapid-mlx/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-MLX-3bit`
- `rapid-mlx/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-MLX-3bit` (text only, despite the name)

Bolt builds that take images (`nemotron_h_omni`, `nemotron_h_nano_omni`) still don't load, and
neither does a conversion with per-layer quantization settings (`hermitdave/…-mixed36`).

### Fixed

- **`SessionOptions(effort: .off)` turns Nemotron's thinking off.** Before, Nemotron ignored it and
always reasoned. The model now declares its reasoning toggle (`enable_thinking`), so
`ModelCapabilities.reasoningToggle` reports it too.
- **A reply from a model whose prompt opens `<think>` now has a balanced reasoning block.** Nemotron
3.5's and Qwen3.5's chat templates open `<think>` in the prompt, so the model's reply streamed only
`…</think>answer`, and the reasoning landed in the answer. The SDK now detects this on each model
call from the end of the rendered prompt and restores the opening `<think>`, so `hostTranscript`
splits the reasoning from the reply with no model-specific handling. A tool call made while that
block is still open gets a `</think>` first. Tool-call parsing is unchanged.

### Changed

- **`LocalLMLabSDKInference`'s MLX runtime pin moves from `30d755c` to `dea880a`**: 2.1.0's runtime plus
two Nemotron 3.5 commits of ours, on the `nemotron-3.5-support` branch of our mirror fork,
`ancientcomputing/mlx-swift-lm` (tag `locallmlab-sdk-pin-dea880a`). Nothing else in the runtime
changes.

### Known issues

- **Qwen3.5-9B's tool calls are often rejected as malformed.** This predates 2.2.0.
- **Nemotron 3.5 can run a tool call it writes inside its reasoning.** Seen only when the prompt asks
for call markup while thinking.

### Checksums (SHA-256)

```
LocalLMLabSDKCore-2.2.0-GA.xcframework.zip 5efc40cae9f8a1bf53bfe03195c5365398bc9501b3e6b0feee3e5c67385537f4
LocalLMLabSDKClaude-2.2.0-GA.xcframework.zip 07e2ff01accf582f71fecab254bdae2e8fb46acc8296ef6ab1c8d84cd9e97a04
LocalLMLabSDKInference-2.2.0-GA.xcframework.zip afd427fb741a820f55bc0a384850ae6404608f5ad73d185a583a89e8f0d61a61
LocalLMLabSDKRemote-2.2.0-GA.xcframework.zip 1c9af025c700bc0c41c80387c1d6a59ba2f2ab6203eb8ffd8548d61c6ac1fe38
```

---

## 2.1.0 — GA — 2026-10-15

Fixes and a newer MLX runtime; no API change (the public surface is identical to 2.0.0's).
Expand Down
10 changes: 5 additions & 5 deletions Components/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,17 @@ struct SDKRelease {
// or edit `defaultSDKVersion`. For a release not listed, add its entry (URL follows the pattern
// below; checksum is the `.sha256` next to the zip on that GitHub release). Keep this in step
// with `examples/model-switch/Package.swift`, which consumes Core through this package.
let defaultSDKVersion = "2.1.0-GA"
let defaultSDKVersion = "2.2.0-GA"

let knownSDKReleases: [String: SDKRelease] = [
"2.0.0-GA": SDKRelease(
url: "https://github.com/ancientcomputing/locallm/releases/download/v2.0.0-GA/LocalLMLabSDKCore-2.0.0-GA.xcframework.zip",
checksum: "5f9418a6879b22227afdf867cf474d426b93ae36d783d5a958efaae1e347681b"
),
"2.1.0-GA": SDKRelease(
url: "https://github.com/ancientcomputing/locallm/releases/download/v2.1.0-GA/LocalLMLabSDKCore-2.1.0-GA.xcframework.zip",
checksum: "8d541e06f81d1586c959d6159a259c759853c88b2c68385ab28de493af6c5776"
),
"2.2.0-GA": SDKRelease(
url: "https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLMLabSDKCore-2.2.0-GA.xcframework.zip",
checksum: "5efc40cae9f8a1bf53bfe03195c5365398bc9501b3e6b0feee3e5c67385537f4"
),
]

func failManifest(_ message: String) -> Never {
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ doesn't carry.

**Product page:** [thisbrain.ai/locallm](https://thisbrain.ai/locallm) — or
get the app directly:
[LocalLM Lab 2.1.0-GA (arm64 DMG)](https://github.com/ancientcomputing/locallm/releases/download/v2.1.0-GA/LocalLM.Lab-2.1.0-GA-arm64.dmg).
[LocalLM Lab 2.2.0-GA (arm64 DMG)](https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLM.Lab-2.2.0-GA-arm64.dmg).

## LocalLM Lab SDK

Expand Down
2 changes: 1 addition & 1 deletion docs/api-surface.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> Machine-generated by `scripts/dump-public-api.sh` from the built `.swiftinterface`s.
> Do not hand-edit. `sdk-guide.md` §12 is the *narrative* reference; this is the check.
> SDK version: `"2.1.0"` (the published `v2.1.0-GA` xcframeworks, re-published 2026-10-17 from 8e5d287) · generated 2026-10-17T13:38Z
> SDK version: `"2.2.0"` (the published `v2.2.0-GA` xcframeworks, built from dd96469) · generated 2026-10-22T20:25Z

## LocalLMLabSDKCore

Expand Down
2 changes: 1 addition & 1 deletion docs/sdk-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ below for the working reference apps this guide is drawn from.

Requires macOS 26+ on Apple Silicon, Swift 6 tools.

**Status note**: this guide describes the API as of `2.1.0`. `2.0.0` was a one-time breaking release;
**Status note**: this guide describes the API as of `2.2.0`. `2.0.0` was a one-time breaking release;
every 2.x release after it is source compatible with it (see [§9](#9-scope-and-boundaries-what-core-doesnt-do)
for the compatibility policy). Coming from 1.x: [`migrating-to-2.0.md`](migrating-to-2.0.md); from
`0.8.x`: [`migrating-to-1.0.md`](migrating-to-1.0.md) first. New in 2.0: per-server trust and tool
Expand Down
18 changes: 9 additions & 9 deletions examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ advanced model-layer features (Private Cloud Compute, open-weight/MLX, Claude, o
need it — but it isn't universal: [`os-matrix/`](os-matrix/) is built and tested to run unchanged
on **macOS 26** too (see its README).

The examples on this `2.1.0-GA` branch build against SDK **`2.1.0-GA`**; the ones on `main`
The examples on this `2.2.0-GA` branch build against SDK **`2.2.0-GA`**; the ones on `main`
build against the latest stable release. No environment variable is needed for either.

### What each example needs
Expand Down Expand Up @@ -158,7 +158,7 @@ resolution doesn't inherit shell environment variables.

```bash
cd examples/repo-qa
LOCALLM_SDK_VERSION=2.0.0-GA \
LOCALLM_SDK_VERSION=2.1.0-GA \
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
swift run RepoQA facebook/react
```
Expand All @@ -171,13 +171,13 @@ previous one. (`code-buddy/sample-workspace/Package.swift` is not one of these
dependency-free fixture for the code-buddy walkthrough, not an SDK consumer.)

```swift
let defaultSDKVersion = "2.1.0-GA"
let defaultSDKVersion = "2.2.0-GA"

let knownSDKReleases: [String: SDKRelease] = [
"2.0.0-GA": SDKRelease(url: "…/v2.0.0-GA/LocalLMLabSDKCore-2.0.0-GA.xcframework.zip",
checksum: "5f9418a6…"),
"2.1.0-GA": SDKRelease(url: "…/v2.1.0-GA/LocalLMLabSDKCore-2.1.0-GA.xcframework.zip",
checksum: "8d541e06…"),
"2.2.0-GA": SDKRelease(url: "…/v2.2.0-GA/LocalLMLabSDKCore-2.2.0-GA.xcframework.zip",
checksum: "5efc40ca…"),
]
```

Expand All @@ -188,10 +188,10 @@ every module ships its own checksum (`Core`, `Inference`, `Remote`, and `Claude`
distinct `.xcframework.zip.sha256`; don't reuse Core's for another module):

```bash
curl -sL https://github.com/ancientcomputing/locallm/releases/download/v2.1.0-GA/LocalLMLabSDKCore-2.1.0-GA.xcframework.zip.sha256
# → 8d541e06f81d1586c959d6159a259c759853c88b2c68385ab28de493af6c5776
curl -sL https://github.com/ancientcomputing/locallm/releases/download/v2.1.0-GA/LocalLMLabSDKClaude-2.1.0-GA.xcframework.zip.sha256
# → f54472c25063f7c6d6d5a49a91992beb1300d9b6d986ee83d41e682ac2a2c172
curl -sL https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLMLabSDKCore-2.2.0-GA.xcframework.zip.sha256
# → 5efc40cae9f8a1bf53bfe03195c5365398bc9501b3e6b0feee3e5c67385537f4
curl -sL https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLMLabSDKClaude-2.2.0-GA.xcframework.zip.sha256
# → 07e2ff01accf582f71fecab254bdae2e8fb46acc8296ef6ab1c8d84cd9e97a04
```

Then point `defaultSDKVersion` at it (works everywhere, Xcode included) or pass
Expand Down
14 changes: 7 additions & 7 deletions examples/aiql/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,21 @@ struct SDKRelease {
// uses. `knownSDKReleases` carries this plus the previous release. Build against another
// published version: set LOCALLM_SDK_VERSION in your shell (works for `swift build` / CI, NOT
// inside Xcode), or edit `defaultSDKVersion` here.
let defaultSDKVersion = "2.1.0-GA"
let defaultSDKVersion = "2.2.0-GA"

let knownSDKReleases: [String: SDKRelease] = [
"2.0.0-GA": SDKRelease(
coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.0.0-GA/LocalLMLabSDKCore-2.0.0-GA.xcframework.zip",
coreChecksum: "5f9418a6879b22227afdf867cf474d426b93ae36d783d5a958efaae1e347681b",
inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.0.0-GA/LocalLMLabSDKInference-2.0.0-GA.xcframework.zip",
inferenceChecksum: "d2ed4a02686aceab0edf4231ede55c924ea3ab273c7c5cab0bb02f4bda40a185"
),
"2.1.0-GA": SDKRelease(
coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.1.0-GA/LocalLMLabSDKCore-2.1.0-GA.xcframework.zip",
coreChecksum: "8d541e06f81d1586c959d6159a259c759853c88b2c68385ab28de493af6c5776",
inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.1.0-GA/LocalLMLabSDKInference-2.1.0-GA.xcframework.zip",
inferenceChecksum: "77d3d1a1bae9df6de5955dfa945242c177cb129b4896c95befb81db6c923656f"
),
"2.2.0-GA": SDKRelease(
coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLMLabSDKCore-2.2.0-GA.xcframework.zip",
coreChecksum: "5efc40cae9f8a1bf53bfe03195c5365398bc9501b3e6b0feee3e5c67385537f4",
inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLMLabSDKInference-2.2.0-GA.xcframework.zip",
inferenceChecksum: "afd427fb741a820f55bc0a384850ae6404608f5ad73d185a583a89e8f0d61a61"
),
]

func failManifest(_ message: String) -> Never {
Expand Down
2 changes: 1 addition & 1 deletion examples/aiql/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
```

Skip it if `xcode-select -p` already points at Xcode 27 (adjust the path if yours lives elsewhere). Leaves your system default alone; lasts only for the current terminal (re-run it in each new one,
or add it to your `~/.zshrc`). `Package.swift` builds against SDK `2.1.0-GA` with no further
or add it to your `~/.zshrc`). `Package.swift` builds against SDK `2.2.0-GA` with no further
setup (AIQL needs it: it uses `lab.mcp.setFileBackedOutput`, new in 2.0) — it links **two** binaries, `LocalLMLabSDKCore.xcframework` and
`LocalLMLabSDKInference.xcframework` (the MLX runtime), from that one GitHub Release.
`export LOCALLM_SDK_VERSION=<version>` to pin a different published release. **No Metal Toolchain
Expand Down
14 changes: 7 additions & 7 deletions examples/code-buddy/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,21 @@ struct SDKRelease {
// `swift build` / CI, NOT inside Xcode), or edit `defaultSDKVersion` here. For a
// release not listed, add its entry (URL + the `.sha256` next to the zip on the
// GitHub release) or just replace the strings in place.
let defaultSDKVersion = "2.1.0-GA"
let defaultSDKVersion = "2.2.0-GA"

let knownSDKReleases: [String: SDKRelease] = [
"2.0.0-GA": SDKRelease(
coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.0.0-GA/LocalLMLabSDKCore-2.0.0-GA.xcframework.zip",
coreChecksum: "5f9418a6879b22227afdf867cf474d426b93ae36d783d5a958efaae1e347681b",
inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.0.0-GA/LocalLMLabSDKInference-2.0.0-GA.xcframework.zip",
inferenceChecksum: "d2ed4a02686aceab0edf4231ede55c924ea3ab273c7c5cab0bb02f4bda40a185"
),
"2.1.0-GA": SDKRelease(
coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.1.0-GA/LocalLMLabSDKCore-2.1.0-GA.xcframework.zip",
coreChecksum: "8d541e06f81d1586c959d6159a259c759853c88b2c68385ab28de493af6c5776",
inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.1.0-GA/LocalLMLabSDKInference-2.1.0-GA.xcframework.zip",
inferenceChecksum: "77d3d1a1bae9df6de5955dfa945242c177cb129b4896c95befb81db6c923656f"
),
"2.2.0-GA": SDKRelease(
coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLMLabSDKCore-2.2.0-GA.xcframework.zip",
coreChecksum: "5efc40cae9f8a1bf53bfe03195c5365398bc9501b3e6b0feee3e5c67385537f4",
inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLMLabSDKInference-2.2.0-GA.xcframework.zip",
inferenceChecksum: "afd427fb741a820f55bc0a384850ae6404608f5ad73d185a583a89e8f0d61a61"
),
]

func failManifest(_ message: String) -> Never {
Expand Down
4 changes: 2 additions & 2 deletions examples/components-updates-demo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ Requires macOS 27+ on Apple Silicon (Xcode 27 to build). No permissions, no sign

## Getting the SDK

This branch tracks `2.1.0-GA`. Nothing to download by hand — `Package.swift` depends on the sibling
This branch tracks `2.2.0-GA`. Nothing to download by hand — `Package.swift` depends on the sibling
[`Components`](../../Components/) package, which resolves `LocalLMLabSDKCore` as a binary dependency and builds
against `2.1.0-GA` by default. Set `LOCALLM_SDK_VERSION` in a shell (not Xcode) to pin another published
against `2.2.0-GA` by default. Set `LOCALLM_SDK_VERSION` in a shell (not Xcode) to pin another published
release — see [`../README.md`](../README.md#building--running-an-sdk-example).

## Build and run
Expand Down
18 changes: 9 additions & 9 deletions examples/jevdk/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,9 @@ struct SDKRelease {
// or edit `defaultSDKVersion` here. For a release not listed, add its entry (URL + the `.sha256`
// next to each zip on the GitHub release) or just replace the strings in place. Only 2.0
// releases: this app does not build against 1.0.
let defaultSDKVersion = "2.1.0-GA"
let defaultSDKVersion = "2.2.0-GA"

let knownSDKReleases: [String: SDKRelease] = [
"2.0.0-GA": SDKRelease(
coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.0.0-GA/LocalLMLabSDKCore-2.0.0-GA.xcframework.zip",
coreChecksum: "5f9418a6879b22227afdf867cf474d426b93ae36d783d5a958efaae1e347681b",
remoteURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.0.0-GA/LocalLMLabSDKRemote-2.0.0-GA.xcframework.zip",
remoteChecksum: "1e809cff19a7d232cd82fd36eb3ba7d79a93b55f71b6694041c9d9e3f6261be9",
inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.0.0-GA/LocalLMLabSDKInference-2.0.0-GA.xcframework.zip",
inferenceChecksum: "d2ed4a02686aceab0edf4231ede55c924ea3ab273c7c5cab0bb02f4bda40a185"
),
"2.1.0-GA": SDKRelease(
coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.1.0-GA/LocalLMLabSDKCore-2.1.0-GA.xcframework.zip",
coreChecksum: "8d541e06f81d1586c959d6159a259c759853c88b2c68385ab28de493af6c5776",
Expand All @@ -52,6 +44,14 @@ let knownSDKReleases: [String: SDKRelease] = [
inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.1.0-GA/LocalLMLabSDKInference-2.1.0-GA.xcframework.zip",
inferenceChecksum: "77d3d1a1bae9df6de5955dfa945242c177cb129b4896c95befb81db6c923656f"
),
"2.2.0-GA": SDKRelease(
coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLMLabSDKCore-2.2.0-GA.xcframework.zip",
coreChecksum: "5efc40cae9f8a1bf53bfe03195c5365398bc9501b3e6b0feee3e5c67385537f4",
remoteURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLMLabSDKRemote-2.2.0-GA.xcframework.zip",
remoteChecksum: "1c9af025c700bc0c41c80387c1d6a59ba2f2ab6203eb8ffd8548d61c6ac1fe38",
inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLMLabSDKInference-2.2.0-GA.xcframework.zip",
inferenceChecksum: "afd427fb741a820f55bc0a384850ae6404608f5ad73d185a583a89e8f0d61a61"
),
]

func failManifest(_ message: String) -> Never {
Expand Down
2 changes: 1 addition & 1 deletion examples/jevdk/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ swift build -c release
```

Needs an Apple-silicon Mac, macOS 27 and Xcode 27 (Swift 6.4). `Package.swift` builds against SDK
`2.1.0-GA` with no further setup (the decision API is new in 2.0): `LocalLMLabSDKCore`,
`2.2.0-GA` with no further setup (the decision API is new in 2.0): `LocalLMLabSDKCore`,
`LocalLMLabSDKRemote` and `LocalLMLabSDKInference` (the MLX runtime) come from that GitHub Release.
No Metal Toolchain needed; the prebuilt Inference xcframework bundles the compiled shaders. To
build against another release, set `LOCALLM_SDK_VERSION` (see [the README one folder up](../README.md)).
Expand Down
10 changes: 5 additions & 5 deletions examples/mcp-chat/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,17 @@ struct SDKRelease {
// The SDK release this example builds against with no setup. Build against another published
// version: set LOCALLM_SDK_VERSION in your shell (works for `swift build` / CI, NOT inside Xcode),
// or edit `defaultSDKVersion` here.
let defaultSDKVersion = "2.1.0-GA"
let defaultSDKVersion = "2.2.0-GA"

let knownSDKReleases: [String: SDKRelease] = [
"2.0.0-GA": SDKRelease(
inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.0.0-GA/LocalLMLabSDKInference-2.0.0-GA.xcframework.zip",
inferenceChecksum: "d2ed4a02686aceab0edf4231ede55c924ea3ab273c7c5cab0bb02f4bda40a185"
),
"2.1.0-GA": SDKRelease(
inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.1.0-GA/LocalLMLabSDKInference-2.1.0-GA.xcframework.zip",
inferenceChecksum: "77d3d1a1bae9df6de5955dfa945242c177cb129b4896c95befb81db6c923656f"
),
"2.2.0-GA": SDKRelease(
inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLMLabSDKInference-2.2.0-GA.xcframework.zip",
inferenceChecksum: "afd427fb741a820f55bc0a384850ae6404608f5ad73d185a583a89e8f0d61a61"
),
]

func failManifest(_ message: String) -> Never {
Expand Down
2 changes: 1 addition & 1 deletion examples/mcp-chat/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ shows Todoist's task list under the call.

Qwen3 8B through MLX by default; Apple's on-device model as an alternative (Settings).

`Package.swift` builds against SDK `2.1.0-GA` with no further setup (MCP Apps support is new in
`Package.swift` builds against SDK `2.2.0-GA` with no further setup (MCP Apps support is new in
2.0): `LocalLMLabSDKCore` and `LocalLMLabSDKInference` (the MLX runtime) come from that GitHub
Release, `Components` (`../../Components`) and `MCPAppsHost` (`../../MCPAppsHost`) from this repo as
source. Needs macOS 27 and Xcode 27 (Swift 6.4). No Metal Toolchain needed — the prebuilt Inference
Expand Down
Loading
Loading