Skip to content
Open
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
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
- [x] [Llama 3.2 1B](https://huggingface.co/mlx-community/Llama-3.2-1B-Instruct-4bit)
- [x] [Llama 3.2 3B](https://huggingface.co/mlx-community/Llama-3.2-3B-Instruct-4bit)
- [x] [DeepSeek-R1-Distill-Qwen-1.5B-4bit](https://huggingface.co/mlx-community/DeepSeek-R1-Distill-Qwen-1.5B-4bit)
- [x] [Qwen3.5-0.8B-4bit](https://huggingface.co/mlx-community/Qwen3.5-0.8B-4bit)
- [x] [Qwen3.5-2B-4bit](https://huggingface.co/mlx-community/Qwen3.5-2B-4bit)
- [x] [Qwen3.5-9B-4bit](https://huggingface.co/mlx-community/Qwen3.5-9B-4bit)

## credits
fullmoon is made possible by [MLX Swift](https://github.com/ml-explore/mlx-swift) from Apple. [MLX](https://github.com/ml-explore/mlx) is an array framework for machine learning research on Apple silicon.
36 changes: 18 additions & 18 deletions fullmoon.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
objects = {

/* Begin PBXBuildFile section */
25F645532D4E7A6F0049EFBE /* Transformers in Frameworks */ = {isa = PBXBuildFile; productRef = 25F645522D4E7A6F0049EFBE /* Transformers */; };
A1B2C3D42E9A100100AA55BB /* MLXRandom in Frameworks */ = {isa = PBXBuildFile; productRef = A1B2C3D52E9A100100AA55BB /* MLXRandom */; };
860F26A42CBC31D6004E8D40 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 860F26A32CBC31D6004E8D40 /* MarkdownUI */; };
869B97622D0DD46B0078DF5A /* MLXLMCommon in Frameworks */ = {isa = PBXBuildFile; productRef = 869B97612D0DD46B0078DF5A /* MLXLMCommon */; };
869B97642D0DD4D80078DF5A /* MLXLLM in Frameworks */ = {isa = PBXBuildFile; productRef = 869B97632D0DD4D80078DF5A /* MLXLLM */; };
Expand Down Expand Up @@ -45,7 +45,7 @@
files = (
869B97642D0DD4D80078DF5A /* MLXLLM in Frameworks */,
869B97622D0DD46B0078DF5A /* MLXLMCommon in Frameworks */,
25F645532D4E7A6F0049EFBE /* Transformers in Frameworks */,
A1B2C3D42E9A100100AA55BB /* MLXRandom in Frameworks */,
860F26A42CBC31D6004E8D40 /* MarkdownUI in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down Expand Up @@ -100,7 +100,7 @@
860F26A32CBC31D6004E8D40 /* MarkdownUI */,
869B97612D0DD46B0078DF5A /* MLXLMCommon */,
869B97632D0DD4D80078DF5A /* MLXLLM */,
25F645522D4E7A6F0049EFBE /* Transformers */,
A1B2C3D52E9A100100AA55BB /* MLXRandom */,
);
productName = fullmoon;
productReference = 860E9CCE2CB055B000C5BB52 /* fullmoon.app */;
Expand Down Expand Up @@ -131,9 +131,9 @@
mainGroup = 860E9CC52CB055B000C5BB52;
minimizedProjectReferenceProxies = 1;
packageReferences = (
860E9CE22CB0564600C5BB52 /* XCRemoteSwiftPackageReference "mlx-swift-examples" */,
860E9CE22CB0564600C5BB52 /* XCRemoteSwiftPackageReference "mlx-swift-lm" */,
A1B2C3D62E9A100100AA55BB /* XCRemoteSwiftPackageReference "mlx-swift" */,
860F26A22CBC31D6004E8D40 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */,
25F645512D4E7A6F0049EFBE /* XCRemoteSwiftPackageReference "swift-transformers" */,
);
preferredProjectObjectVersion = 77;
productRefGroup = 860E9CCF2CB055B000C5BB52 /* Products */;
Expand Down Expand Up @@ -396,17 +396,17 @@
/* End XCConfigurationList section */

/* Begin XCRemoteSwiftPackageReference section */
25F645512D4E7A6F0049EFBE /* XCRemoteSwiftPackageReference "swift-transformers" */ = {
A1B2C3D62E9A100100AA55BB /* XCRemoteSwiftPackageReference "mlx-swift" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/huggingface/swift-transformers.git";
repositoryURL = "https://github.com/ml-explore/mlx-swift";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 0.1.17;
kind = upToNextMinorVersion;
minimumVersion = 0.30.6;
};
};
860E9CE22CB0564600C5BB52 /* XCRemoteSwiftPackageReference "mlx-swift-examples" */ = {
860E9CE22CB0564600C5BB52 /* XCRemoteSwiftPackageReference "mlx-swift-lm" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/ml-explore/mlx-swift-examples/";
repositoryURL = "https://github.com/ml-explore/mlx-swift-lm";
requirement = {
branch = main;
kind = branch;
Expand All @@ -423,26 +423,26 @@
/* End XCRemoteSwiftPackageReference section */

/* Begin XCSwiftPackageProductDependency section */
25F645522D4E7A6F0049EFBE /* Transformers */ = {
isa = XCSwiftPackageProductDependency;
package = 25F645512D4E7A6F0049EFBE /* XCRemoteSwiftPackageReference "swift-transformers" */;
productName = Transformers;
};
860F26A32CBC31D6004E8D40 /* MarkdownUI */ = {
isa = XCSwiftPackageProductDependency;
package = 860F26A22CBC31D6004E8D40 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */;
productName = MarkdownUI;
};
869B97612D0DD46B0078DF5A /* MLXLMCommon */ = {
isa = XCSwiftPackageProductDependency;
package = 860E9CE22CB0564600C5BB52 /* XCRemoteSwiftPackageReference "mlx-swift-examples" */;
package = 860E9CE22CB0564600C5BB52 /* XCRemoteSwiftPackageReference "mlx-swift-lm" */;
productName = MLXLMCommon;
};
869B97632D0DD4D80078DF5A /* MLXLLM */ = {
isa = XCSwiftPackageProductDependency;
package = 860E9CE22CB0564600C5BB52 /* XCRemoteSwiftPackageReference "mlx-swift-examples" */;
package = 860E9CE22CB0564600C5BB52 /* XCRemoteSwiftPackageReference "mlx-swift-lm" */;
productName = MLXLLM;
};
A1B2C3D52E9A100100AA55BB /* MLXRandom */ = {
isa = XCSwiftPackageProductDependency;
package = A1B2C3D62E9A100100AA55BB /* XCRemoteSwiftPackageReference "mlx-swift" */;
productName = MLXRandom;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 860E9CC62CB055B000C5BB52 /* Project object */;
Expand Down
21 changes: 21 additions & 0 deletions fullmoon/Models/Models.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ public extension ModelConfiguration {
switch self {
case .deepseek_r1_distill_qwen_1_5b_4bit: .reasoning
case .deepseek_r1_distill_qwen_1_5b_8bit: .reasoning
case .qwen_3_5_0_8b_4bit: .reasoning
case .qwen_3_5_2b_4bit: .reasoning
case .qwen_3_5_9b_4bit: .reasoning
case .qwen_3_4b_4bit: .reasoning
case .qwen_3_8b_4bit: .reasoning
default: .regular
Expand Down Expand Up @@ -45,6 +48,18 @@ extension ModelConfiguration: @retroactive Equatable {
id: "mlx-community/DeepSeek-R1-Distill-Qwen-1.5B-8bit"
)

public static let qwen_3_5_0_8b_4bit = ModelConfiguration(
id: "mlx-community/Qwen3.5-0.8B-4bit"
)

public static let qwen_3_5_2b_4bit = ModelConfiguration(
id: "mlx-community/Qwen3.5-2B-4bit"
)

public static let qwen_3_5_9b_4bit = ModelConfiguration(
id: "mlx-community/Qwen3.5-9B-4bit"
)

public static let qwen_3_4b_4bit = ModelConfiguration(
id: "mlx-community/Qwen3-4B-4bit"
)
Expand All @@ -58,6 +73,9 @@ extension ModelConfiguration: @retroactive Equatable {
llama_3_2_3b_4bit,
deepseek_r1_distill_qwen_1_5b_4bit,
deepseek_r1_distill_qwen_1_5b_8bit,
qwen_3_5_0_8b_4bit,
qwen_3_5_2b_4bit,
qwen_3_5_9b_4bit,
qwen_3_4b_4bit,
qwen_3_8b_4bit,
]
Expand Down Expand Up @@ -118,6 +136,9 @@ extension ModelConfiguration: @retroactive Equatable {
case .llama_3_2_3b_4bit: return 1.8
case .deepseek_r1_distill_qwen_1_5b_4bit: return 1.0
case .deepseek_r1_distill_qwen_1_5b_8bit: return 1.9
case .qwen_3_5_0_8b_4bit: return 0.7
case .qwen_3_5_2b_4bit: return 1.8
case .qwen_3_5_9b_4bit: return 5.5
case .qwen_3_4b_4bit: return 2.3
case .qwen_3_8b_4bit: return 4.7
default: return nil
Expand Down
2 changes: 1 addition & 1 deletion fullmoon/Models/RequestLLMIntent.swift
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ struct NewChatShortcut: AppShortcutsProvider {
AppShortcut(
intent: RequestLLMIntent(),
phrases: [
"Start a new chat",
"Start a new \(.applicationName) chat",
"Start a \(.applicationName) chat",
"Chat with \(.applicationName)",
"Ask \(.applicationName) a question"
Expand Down