MLX Swift LM is a Swift package to build tools and applications with large language models (LLMs) and vision language models (VLMs) in MLX Swift.
[!IMPORTANT] The
mainbranch is a new major version number: 3.x. In order to decouple from tokenizer and downloader packages some breaking changes were introduced. See upgrading documentation for detailed instructions on upgrading.
[!IMPORTANT] We use
swift-formatto keep the code formatting consistent. CI has this pinned to603.0.0right now.
Some key features include:
For some example applications and tools that use MLX Swift LM, check out MLX Swift Examples.
Developers can use these examples in their own programs -- just import the swift package!
FoundationModels.LanguageModel for use with LanguageModelSession. (Requires the macOS/iOS/visionOS 27.0 SDK.)This package integrates with a variety of tokenizer and downloader packages through protocol conformance. Users can pick from three ways to integrate with these packages, which offer different tradeoffs between freedom and convenience.
See documentation on how to integrate mlx-swift-lm and downloaders/tokenizers.
[!NOTE] If the documentation link shows a 404, view the source.
Add the core package to your Package.swift:
.package(url: "https://github.com/ml-explore/mlx-swift-lm", .upToNextMajor(from: "3.31.3")),
Then chose an integration package for downloaders and tokenizers.
[!NOTE] If the documentation link shows a 404, view the source.
See also MLXLMCommon. The simplest way to get started is using the MLXHuggingFace macros, which provide a default Hugging Face downloader and tokenizer integration.
dependencies: [
.package(url: "https://github.com/ml-explore/mlx-swift-lm", .upToNextMajor(from: "3.31.3")),
.package(url: "https://github.com/huggingface/swift-huggingface", from: "0.9.0"),
.package(url: "https://github.com/huggingface/swift-transformers", from: "1.3.0"),
],
targets: [
.target(
name: "YourTargetName",
dependencies: [
.product(name: "MLXLLM", package: "mlx-swift-lm"),
.product(name: "MLXLMCommon", package: "mlx-swift-lm"),
.product(name: "MLXHuggingFace", package: "mlx-swift-lm"),
.product(name: "HuggingFace", package: "swift-huggingface"),
.product(name: "Tokenizers", package: "swift-transformers"),
]),
]
import MLXLLM
import MLXLMCommon
import MLXHuggingFace
import HuggingFace
import Tokenizers
let model = try await #huggingFaceLoadModelContainer(
configuration: LLMRegistry.gemma3_1B_qat_4bit
)
let session = ChatSession(model)
print(try await session.respond(to: "What are two things to see in San Francisco?"))
print(try await session.respond(to: "How about a great place to eat?"))
For alternative integration approaches (custom downloaders, alternative tokenizer packages, local-only weights), see the using documentation.
FoundationModels integrationMLXFoundationModels is a bridge between MLX models and Apple's FoundationModels framework: build an MLXLanguageModel, pass it to LanguageModelSession, and generate through the standard FoundationModels API. Requires the macOS/iOS/visionOS 27.0 SDK.
import Foundation
import FoundationModels
import HuggingFace
import MLXFoundationModels
import MLXHuggingFace
import MLXLLM
import MLXLMCommon
import Tokenizers
@available(iOS 26.0, macOS 26.0, visionOS 26.0, *)
@Generable
struct Recommendation {
let attraction: String
let neighborhood: String
let tip: String
}
if #available(iOS 27.0, macOS 27.0, visionOS 27.0, *) {
let model = #huggingFaceLanguageModel(
configuration: LLMRegistry.gemma3_1B_qat_4bit,
capabilities: [.guidedGeneration])
let session = LanguageModelSession(model: model)
let recommendation = try await session.respond(
to: "Recommend one thing to do in Chicago.",
generating: Recommendation.self)
print(recommendation.content)
// Recommendation(
// attraction: "Art Institute of Chicago",
// neighborhood: "Loop",
// tip: "Admire Seurat's Sunday on La Grande Jatte up close.")
}
Here, we combine MLXFoundationModels with MLXGuidedGeneration by requesting a @Generable type: the response is grammar-constrained to that type's schema. MLXGuidedGeneration is a standalone primitive that constrains any MLX model's output to a schema.
Other capabilities include .vision, .toolCalling, and .reasoning. See Libraries/MLXFoundationModels for the full capability set, custom weights and loaders, and more information about using MLXFoundationModels.
(top 30 of 110)
Swift
86.5%
C++
12.6%
MLX Swift LM is a Swift package to build tools and applications with large language models (LLMs) and vision language models (VLMs) in MLX Swift.
[!IMPORTANT] The
mainbranch is a new major version number: 3.x. In order to decouple from tokenizer and downloader packages some breaking changes were introduced. See upgrading documentation for detailed instructions on upgrading.
[!IMPORTANT] We use
swift-formatto keep the code formatting consistent. CI has this pinned to603.0.0right now.
Some key features include:
For some example applications and tools that use MLX Swift LM, check out MLX Swift Examples.
Developers can use these examples in their own programs -- just import the swift package!
FoundationModels.LanguageModel for use with LanguageModelSession. (Requires the macOS/iOS/visionOS 27.0 SDK.)This package integrates with a variety of tokenizer and downloader packages through protocol conformance. Users can pick from three ways to integrate with these packages, which offer different tradeoffs between freedom and convenience.
See documentation on how to integrate mlx-swift-lm and downloaders/tokenizers.
[!NOTE] If the documentation link shows a 404, view the source.
Add the core package to your Package.swift:
.package(url: "https://github.com/ml-explore/mlx-swift-lm", .upToNextMajor(from: "3.31.3")),
Then chose an integration package for downloaders and tokenizers.
[!NOTE] If the documentation link shows a 404, view the source.
See also MLXLMCommon. The simplest way to get started is using the MLXHuggingFace macros, which provide a default Hugging Face downloader and tokenizer integration.
dependencies: [
.package(url: "https://github.com/ml-explore/mlx-swift-lm", .upToNextMajor(from: "3.31.3")),
.package(url: "https://github.com/huggingface/swift-huggingface", from: "0.9.0"),
.package(url: "https://github.com/huggingface/swift-transformers", from: "1.3.0"),
],
targets: [
.target(
name: "YourTargetName",
dependencies: [
.product(name: "MLXLLM", package: "mlx-swift-lm"),
.product(name: "MLXLMCommon", package: "mlx-swift-lm"),
.product(name: "MLXHuggingFace", package: "mlx-swift-lm"),
.product(name: "HuggingFace", package: "swift-huggingface"),
.product(name: "Tokenizers", package: "swift-transformers"),
]),
]
import MLXLLM
import MLXLMCommon
import MLXHuggingFace
import HuggingFace
import Tokenizers
let model = try await #huggingFaceLoadModelContainer(
configuration: LLMRegistry.gemma3_1B_qat_4bit
)
let session = ChatSession(model)
print(try await session.respond(to: "What are two things to see in San Francisco?"))
print(try await session.respond(to: "How about a great place to eat?"))
For alternative integration approaches (custom downloaders, alternative tokenizer packages, local-only weights), see the using documentation.
FoundationModels integrationMLXFoundationModels is a bridge between MLX models and Apple's FoundationModels framework: build an MLXLanguageModel, pass it to LanguageModelSession, and generate through the standard FoundationModels API. Requires the macOS/iOS/visionOS 27.0 SDK.
import Foundation
import FoundationModels
import HuggingFace
import MLXFoundationModels
import MLXHuggingFace
import MLXLLM
import MLXLMCommon
import Tokenizers
@available(iOS 26.0, macOS 26.0, visionOS 26.0, *)
@Generable
struct Recommendation {
let attraction: String
let neighborhood: String
let tip: String
}
if #available(iOS 27.0, macOS 27.0, visionOS 27.0, *) {
let model = #huggingFaceLanguageModel(
configuration: LLMRegistry.gemma3_1B_qat_4bit,
capabilities: [.guidedGeneration])
let session = LanguageModelSession(model: model)
let recommendation = try await session.respond(
to: "Recommend one thing to do in Chicago.",
generating: Recommendation.self)
print(recommendation.content)
// Recommendation(
// attraction: "Art Institute of Chicago",
// neighborhood: "Loop",
// tip: "Admire Seurat's Sunday on La Grande Jatte up close.")
}
Here, we combine MLXFoundationModels with MLXGuidedGeneration by requesting a @Generable type: the response is grammar-constrained to that type's schema. MLXGuidedGeneration is a standalone primitive that constrains any MLX model's output to a schema.
Other capabilities include .vision, .toolCalling, and .reasoning. See Libraries/MLXFoundationModels for the full capability set, custom weights and loaders, and more information about using MLXFoundationModels.
(top 30 of 110)
Swift
86.5%
C++
12.6%