diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a74368..7cc7900 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,34 @@ 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.3.1 — GA — 2026-11-10 + +Fixes Private Cloud Compute (PCC) turns that stall. No API change: code that builds against 2.3.0 +builds unchanged. Only `LocalLMLabSDKCore` has a source change; `LocalLMLabSDKClaude`, +`LocalLMLabSDKInference` and `LocalLMLabSDKRemote` are rebuilt for the version number only. + +### Fixed + +- **A new PCC session is no longer prewarmed.** `makeSession` prewarmed every session, and for PCC + the prewarm is a server request of its own, sent the moment the session is made. On macOS 27.2 + the server often generates a few hundred tokens for it anyway and rejects them (a recitation + rejection, `ModelManagerServices.InferenceError` 2008). A turn started on the same session at the + same time then stalled for about 30 seconds and ended with no text and no error. An app that + makes a session and sends at once hit it, even for a prompt like "2+2" with no tools; one that + makes its session earlier (when a chat opens, say) usually didn't. The model runs in Apple's + cloud, so there is nothing local to warm. Sessions for other providers are prewarmed as before. + +### Checksums (SHA-256) + +``` +LocalLMLabSDKCore-2.3.1-GA.xcframework.zip 0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c +LocalLMLabSDKClaude-2.3.1-GA.xcframework.zip 4b4989f288b70d7762d9151fe1c7745cc76234854dd97693a53bbc81569955e1 +LocalLMLabSDKInference-2.3.1-GA.xcframework.zip 7663074fc31919ba2970c99d7835fbad93415370b29ad828a32def0db73c7e8e +LocalLMLabSDKRemote-2.3.1-GA.xcframework.zip 79247d567ad5dddecd14b0cc7662ab1ac61a322c3507029abd9fd4fb093d9ab6 +``` + +--- + ## 2.3.0 — GA — 2026-10-27 OpenAI's Decisions API as a fourth decider, and refusals in `Decision`. Additive only: code that diff --git a/Components/Package.swift b/Components/Package.swift index 2114b6c..0392f50 100644 --- a/Components/Package.swift +++ b/Components/Package.swift @@ -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.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "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" - ), "2.3.0-GA": SDKRelease( url: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip", checksum: "7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575" ), + "2.3.1-GA": SDKRelease( + url: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + checksum: "0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c" + ), ] func failManifest(_ message: String) -> Never { diff --git a/README.md b/README.md index 5f79019..38e44f4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ Notes: -1. The 2.3.0-GA release branch is at [https://github.com/ancientcomputing/locallm/tree/2.3.0-GA](https://github.com/ancientcomputing/locallm/tree/2.3.0-GA) +1. The 2.3.1-GA release branch is at [https://github.com/ancientcomputing/locallm/tree/2.3.1-GA](https://github.com/ancientcomputing/locallm/tree/2.3.1-GA) 2. The project website is at [https://thisbrain.ai/locallm/](https://thisbrain.ai/locallm/) # LocalLM Lab @@ -40,7 +40,7 @@ doesn't carry. **Product page:** [thisbrain.ai/locallm](https://thisbrain.ai/locallm) — or get the app directly: -[LocalLM Lab 2.3.0-GA (arm64 DMG)](https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLM.Lab-2.3.0-GA-arm64.dmg). +[LocalLM Lab 2.3.1-GA (arm64 DMG)](https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLM.Lab-2.3.1-GA-arm64.dmg). ## LocalLM Lab SDK diff --git a/docs/api-surface.md b/docs/api-surface.md index 54a4eee..085523c 100644 --- a/docs/api-surface.md +++ b/docs/api-surface.md @@ -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.3.0"` (the published `v2.3.0-GA` xcframeworks, built from 9b45072) · generated 2026-10-27T19:05Z +> SDK version: `"2.3.1"` (the published `v2.3.1-GA` xcframeworks, built from b310dfa) · generated 2026-11-10T17:23Z ## LocalLMLabSDKCore diff --git a/examples/README.md b/examples/README.md index ce038ad..f556b83 100644 --- a/examples/README.md +++ b/examples/README.md @@ -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.3.0-GA` branch build against SDK **`2.3.0-GA`**; the ones on `main` +The examples on this `2.3.1-GA` branch build against SDK **`2.3.1-GA`**; the ones on `main` build against the latest stable release. No environment variable is needed for either. ### What each example needs @@ -158,7 +158,7 @@ resolution doesn't inherit shell environment variables. ```bash cd examples/repo-qa -LOCALLM_SDK_VERSION=2.2.0-GA \ +LOCALLM_SDK_VERSION=2.3.0-GA \ DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \ swift run RepoQA facebook/react ``` @@ -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.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "2.2.0-GA": SDKRelease(url: "…/v2.2.0-GA/LocalLMLabSDKCore-2.2.0-GA.xcframework.zip", - checksum: "5efc40ca…"), "2.3.0-GA": SDKRelease(url: "…/v2.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip", checksum: "7821197d…"), + "2.3.1-GA": SDKRelease(url: "…/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + checksum: "0dc1e302…"), ] ``` @@ -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.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip.sha256 -# → 7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575 -curl -sL https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKClaude-2.3.0-GA.xcframework.zip.sha256 -# → 80e143412d0bd0538091b59ea050015d28828855809203ea51c1cd49675e8449 +curl -sL https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip.sha256 +# → 0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c +curl -sL https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKClaude-2.3.1-GA.xcframework.zip.sha256 +# → 4b4989f288b70d7762d9151fe1c7745cc76234854dd97693a53bbc81569955e1 ``` Then point `defaultSDKVersion` at it (works everywhere, Xcode included) or pass diff --git a/examples/aiql/Package.swift b/examples/aiql/Package.swift index 5f39db9..baf7f74 100644 --- a/examples/aiql/Package.swift +++ b/examples/aiql/Package.swift @@ -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.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "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" - ), "2.3.0-GA": SDKRelease( coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip", coreChecksum: "7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575", inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKInference-2.3.0-GA.xcframework.zip", inferenceChecksum: "63dc8bcba5e91e1324809ca412a23ebb0b9e04386361436eacc0be9fe6d4a8e0" ), + "2.3.1-GA": SDKRelease( + coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + coreChecksum: "0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c", + inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKInference-2.3.1-GA.xcframework.zip", + inferenceChecksum: "7663074fc31919ba2970c99d7835fbad93415370b29ad828a32def0db73c7e8e" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/aiql/README.md b/examples/aiql/README.md index 1a6d62f..33e7376 100644 --- a/examples/aiql/README.md +++ b/examples/aiql/README.md @@ -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.3.0-GA` with no further +or add it to your `~/.zshrc`). `Package.swift` builds against SDK `2.3.1-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=` to pin a different published release. **No Metal Toolchain diff --git a/examples/code-buddy/Package.swift b/examples/code-buddy/Package.swift index 9b968c6..23d69a7 100644 --- a/examples/code-buddy/Package.swift +++ b/examples/code-buddy/Package.swift @@ -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.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "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" - ), "2.3.0-GA": SDKRelease( coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip", coreChecksum: "7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575", inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKInference-2.3.0-GA.xcframework.zip", inferenceChecksum: "63dc8bcba5e91e1324809ca412a23ebb0b9e04386361436eacc0be9fe6d4a8e0" ), + "2.3.1-GA": SDKRelease( + coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + coreChecksum: "0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c", + inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKInference-2.3.1-GA.xcframework.zip", + inferenceChecksum: "7663074fc31919ba2970c99d7835fbad93415370b29ad828a32def0db73c7e8e" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/components-updates-demo/README.md b/examples/components-updates-demo/README.md index 17362d4..ad09181 100644 --- a/examples/components-updates-demo/README.md +++ b/examples/components-updates-demo/README.md @@ -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.3.0-GA`. Nothing to download by hand — `Package.swift` depends on the sibling +This branch tracks `2.3.1-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.3.0-GA` by default. Set `LOCALLM_SDK_VERSION` in a shell (not Xcode) to pin another published +against `2.3.1-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 diff --git a/examples/jevdk/Package.swift b/examples/jevdk/Package.swift index 8dccd0a..7fc6345 100644 --- a/examples/jevdk/Package.swift +++ b/examples/jevdk/Package.swift @@ -33,7 +33,7 @@ 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.3 and // later: the OpenAI backend doesn't build against 2.2 or earlier. -let defaultSDKVersion = "2.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ // 2.3.0-GA: OpenAI's Decisions API (JevProviderConfig.openAI) and Decision.refusals, which @@ -46,6 +46,14 @@ let knownSDKReleases: [String: SDKRelease] = [ inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKInference-2.3.0-GA.xcframework.zip", inferenceChecksum: "63dc8bcba5e91e1324809ca412a23ebb0b9e04386361436eacc0be9fe6d4a8e0" ), + "2.3.1-GA": SDKRelease( + coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + coreChecksum: "0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c", + remoteURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKRemote-2.3.1-GA.xcframework.zip", + remoteChecksum: "79247d567ad5dddecd14b0cc7662ab1ac61a322c3507029abd9fd4fb093d9ab6", + inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKInference-2.3.1-GA.xcframework.zip", + inferenceChecksum: "7663074fc31919ba2970c99d7835fbad93415370b29ad828a32def0db73c7e8e" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/jevdk/README.md b/examples/jevdk/README.md index f76559f..1954e82 100644 --- a/examples/jevdk/README.md +++ b/examples/jevdk/README.md @@ -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.3.0-GA` with no further setup (the OpenAI backend needs 2.3): `LocalLMLabSDKCore`, +`2.3.1-GA` with no further setup (the OpenAI backend needs 2.3): `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)). diff --git a/examples/mcp-chat/Package.swift b/examples/mcp-chat/Package.swift index 5291b56..bc9a9e7 100644 --- a/examples/mcp-chat/Package.swift +++ b/examples/mcp-chat/Package.swift @@ -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.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "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" - ), "2.3.0-GA": SDKRelease( inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKInference-2.3.0-GA.xcframework.zip", inferenceChecksum: "63dc8bcba5e91e1324809ca412a23ebb0b9e04386361436eacc0be9fe6d4a8e0" ), + "2.3.1-GA": SDKRelease( + inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKInference-2.3.1-GA.xcframework.zip", + inferenceChecksum: "7663074fc31919ba2970c99d7835fbad93415370b29ad828a32def0db73c7e8e" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/mcp-chat/README.md b/examples/mcp-chat/README.md index 2f9a399..dfe8db7 100644 --- a/examples/mcp-chat/README.md +++ b/examples/mcp-chat/README.md @@ -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.3.0-GA` with no further setup (MCP Apps support is new in +`Package.swift` builds against SDK `2.3.1-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 diff --git a/examples/mlx-control-room/Package.swift b/examples/mlx-control-room/Package.swift index 67e9252..e41d2fb 100644 --- a/examples/mlx-control-room/Package.swift +++ b/examples/mlx-control-room/Package.swift @@ -25,21 +25,21 @@ struct SDKRelease { // its entry (URL + the `.sha256` next to the zip on the GitHub release) or just replace the strings in // place. Needs a release that includes the model pin / update / cleanup APIs (1.0.0-RC.1 as re-published // on 2026-09-18, or later). -let defaultSDKVersion = "2.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "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" - ), "2.3.0-GA": SDKRelease( coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip", coreChecksum: "7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575", inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKInference-2.3.0-GA.xcframework.zip", inferenceChecksum: "63dc8bcba5e91e1324809ca412a23ebb0b9e04386361436eacc0be9fe6d4a8e0" ), + "2.3.1-GA": SDKRelease( + coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + coreChecksum: "0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c", + inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKInference-2.3.1-GA.xcframework.zip", + inferenceChecksum: "7663074fc31919ba2970c99d7835fbad93415370b29ad828a32def0db73c7e8e" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/model-switch/Package.swift b/examples/model-switch/Package.swift index a32a03d..ae3c9b3 100644 --- a/examples/model-switch/Package.swift +++ b/examples/model-switch/Package.swift @@ -28,17 +28,17 @@ 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.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "2.2.0-GA": SDKRelease( - remoteURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLMLabSDKRemote-2.2.0-GA.xcframework.zip", - remoteChecksum: "1c9af025c700bc0c41c80387c1d6a59ba2f2ab6203eb8ffd8548d61c6ac1fe38" - ), "2.3.0-GA": SDKRelease( remoteURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKRemote-2.3.0-GA.xcframework.zip", remoteChecksum: "dae65d45bea196f6cd2538328fad1a0e33eceae5fac5ee965183706ac942daaf" ), + "2.3.1-GA": SDKRelease( + remoteURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKRemote-2.3.1-GA.xcframework.zip", + remoteChecksum: "79247d567ad5dddecd14b0cc7662ab1ac61a322c3507029abd9fd4fb093d9ab6" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/os-matrix/Package.swift b/examples/os-matrix/Package.swift index 50bf354..52de818 100644 --- a/examples/os-matrix/Package.swift +++ b/examples/os-matrix/Package.swift @@ -22,21 +22,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.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "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" - ), "2.3.0-GA": SDKRelease( coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip", coreChecksum: "7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575", inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKInference-2.3.0-GA.xcframework.zip", inferenceChecksum: "63dc8bcba5e91e1324809ca412a23ebb0b9e04386361436eacc0be9fe6d4a8e0" ), + "2.3.1-GA": SDKRelease( + coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + coreChecksum: "0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c", + inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKInference-2.3.1-GA.xcframework.zip", + inferenceChecksum: "7663074fc31919ba2970c99d7835fbad93415370b29ad828a32def0db73c7e8e" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/plate-today-tools/Package.swift b/examples/plate-today-tools/Package.swift index 0ceaaef..f9685c0 100644 --- a/examples/plate-today-tools/Package.swift +++ b/examples/plate-today-tools/Package.swift @@ -23,17 +23,17 @@ 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.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "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" - ), "2.3.0-GA": SDKRelease( url: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip", checksum: "7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575" ), + "2.3.1-GA": SDKRelease( + url: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + checksum: "0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/plate-today/Package.swift b/examples/plate-today/Package.swift index 0b27cce..6ceb897 100644 --- a/examples/plate-today/Package.swift +++ b/examples/plate-today/Package.swift @@ -20,17 +20,17 @@ struct SDKRelease { // edit `defaultSDKVersion` here. For a release not listed, add its entry — the URL follows the // pattern below and the checksum is the `.sha256` file next to the zip on that GitHub release — // or just replace the two strings in place. -let defaultSDKVersion = "2.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "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" - ), "2.3.0-GA": SDKRelease( url: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip", checksum: "7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575" ), + "2.3.1-GA": SDKRelease( + url: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + checksum: "0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/repo-qa-local/Package.swift b/examples/repo-qa-local/Package.swift index 9468415..b722cd2 100644 --- a/examples/repo-qa-local/Package.swift +++ b/examples/repo-qa-local/Package.swift @@ -26,21 +26,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.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "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" - ), "2.3.0-GA": SDKRelease( coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip", coreChecksum: "7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575", inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKInference-2.3.0-GA.xcframework.zip", inferenceChecksum: "63dc8bcba5e91e1324809ca412a23ebb0b9e04386361436eacc0be9fe6d4a8e0" ), + "2.3.1-GA": SDKRelease( + coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + coreChecksum: "0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c", + inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKInference-2.3.1-GA.xcframework.zip", + inferenceChecksum: "7663074fc31919ba2970c99d7835fbad93415370b29ad828a32def0db73c7e8e" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/repo-qa/Package.swift b/examples/repo-qa/Package.swift index 247c734..1f7792e 100644 --- a/examples/repo-qa/Package.swift +++ b/examples/repo-qa/Package.swift @@ -23,17 +23,17 @@ 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.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "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" - ), "2.3.0-GA": SDKRelease( url: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip", checksum: "7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575" ), + "2.3.1-GA": SDKRelease( + url: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + checksum: "0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/security-demo/Package.swift b/examples/security-demo/Package.swift index 26e8181..b7c46d1 100644 --- a/examples/security-demo/Package.swift +++ b/examples/security-demo/Package.swift @@ -29,17 +29,17 @@ 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.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "2.2.0-GA": SDKRelease( - remoteURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.2.0-GA/LocalLMLabSDKRemote-2.2.0-GA.xcframework.zip", - remoteChecksum: "1c9af025c700bc0c41c80387c1d6a59ba2f2ab6203eb8ffd8548d61c6ac1fe38" - ), "2.3.0-GA": SDKRelease( remoteURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKRemote-2.3.0-GA.xcframework.zip", remoteChecksum: "dae65d45bea196f6cd2538328fad1a0e33eceae5fac5ee965183706ac942daaf" ), + "2.3.1-GA": SDKRelease( + remoteURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKRemote-2.3.1-GA.xcframework.zip", + remoteChecksum: "79247d567ad5dddecd14b0cc7662ab1ac61a322c3507029abd9fd4fb093d9ab6" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/vistanova/Package.swift b/examples/vistanova/Package.swift index 0c36909..bad68d2 100644 --- a/examples/vistanova/Package.swift +++ b/examples/vistanova/Package.swift @@ -24,21 +24,21 @@ struct SDKRelease { // strings in place. Needs a release that includes `MLXModelProvider(pinnedRevisions:)` and // `cancelDownload(_:)`: the checksums below are the 1.0.0-RC.1 binaries as re-published on // 2026-09-19. An RC.1 pulled earlier fails the checksum check — re-resolve packages. -let defaultSDKVersion = "2.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "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" - ), "2.3.0-GA": SDKRelease( coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip", coreChecksum: "7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575", inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKInference-2.3.0-GA.xcframework.zip", inferenceChecksum: "63dc8bcba5e91e1324809ca412a23ebb0b9e04386361436eacc0be9fe6d4a8e0" ), + "2.3.1-GA": SDKRelease( + coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + coreChecksum: "0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c", + inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKInference-2.3.1-GA.xcframework.zip", + inferenceChecksum: "7663074fc31919ba2970c99d7835fbad93415370b29ad828a32def0db73c7e8e" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/workspace-buddy-local/Package.swift b/examples/workspace-buddy-local/Package.swift index b9642d1..d17f9a5 100644 --- a/examples/workspace-buddy-local/Package.swift +++ b/examples/workspace-buddy-local/Package.swift @@ -28,21 +28,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.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "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" - ), "2.3.0-GA": SDKRelease( coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip", coreChecksum: "7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575", inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKInference-2.3.0-GA.xcframework.zip", inferenceChecksum: "63dc8bcba5e91e1324809ca412a23ebb0b9e04386361436eacc0be9fe6d4a8e0" ), + "2.3.1-GA": SDKRelease( + coreURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + coreChecksum: "0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c", + inferenceURL: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKInference-2.3.1-GA.xcframework.zip", + inferenceChecksum: "7663074fc31919ba2970c99d7835fbad93415370b29ad828a32def0db73c7e8e" + ), ] func failManifest(_ message: String) -> Never { diff --git a/examples/workspace-buddy/Package.swift b/examples/workspace-buddy/Package.swift index 54b613c..cc68f82 100644 --- a/examples/workspace-buddy/Package.swift +++ b/examples/workspace-buddy/Package.swift @@ -21,17 +21,17 @@ 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.3.0-GA" +let defaultSDKVersion = "2.3.1-GA" let knownSDKReleases: [String: SDKRelease] = [ - "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" - ), "2.3.0-GA": SDKRelease( url: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/LocalLMLabSDKCore-2.3.0-GA.xcframework.zip", checksum: "7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575" ), + "2.3.1-GA": SDKRelease( + url: "https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/LocalLMLabSDKCore-2.3.1-GA.xcframework.zip", + checksum: "0dc1e30235607fa2991e13fc97ca1f5c87b1b60b33999570d09ac31ae0c7990c" + ), ] func failManifest(_ message: String) -> Never { diff --git a/toolkit/README.md b/toolkit/README.md index 9b308f6..aa567ff 100644 --- a/toolkit/README.md +++ b/toolkit/README.md @@ -16,24 +16,24 @@ Starting with `1.0.0-beta.4`, the toolkit is shipped as release assets on **[github.com/ancientcomputing/locallm](https://github.com/ancientcomputing/locallm/releases)**, alongside the LocalLM Lab app DMG and the SDK xcframeworks. -Latest (`2.3.0-GA`): +Latest (`2.3.1-GA`): ```bash -curl -LO https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/localai-toolkit-2.3.0-GA-arm64.zip -curl -LO https://github.com/ancientcomputing/locallm/releases/download/v2.3.0-GA/localai-toolkit-2.3.0-GA-arm64.zip.sha256 +curl -LO https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/localai-toolkit-2.3.1-GA-arm64.zip +curl -LO https://github.com/ancientcomputing/locallm/releases/download/v2.3.1-GA/localai-toolkit-2.3.1-GA-arm64.zip.sha256 ``` ## Verify ```bash -shasum -a 256 -c localai-toolkit-2.3.0-GA-arm64.zip.sha256 +shasum -a 256 -c localai-toolkit-2.3.1-GA-arm64.zip.sha256 ``` ## Install ```bash -unzip localai-toolkit-2.3.0-GA-arm64.zip +unzip localai-toolkit-2.3.1-GA-arm64.zip ``` This produces `localai-cli`, `localai-playground-run` (macOS 27),