Repository navigation
LocalLM Lab 2.3.0-GA
2.3 adds OpenAI's Decisions API to the SDK as a fourth decider, and lets a backend decline a question: refusals are now part of Decision.
SDK: OpenAI Decisions and refusals, additions only
Code that builds against 2.2.0 builds unchanged. LocalLMLabSDKInference and LocalLMLabSDKClaude have no source changes.
- OpenAI Decisions in
LocalLMLabSDKRemote.JevDecisionProviderspeaks OpenAI's/v1/decisionsas well as Jev's wire format, chosen byJevProviderConfig's newwire(.jevor.openAIDecisions)..openAI(key:)registersopenai:gpt-6-luna, with.nativefidelity: the probabilities are OpenAI's own..openAICompatibleDecisions(baseURL:auth:models:…)is for any other server that speaks the same API, such as Fireworks, Vercel AI Gateway or LocalAI.probe(for:timeout:)checks the key and model withGET /v1/models, without spending a decision.
OpenAIDecisionWireinLocalLMLabSDKCore, the codec for both directions. OpenAI's input limits (DecisionLimits.openAIDecisions) are checked before anything is sent.- Refusals.
Decision.refusalslists the questions a backend declined, andisRefused(_:)checks one. Only OpenAI's Decisions API refuses today; other backends leaverefusalsempty.lab.evaluatecounts a refusal as a miss (QuestionScore.refused). Decision's JSON gainsrefusals. JSON written by 2.2 still decodes, and a decision without refusals encodes exactly as before.
Details in the CHANGELOG and the SDK guide (§6c, decision models).
Examples
- JevDK has an OpenAI backend next to the local model, Featherless and OpenRouter, and shows refused questions in its results. It now needs SDK 2.3. Also in the standalone jevdk repo.
- Every example builds against 2.3.0-GA by default (
LOCALLM_SDK_VERSIONpicks another release). - The sandboxed examples that download an MLX model (aiql, mcp-chat, mlx-control-room, workspace-buddy-local) explain where the model is stored in the app's container and how to remove it.
LocalLM Lab app
Rebuilt on SDK 2.3, with the same features as 2.2.0. Known issues: known issues.
Checksums
| Asset | SHA-256 |
|---|---|
LocalLMLabSDKCore-2.3.0-GA.xcframework.zip |
7821197d0cf5b4c92e36af5c537295e594afbb55d60d2f98b0773a3625403575 |
LocalLMLabSDKClaude-2.3.0-GA.xcframework.zip |
80e143412d0bd0538091b59ea050015d28828855809203ea51c1cd49675e8449 |
LocalLMLabSDKInference-2.3.0-GA.xcframework.zip |
63dc8bcba5e91e1324809ca412a23ebb0b9e04386361436eacc0be9fe6d4a8e0 |
LocalLMLabSDKRemote-2.3.0-GA.xcframework.zip |
dae65d45bea196f6cd2538328fad1a0e33eceae5fac5ee965183706ac942daaf |
LocalLM.Lab-2.3.0-GA-arm64.dmg (the app) |
11201dc4ab7f73e0dd846eedfefa40ab66fcf51cafbad1e22f8d307f6c544056 |
localai-toolkit-2.3.0-GA-arm64.zip (the localai-cli toolkit) |
f86ec719a1130c6b469915dbd7fb97c0b8219a96372ced95be74093cee2b9765 |
The DMG's .sha256 names the file LocalLM Lab-2.3.0-GA-arm64.dmg (with a space), so compare with shasum -a 256 LocalLM.Lab-2.3.0-GA-arm64.dmg rather than shasum -c.