├── .gitignore ├── Images ├── log.png ├── menuExtra.png ├── mlx-logo.afphoto ├── serverManager.png └── setup.png ├── LICENSE ├── PicoMLXServer.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── swiftpm │ │ └── Package.resolved └── xcuserdata │ └── ronaldmannak.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── PicoMLXServer ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ ├── 1024.png │ │ ├── 128.png │ │ ├── 16.png │ │ ├── 256 1.png │ │ ├── 256.png │ │ ├── 32 1.png │ │ ├── 32.png │ │ ├── 512 1.png │ │ ├── 512.png │ │ ├── 64.png │ │ └── Contents.json │ ├── Contents.json │ └── mlx-logo.imageset │ │ ├── Contents.json │ │ ├── mlx-logo.png │ │ └── mlx-logo64.png ├── Bash Commands │ ├── BashOperation.swift │ ├── BrewInstall.command │ ├── Execute.command │ ├── Queue.swift │ └── uninstall.command ├── Extensions │ ├── Bundle.swift │ ├── NSApplication.swift │ └── String.swift ├── Menu │ ├── MenuExtra.swift │ └── ServerListMenu.swift ├── PicoError.swift ├── PicoMLXServer.entitlements ├── PicoMLXServerApp.swift ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json ├── Server Manager │ ├── Models │ │ ├── Server.swift │ │ ├── ServerController.swift │ │ ├── ServerOperation.swift │ │ └── server.py │ ├── ServerListView.swift │ ├── ServerLogView.swift │ └── ServerManagerView.swift ├── SettingsView.swift └── Setup │ ├── Models │ ├── Dependencies.plist │ ├── Dependency.swift │ ├── DependencyState.swift │ ├── DependencyViewModel+Operations.swift │ ├── DependencyViewModel.swift │ ├── Platform.swift │ └── PlatformViewModel.swift │ └── SetupView.swift ├── PicoMLXServerTests └── PicoMLXServerTests.swift ├── PicoMLXServerUITests ├── PicoMLXServerUITests.swift └── PicoMLXServerUITestsLaunchTests.swift └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## User settings 6 | xcuserdata/ 7 | 8 | ## Obj-C/Swift specific 9 | *.hmap 10 | 11 | ## App packaging 12 | *.ipa 13 | *.dSYM.zip 14 | *.dSYM 15 | 16 | ## Playgrounds 17 | timeline.xctimeline 18 | playground.xcworkspace 19 | 20 | # Swift Package Manager 21 | # 22 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 23 | # Packages/ 24 | # Package.pins 25 | # Package.resolved 26 | # *.xcodeproj 27 | # 28 | # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata 29 | # hence it is not needed unless you have added a package configuration file to your project 30 | # .swiftpm 31 | 32 | .build/ 33 | -------------------------------------------------------------------------------- /Images/log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/Images/log.png -------------------------------------------------------------------------------- /Images/menuExtra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/Images/menuExtra.png -------------------------------------------------------------------------------- /Images/mlx-logo.afphoto: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/Images/mlx-logo.afphoto -------------------------------------------------------------------------------- /Images/serverManager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/Images/serverManager.png -------------------------------------------------------------------------------- /Images/setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/Images/setup.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Ronald Mannak 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /PicoMLXServer.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 56; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | F8145FBC2B96B40C0086CBE7 /* MLX in Frameworks */ = {isa = PBXBuildFile; productRef = F8145FBB2B96B40C0086CBE7 /* MLX */; }; 11 | F8145FBE2B96B40C0086CBE7 /* MLXFFT in Frameworks */ = {isa = PBXBuildFile; productRef = F8145FBD2B96B40C0086CBE7 /* MLXFFT */; }; 12 | F8145FC02B96B40C0086CBE7 /* MLXLinalg in Frameworks */ = {isa = PBXBuildFile; productRef = F8145FBF2B96B40C0086CBE7 /* MLXLinalg */; }; 13 | F8145FC22B96B40C0086CBE7 /* MLXNN in Frameworks */ = {isa = PBXBuildFile; productRef = F8145FC12B96B40C0086CBE7 /* MLXNN */; }; 14 | F8145FC42B96B40C0086CBE7 /* MLXOptimizers in Frameworks */ = {isa = PBXBuildFile; productRef = F8145FC32B96B40C0086CBE7 /* MLXOptimizers */; }; 15 | F8145FC72B96B5590086CBE7 /* Transformers in Frameworks */ = {isa = PBXBuildFile; productRef = F8145FC62B96B5590086CBE7 /* Transformers */; }; 16 | F8145FD32BA128830086CBE7 /* BashOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8145FD22BA128830086CBE7 /* BashOperation.swift */; }; 17 | F8145FD52BA16C100086CBE7 /* PicoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8145FD42BA16C100086CBE7 /* PicoError.swift */; }; 18 | F8145FD82BA16DD90086CBE7 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8145FD72BA16DD90086CBE7 /* String.swift */; }; 19 | F8145FDA2BA17F440086CBE7 /* Dependencies.plist in Resources */ = {isa = PBXBuildFile; fileRef = F8145FD92BA17F440086CBE7 /* Dependencies.plist */; }; 20 | F8145FDD2BA205830086CBE7 /* Platform.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8145FDC2BA205830086CBE7 /* Platform.swift */; }; 21 | F8145FDF2BA207A80086CBE7 /* Dependency.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8145FDE2BA207A80086CBE7 /* Dependency.swift */; }; 22 | F8145FE12BA213400086CBE7 /* SetupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8145FE02BA213400086CBE7 /* SetupView.swift */; }; 23 | F8145FE82BA21DB40086CBE7 /* SplitView in Frameworks */ = {isa = PBXBuildFile; productRef = F8145FE72BA21DB40086CBE7 /* SplitView */; }; 24 | F8145FEB2BA21DD40086CBE7 /* Collections in Frameworks */ = {isa = PBXBuildFile; productRef = F8145FEA2BA21DD40086CBE7 /* Collections */; }; 25 | F8145FF12BA226170086CBE7 /* NSApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8145FF02BA226170086CBE7 /* NSApplication.swift */; }; 26 | F8145FF32BA2624D0086CBE7 /* PlatformViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8145FF22BA2624C0086CBE7 /* PlatformViewModel.swift */; }; 27 | F8145FF52BA262AD0086CBE7 /* DependencyViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8145FF42BA262AD0086CBE7 /* DependencyViewModel.swift */; }; 28 | F8145FFA2BA264D10086CBE7 /* BrewInstall.command in Resources */ = {isa = PBXBuildFile; fileRef = F8145FF72BA264D00086CBE7 /* BrewInstall.command */; }; 29 | F8145FFB2BA264D10086CBE7 /* Execute.command in Resources */ = {isa = PBXBuildFile; fileRef = F8145FF82BA264D10086CBE7 /* Execute.command */; }; 30 | F8145FFC2BA264D10086CBE7 /* uninstall.command in Resources */ = {isa = PBXBuildFile; fileRef = F8145FF92BA264D10086CBE7 /* uninstall.command */; }; 31 | F8145FFE2BA27C960086CBE7 /* DependencyState.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8145FFD2BA27C960086CBE7 /* DependencyState.swift */; }; 32 | F81460002BA283290086CBE7 /* DependencyViewModel+Operations.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8145FFF2BA283290086CBE7 /* DependencyViewModel+Operations.swift */; }; 33 | F81460022BA2A9C10086CBE7 /* Queue.swift in Sources */ = {isa = PBXBuildFile; fileRef = F81460012BA2A9C10086CBE7 /* Queue.swift */; }; 34 | F81460052BA2DF440086CBE7 /* FullDiskAccess in Frameworks */ = {isa = PBXBuildFile; productRef = F81460042BA2DF440086CBE7 /* FullDiskAccess */; }; 35 | F818D9522B96A4DC00BA4664 /* PicoMLXServerApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = F818D9512B96A4DC00BA4664 /* PicoMLXServerApp.swift */; }; 36 | F818D9562B96A4DE00BA4664 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F818D9552B96A4DE00BA4664 /* Assets.xcassets */; }; 37 | F818D9592B96A4DE00BA4664 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F818D9582B96A4DE00BA4664 /* Preview Assets.xcassets */; }; 38 | F818D9642B96A4DE00BA4664 /* PicoMLXServerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F818D9632B96A4DE00BA4664 /* PicoMLXServerTests.swift */; }; 39 | F818D96E2B96A4DE00BA4664 /* PicoMLXServerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F818D96D2B96A4DE00BA4664 /* PicoMLXServerUITests.swift */; }; 40 | F818D9702B96A4DE00BA4664 /* PicoMLXServerUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F818D96F2B96A4DE00BA4664 /* PicoMLXServerUITestsLaunchTests.swift */; }; 41 | F818D97D2B96A7B400BA4664 /* MenuExtra.swift in Sources */ = {isa = PBXBuildFile; fileRef = F818D97C2B96A7B400BA4664 /* MenuExtra.swift */; }; 42 | F818D97F2B96A80500BA4664 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F818D97E2B96A80500BA4664 /* SettingsView.swift */; }; 43 | F846FDC92BACBFB5005EE38A /* Bundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = F846FDC82BACBFB5005EE38A /* Bundle.swift */; }; 44 | F861C3842BAA67E4004BBB86 /* ServerLogView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F861C3832BAA67E4004BBB86 /* ServerLogView.swift */; }; 45 | F88F11102BA92D5B004743A5 /* ServerManagerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88F110F2BA92D5B004743A5 /* ServerManagerView.swift */; }; 46 | F88F11122BA92D75004743A5 /* ServerListMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88F11112BA92D75004743A5 /* ServerListMenu.swift */; }; 47 | F8907A382BA8060B00246735 /* server.py in Resources */ = {isa = PBXBuildFile; fileRef = F8907A372BA8060B00246735 /* server.py */; }; 48 | F8907A3A2BA807AB00246735 /* Server.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8907A392BA807AB00246735 /* Server.swift */; }; 49 | F8907A3C2BA8B42200246735 /* ServerOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8907A3B2BA8B42200246735 /* ServerOperation.swift */; }; 50 | F8907A3E2BA8D83700246735 /* ServerListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8907A3D2BA8D83700246735 /* ServerListView.swift */; }; 51 | F8907A402BA8F2BD00246735 /* ServerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8907A3F2BA8F2BD00246735 /* ServerController.swift */; }; 52 | /* End PBXBuildFile section */ 53 | 54 | /* Begin PBXContainerItemProxy section */ 55 | F818D9602B96A4DE00BA4664 /* PBXContainerItemProxy */ = { 56 | isa = PBXContainerItemProxy; 57 | containerPortal = F818D9462B96A4DC00BA4664 /* Project object */; 58 | proxyType = 1; 59 | remoteGlobalIDString = F818D94D2B96A4DC00BA4664; 60 | remoteInfo = PicoMLXServer; 61 | }; 62 | F818D96A2B96A4DE00BA4664 /* PBXContainerItemProxy */ = { 63 | isa = PBXContainerItemProxy; 64 | containerPortal = F818D9462B96A4DC00BA4664 /* Project object */; 65 | proxyType = 1; 66 | remoteGlobalIDString = F818D94D2B96A4DC00BA4664; 67 | remoteInfo = PicoMLXServer; 68 | }; 69 | /* End PBXContainerItemProxy section */ 70 | 71 | /* Begin PBXFileReference section */ 72 | F8145FD22BA128830086CBE7 /* BashOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BashOperation.swift; sourceTree = ""; }; 73 | F8145FD42BA16C100086CBE7 /* PicoError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PicoError.swift; sourceTree = ""; }; 74 | F8145FD72BA16DD90086CBE7 /* String.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = String.swift; sourceTree = ""; }; 75 | F8145FD92BA17F440086CBE7 /* Dependencies.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Dependencies.plist; sourceTree = ""; }; 76 | F8145FDC2BA205830086CBE7 /* Platform.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Platform.swift; sourceTree = ""; }; 77 | F8145FDE2BA207A80086CBE7 /* Dependency.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dependency.swift; sourceTree = ""; }; 78 | F8145FE02BA213400086CBE7 /* SetupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetupView.swift; sourceTree = ""; }; 79 | F8145FF02BA226170086CBE7 /* NSApplication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSApplication.swift; sourceTree = ""; }; 80 | F8145FF22BA2624C0086CBE7 /* PlatformViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlatformViewModel.swift; sourceTree = ""; }; 81 | F8145FF42BA262AD0086CBE7 /* DependencyViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DependencyViewModel.swift; sourceTree = ""; }; 82 | F8145FF72BA264D00086CBE7 /* BrewInstall.command */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = BrewInstall.command; sourceTree = ""; }; 83 | F8145FF82BA264D10086CBE7 /* Execute.command */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = Execute.command; sourceTree = ""; }; 84 | F8145FF92BA264D10086CBE7 /* uninstall.command */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = uninstall.command; sourceTree = ""; }; 85 | F8145FFD2BA27C960086CBE7 /* DependencyState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DependencyState.swift; sourceTree = ""; }; 86 | F8145FFF2BA283290086CBE7 /* DependencyViewModel+Operations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DependencyViewModel+Operations.swift"; sourceTree = ""; }; 87 | F81460012BA2A9C10086CBE7 /* Queue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Queue.swift; sourceTree = ""; }; 88 | F818D94E2B96A4DC00BA4664 /* PicoMLXServer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PicoMLXServer.app; sourceTree = BUILT_PRODUCTS_DIR; }; 89 | F818D9512B96A4DC00BA4664 /* PicoMLXServerApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PicoMLXServerApp.swift; sourceTree = ""; }; 90 | F818D9552B96A4DE00BA4664 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 91 | F818D9582B96A4DE00BA4664 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 92 | F818D95A2B96A4DE00BA4664 /* PicoMLXServer.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = PicoMLXServer.entitlements; sourceTree = ""; }; 93 | F818D95F2B96A4DE00BA4664 /* PicoMLXServerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PicoMLXServerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 94 | F818D9632B96A4DE00BA4664 /* PicoMLXServerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PicoMLXServerTests.swift; sourceTree = ""; }; 95 | F818D9692B96A4DE00BA4664 /* PicoMLXServerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PicoMLXServerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 96 | F818D96D2B96A4DE00BA4664 /* PicoMLXServerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PicoMLXServerUITests.swift; sourceTree = ""; }; 97 | F818D96F2B96A4DE00BA4664 /* PicoMLXServerUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PicoMLXServerUITestsLaunchTests.swift; sourceTree = ""; }; 98 | F818D97C2B96A7B400BA4664 /* MenuExtra.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuExtra.swift; sourceTree = ""; }; 99 | F818D97E2B96A80500BA4664 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; 100 | F846FDC82BACBFB5005EE38A /* Bundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bundle.swift; sourceTree = ""; }; 101 | F861C3832BAA67E4004BBB86 /* ServerLogView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerLogView.swift; sourceTree = ""; }; 102 | F88F110F2BA92D5B004743A5 /* ServerManagerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerManagerView.swift; sourceTree = ""; }; 103 | F88F11112BA92D75004743A5 /* ServerListMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListMenu.swift; sourceTree = ""; }; 104 | F8907A372BA8060B00246735 /* server.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = server.py; sourceTree = ""; }; 105 | F8907A392BA807AB00246735 /* Server.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Server.swift; sourceTree = ""; }; 106 | F8907A3B2BA8B42200246735 /* ServerOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerOperation.swift; sourceTree = ""; }; 107 | F8907A3D2BA8D83700246735 /* ServerListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListView.swift; sourceTree = ""; }; 108 | F8907A3F2BA8F2BD00246735 /* ServerController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerController.swift; sourceTree = ""; }; 109 | F8C7C6732BAB55A800B24BB5 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 110 | F8C7C6742BAB55B100B24BB5 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; 111 | /* End PBXFileReference section */ 112 | 113 | /* Begin PBXFrameworksBuildPhase section */ 114 | F818D94B2B96A4DC00BA4664 /* Frameworks */ = { 115 | isa = PBXFrameworksBuildPhase; 116 | buildActionMask = 2147483647; 117 | files = ( 118 | F81460052BA2DF440086CBE7 /* FullDiskAccess in Frameworks */, 119 | F8145FC72B96B5590086CBE7 /* Transformers in Frameworks */, 120 | F8145FC42B96B40C0086CBE7 /* MLXOptimizers in Frameworks */, 121 | F8145FEB2BA21DD40086CBE7 /* Collections in Frameworks */, 122 | F8145FBC2B96B40C0086CBE7 /* MLX in Frameworks */, 123 | F8145FC02B96B40C0086CBE7 /* MLXLinalg in Frameworks */, 124 | F8145FC22B96B40C0086CBE7 /* MLXNN in Frameworks */, 125 | F8145FBE2B96B40C0086CBE7 /* MLXFFT in Frameworks */, 126 | F8145FE82BA21DB40086CBE7 /* SplitView in Frameworks */, 127 | ); 128 | runOnlyForDeploymentPostprocessing = 0; 129 | }; 130 | F818D95C2B96A4DE00BA4664 /* Frameworks */ = { 131 | isa = PBXFrameworksBuildPhase; 132 | buildActionMask = 2147483647; 133 | files = ( 134 | ); 135 | runOnlyForDeploymentPostprocessing = 0; 136 | }; 137 | F818D9662B96A4DE00BA4664 /* Frameworks */ = { 138 | isa = PBXFrameworksBuildPhase; 139 | buildActionMask = 2147483647; 140 | files = ( 141 | ); 142 | runOnlyForDeploymentPostprocessing = 0; 143 | }; 144 | /* End PBXFrameworksBuildPhase section */ 145 | 146 | /* Begin PBXGroup section */ 147 | F8145FD12BA127470086CBE7 /* Setup */ = { 148 | isa = PBXGroup; 149 | children = ( 150 | F8145FDB2BA205470086CBE7 /* Models */, 151 | F8145FE02BA213400086CBE7 /* SetupView.swift */, 152 | ); 153 | path = Setup; 154 | sourceTree = ""; 155 | }; 156 | F8145FD62BA16DCF0086CBE7 /* Extensions */ = { 157 | isa = PBXGroup; 158 | children = ( 159 | F8145FD72BA16DD90086CBE7 /* String.swift */, 160 | F8145FF02BA226170086CBE7 /* NSApplication.swift */, 161 | F846FDC82BACBFB5005EE38A /* Bundle.swift */, 162 | ); 163 | path = Extensions; 164 | sourceTree = ""; 165 | }; 166 | F8145FDB2BA205470086CBE7 /* Models */ = { 167 | isa = PBXGroup; 168 | children = ( 169 | F8145FD92BA17F440086CBE7 /* Dependencies.plist */, 170 | F8145FDC2BA205830086CBE7 /* Platform.swift */, 171 | F8145FDE2BA207A80086CBE7 /* Dependency.swift */, 172 | F8145FF22BA2624C0086CBE7 /* PlatformViewModel.swift */, 173 | F8145FF42BA262AD0086CBE7 /* DependencyViewModel.swift */, 174 | F8145FFF2BA283290086CBE7 /* DependencyViewModel+Operations.swift */, 175 | F8145FFD2BA27C960086CBE7 /* DependencyState.swift */, 176 | ); 177 | path = Models; 178 | sourceTree = ""; 179 | }; 180 | F8145FF62BA264B80086CBE7 /* Bash Commands */ = { 181 | isa = PBXGroup; 182 | children = ( 183 | F8145FD22BA128830086CBE7 /* BashOperation.swift */, 184 | F81460012BA2A9C10086CBE7 /* Queue.swift */, 185 | F8145FF72BA264D00086CBE7 /* BrewInstall.command */, 186 | F8145FF82BA264D10086CBE7 /* Execute.command */, 187 | F8145FF92BA264D10086CBE7 /* uninstall.command */, 188 | ); 189 | path = "Bash Commands"; 190 | sourceTree = ""; 191 | }; 192 | F818D9452B96A4DC00BA4664 = { 193 | isa = PBXGroup; 194 | children = ( 195 | F8C7C6732BAB55A800B24BB5 /* README.md */, 196 | F8C7C6742BAB55B100B24BB5 /* LICENSE */, 197 | F818D9502B96A4DC00BA4664 /* PicoMLXServer */, 198 | F818D9622B96A4DE00BA4664 /* PicoMLXServerTests */, 199 | F818D96C2B96A4DE00BA4664 /* PicoMLXServerUITests */, 200 | F818D94F2B96A4DC00BA4664 /* Products */, 201 | ); 202 | sourceTree = ""; 203 | }; 204 | F818D94F2B96A4DC00BA4664 /* Products */ = { 205 | isa = PBXGroup; 206 | children = ( 207 | F818D94E2B96A4DC00BA4664 /* PicoMLXServer.app */, 208 | F818D95F2B96A4DE00BA4664 /* PicoMLXServerTests.xctest */, 209 | F818D9692B96A4DE00BA4664 /* PicoMLXServerUITests.xctest */, 210 | ); 211 | name = Products; 212 | sourceTree = ""; 213 | }; 214 | F818D9502B96A4DC00BA4664 /* PicoMLXServer */ = { 215 | isa = PBXGroup; 216 | children = ( 217 | F818D9512B96A4DC00BA4664 /* PicoMLXServerApp.swift */, 218 | F8145FD62BA16DCF0086CBE7 /* Extensions */, 219 | F8145FF62BA264B80086CBE7 /* Bash Commands */, 220 | F8145FD12BA127470086CBE7 /* Setup */, 221 | F8907A362BA800B100246735 /* Server Manager */, 222 | F88F110D2BA92CC2004743A5 /* Menu */, 223 | F818D97E2B96A80500BA4664 /* SettingsView.swift */, 224 | F8145FD42BA16C100086CBE7 /* PicoError.swift */, 225 | F818D9552B96A4DE00BA4664 /* Assets.xcassets */, 226 | F818D95A2B96A4DE00BA4664 /* PicoMLXServer.entitlements */, 227 | F818D9572B96A4DE00BA4664 /* Preview Content */, 228 | ); 229 | path = PicoMLXServer; 230 | sourceTree = ""; 231 | }; 232 | F818D9572B96A4DE00BA4664 /* Preview Content */ = { 233 | isa = PBXGroup; 234 | children = ( 235 | F818D9582B96A4DE00BA4664 /* Preview Assets.xcassets */, 236 | ); 237 | path = "Preview Content"; 238 | sourceTree = ""; 239 | }; 240 | F818D9622B96A4DE00BA4664 /* PicoMLXServerTests */ = { 241 | isa = PBXGroup; 242 | children = ( 243 | F818D9632B96A4DE00BA4664 /* PicoMLXServerTests.swift */, 244 | ); 245 | path = PicoMLXServerTests; 246 | sourceTree = ""; 247 | }; 248 | F818D96C2B96A4DE00BA4664 /* PicoMLXServerUITests */ = { 249 | isa = PBXGroup; 250 | children = ( 251 | F818D96D2B96A4DE00BA4664 /* PicoMLXServerUITests.swift */, 252 | F818D96F2B96A4DE00BA4664 /* PicoMLXServerUITestsLaunchTests.swift */, 253 | ); 254 | path = PicoMLXServerUITests; 255 | sourceTree = ""; 256 | }; 257 | F88F110D2BA92CC2004743A5 /* Menu */ = { 258 | isa = PBXGroup; 259 | children = ( 260 | F818D97C2B96A7B400BA4664 /* MenuExtra.swift */, 261 | F88F11112BA92D75004743A5 /* ServerListMenu.swift */, 262 | ); 263 | path = Menu; 264 | sourceTree = ""; 265 | }; 266 | F88F110E2BA92CEC004743A5 /* Models */ = { 267 | isa = PBXGroup; 268 | children = ( 269 | F8907A372BA8060B00246735 /* server.py */, 270 | F8907A392BA807AB00246735 /* Server.swift */, 271 | F8907A3F2BA8F2BD00246735 /* ServerController.swift */, 272 | F8907A3B2BA8B42200246735 /* ServerOperation.swift */, 273 | ); 274 | path = Models; 275 | sourceTree = ""; 276 | }; 277 | F8907A362BA800B100246735 /* Server Manager */ = { 278 | isa = PBXGroup; 279 | children = ( 280 | F88F110E2BA92CEC004743A5 /* Models */, 281 | F88F110F2BA92D5B004743A5 /* ServerManagerView.swift */, 282 | F8907A3D2BA8D83700246735 /* ServerListView.swift */, 283 | F861C3832BAA67E4004BBB86 /* ServerLogView.swift */, 284 | ); 285 | path = "Server Manager"; 286 | sourceTree = ""; 287 | }; 288 | /* End PBXGroup section */ 289 | 290 | /* Begin PBXNativeTarget section */ 291 | F818D94D2B96A4DC00BA4664 /* PicoMLXServer */ = { 292 | isa = PBXNativeTarget; 293 | buildConfigurationList = F818D9732B96A4DE00BA4664 /* Build configuration list for PBXNativeTarget "PicoMLXServer" */; 294 | buildPhases = ( 295 | F818D94A2B96A4DC00BA4664 /* Sources */, 296 | F818D94B2B96A4DC00BA4664 /* Frameworks */, 297 | F818D94C2B96A4DC00BA4664 /* Resources */, 298 | ); 299 | buildRules = ( 300 | ); 301 | dependencies = ( 302 | ); 303 | name = PicoMLXServer; 304 | packageProductDependencies = ( 305 | F8145FBB2B96B40C0086CBE7 /* MLX */, 306 | F8145FBD2B96B40C0086CBE7 /* MLXFFT */, 307 | F8145FBF2B96B40C0086CBE7 /* MLXLinalg */, 308 | F8145FC12B96B40C0086CBE7 /* MLXNN */, 309 | F8145FC32B96B40C0086CBE7 /* MLXOptimizers */, 310 | F8145FC62B96B5590086CBE7 /* Transformers */, 311 | F8145FE72BA21DB40086CBE7 /* SplitView */, 312 | F8145FEA2BA21DD40086CBE7 /* Collections */, 313 | F81460042BA2DF440086CBE7 /* FullDiskAccess */, 314 | ); 315 | productName = PicoMLXServer; 316 | productReference = F818D94E2B96A4DC00BA4664 /* PicoMLXServer.app */; 317 | productType = "com.apple.product-type.application"; 318 | }; 319 | F818D95E2B96A4DE00BA4664 /* PicoMLXServerTests */ = { 320 | isa = PBXNativeTarget; 321 | buildConfigurationList = F818D9762B96A4DE00BA4664 /* Build configuration list for PBXNativeTarget "PicoMLXServerTests" */; 322 | buildPhases = ( 323 | F818D95B2B96A4DE00BA4664 /* Sources */, 324 | F818D95C2B96A4DE00BA4664 /* Frameworks */, 325 | F818D95D2B96A4DE00BA4664 /* Resources */, 326 | ); 327 | buildRules = ( 328 | ); 329 | dependencies = ( 330 | F818D9612B96A4DE00BA4664 /* PBXTargetDependency */, 331 | ); 332 | name = PicoMLXServerTests; 333 | productName = PicoMLXServerTests; 334 | productReference = F818D95F2B96A4DE00BA4664 /* PicoMLXServerTests.xctest */; 335 | productType = "com.apple.product-type.bundle.unit-test"; 336 | }; 337 | F818D9682B96A4DE00BA4664 /* PicoMLXServerUITests */ = { 338 | isa = PBXNativeTarget; 339 | buildConfigurationList = F818D9792B96A4DE00BA4664 /* Build configuration list for PBXNativeTarget "PicoMLXServerUITests" */; 340 | buildPhases = ( 341 | F818D9652B96A4DE00BA4664 /* Sources */, 342 | F818D9662B96A4DE00BA4664 /* Frameworks */, 343 | F818D9672B96A4DE00BA4664 /* Resources */, 344 | ); 345 | buildRules = ( 346 | ); 347 | dependencies = ( 348 | F818D96B2B96A4DE00BA4664 /* PBXTargetDependency */, 349 | ); 350 | name = PicoMLXServerUITests; 351 | productName = PicoMLXServerUITests; 352 | productReference = F818D9692B96A4DE00BA4664 /* PicoMLXServerUITests.xctest */; 353 | productType = "com.apple.product-type.bundle.ui-testing"; 354 | }; 355 | /* End PBXNativeTarget section */ 356 | 357 | /* Begin PBXProject section */ 358 | F818D9462B96A4DC00BA4664 /* Project object */ = { 359 | isa = PBXProject; 360 | attributes = { 361 | BuildIndependentTargetsInParallel = 1; 362 | LastSwiftUpdateCheck = 1520; 363 | LastUpgradeCheck = 1520; 364 | TargetAttributes = { 365 | F818D94D2B96A4DC00BA4664 = { 366 | CreatedOnToolsVersion = 15.2; 367 | }; 368 | F818D95E2B96A4DE00BA4664 = { 369 | CreatedOnToolsVersion = 15.2; 370 | TestTargetID = F818D94D2B96A4DC00BA4664; 371 | }; 372 | F818D9682B96A4DE00BA4664 = { 373 | CreatedOnToolsVersion = 15.2; 374 | TestTargetID = F818D94D2B96A4DC00BA4664; 375 | }; 376 | }; 377 | }; 378 | buildConfigurationList = F818D9492B96A4DC00BA4664 /* Build configuration list for PBXProject "PicoMLXServer" */; 379 | compatibilityVersion = "Xcode 14.0"; 380 | developmentRegion = en; 381 | hasScannedForEncodings = 0; 382 | knownRegions = ( 383 | en, 384 | Base, 385 | ); 386 | mainGroup = F818D9452B96A4DC00BA4664; 387 | packageReferences = ( 388 | F8145FBA2B96B40C0086CBE7 /* XCRemoteSwiftPackageReference "mlx-swift" */, 389 | F8145FC52B96B5590086CBE7 /* XCRemoteSwiftPackageReference "swift-transformers" */, 390 | F8145FE62BA21DB40086CBE7 /* XCRemoteSwiftPackageReference "SplitView" */, 391 | F8145FE92BA21DD40086CBE7 /* XCRemoteSwiftPackageReference "swift-collections" */, 392 | F81460032BA2DF440086CBE7 /* XCRemoteSwiftPackageReference "FullDiskAccess" */, 393 | ); 394 | productRefGroup = F818D94F2B96A4DC00BA4664 /* Products */; 395 | projectDirPath = ""; 396 | projectRoot = ""; 397 | targets = ( 398 | F818D94D2B96A4DC00BA4664 /* PicoMLXServer */, 399 | F818D95E2B96A4DE00BA4664 /* PicoMLXServerTests */, 400 | F818D9682B96A4DE00BA4664 /* PicoMLXServerUITests */, 401 | ); 402 | }; 403 | /* End PBXProject section */ 404 | 405 | /* Begin PBXResourcesBuildPhase section */ 406 | F818D94C2B96A4DC00BA4664 /* Resources */ = { 407 | isa = PBXResourcesBuildPhase; 408 | buildActionMask = 2147483647; 409 | files = ( 410 | F818D9592B96A4DE00BA4664 /* Preview Assets.xcassets in Resources */, 411 | F818D9562B96A4DE00BA4664 /* Assets.xcassets in Resources */, 412 | F8145FDA2BA17F440086CBE7 /* Dependencies.plist in Resources */, 413 | F8145FFB2BA264D10086CBE7 /* Execute.command in Resources */, 414 | F8907A382BA8060B00246735 /* server.py in Resources */, 415 | F8145FFC2BA264D10086CBE7 /* uninstall.command in Resources */, 416 | F8145FFA2BA264D10086CBE7 /* BrewInstall.command in Resources */, 417 | ); 418 | runOnlyForDeploymentPostprocessing = 0; 419 | }; 420 | F818D95D2B96A4DE00BA4664 /* Resources */ = { 421 | isa = PBXResourcesBuildPhase; 422 | buildActionMask = 2147483647; 423 | files = ( 424 | ); 425 | runOnlyForDeploymentPostprocessing = 0; 426 | }; 427 | F818D9672B96A4DE00BA4664 /* Resources */ = { 428 | isa = PBXResourcesBuildPhase; 429 | buildActionMask = 2147483647; 430 | files = ( 431 | ); 432 | runOnlyForDeploymentPostprocessing = 0; 433 | }; 434 | /* End PBXResourcesBuildPhase section */ 435 | 436 | /* Begin PBXSourcesBuildPhase section */ 437 | F818D94A2B96A4DC00BA4664 /* Sources */ = { 438 | isa = PBXSourcesBuildPhase; 439 | buildActionMask = 2147483647; 440 | files = ( 441 | F8907A3C2BA8B42200246735 /* ServerOperation.swift in Sources */, 442 | F846FDC92BACBFB5005EE38A /* Bundle.swift in Sources */, 443 | F8145FFE2BA27C960086CBE7 /* DependencyState.swift in Sources */, 444 | F88F11122BA92D75004743A5 /* ServerListMenu.swift in Sources */, 445 | F818D97F2B96A80500BA4664 /* SettingsView.swift in Sources */, 446 | F8145FF52BA262AD0086CBE7 /* DependencyViewModel.swift in Sources */, 447 | F818D97D2B96A7B400BA4664 /* MenuExtra.swift in Sources */, 448 | F8145FDF2BA207A80086CBE7 /* Dependency.swift in Sources */, 449 | F818D9522B96A4DC00BA4664 /* PicoMLXServerApp.swift in Sources */, 450 | F8907A3E2BA8D83700246735 /* ServerListView.swift in Sources */, 451 | F8145FF12BA226170086CBE7 /* NSApplication.swift in Sources */, 452 | F8145FD82BA16DD90086CBE7 /* String.swift in Sources */, 453 | F81460002BA283290086CBE7 /* DependencyViewModel+Operations.swift in Sources */, 454 | F88F11102BA92D5B004743A5 /* ServerManagerView.swift in Sources */, 455 | F861C3842BAA67E4004BBB86 /* ServerLogView.swift in Sources */, 456 | F8145FD32BA128830086CBE7 /* BashOperation.swift in Sources */, 457 | F8145FF32BA2624D0086CBE7 /* PlatformViewModel.swift in Sources */, 458 | F81460022BA2A9C10086CBE7 /* Queue.swift in Sources */, 459 | F8145FDD2BA205830086CBE7 /* Platform.swift in Sources */, 460 | F8907A402BA8F2BD00246735 /* ServerController.swift in Sources */, 461 | F8145FE12BA213400086CBE7 /* SetupView.swift in Sources */, 462 | F8907A3A2BA807AB00246735 /* Server.swift in Sources */, 463 | F8145FD52BA16C100086CBE7 /* PicoError.swift in Sources */, 464 | ); 465 | runOnlyForDeploymentPostprocessing = 0; 466 | }; 467 | F818D95B2B96A4DE00BA4664 /* Sources */ = { 468 | isa = PBXSourcesBuildPhase; 469 | buildActionMask = 2147483647; 470 | files = ( 471 | F818D9642B96A4DE00BA4664 /* PicoMLXServerTests.swift in Sources */, 472 | ); 473 | runOnlyForDeploymentPostprocessing = 0; 474 | }; 475 | F818D9652B96A4DE00BA4664 /* Sources */ = { 476 | isa = PBXSourcesBuildPhase; 477 | buildActionMask = 2147483647; 478 | files = ( 479 | F818D9702B96A4DE00BA4664 /* PicoMLXServerUITestsLaunchTests.swift in Sources */, 480 | F818D96E2B96A4DE00BA4664 /* PicoMLXServerUITests.swift in Sources */, 481 | ); 482 | runOnlyForDeploymentPostprocessing = 0; 483 | }; 484 | /* End PBXSourcesBuildPhase section */ 485 | 486 | /* Begin PBXTargetDependency section */ 487 | F818D9612B96A4DE00BA4664 /* PBXTargetDependency */ = { 488 | isa = PBXTargetDependency; 489 | target = F818D94D2B96A4DC00BA4664 /* PicoMLXServer */; 490 | targetProxy = F818D9602B96A4DE00BA4664 /* PBXContainerItemProxy */; 491 | }; 492 | F818D96B2B96A4DE00BA4664 /* PBXTargetDependency */ = { 493 | isa = PBXTargetDependency; 494 | target = F818D94D2B96A4DC00BA4664 /* PicoMLXServer */; 495 | targetProxy = F818D96A2B96A4DE00BA4664 /* PBXContainerItemProxy */; 496 | }; 497 | /* End PBXTargetDependency section */ 498 | 499 | /* Begin XCBuildConfiguration section */ 500 | F818D9712B96A4DE00BA4664 /* Debug */ = { 501 | isa = XCBuildConfiguration; 502 | buildSettings = { 503 | ALWAYS_SEARCH_USER_PATHS = NO; 504 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 505 | CLANG_ANALYZER_NONNULL = YES; 506 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 507 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 508 | CLANG_ENABLE_MODULES = YES; 509 | CLANG_ENABLE_OBJC_ARC = YES; 510 | CLANG_ENABLE_OBJC_WEAK = YES; 511 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 512 | CLANG_WARN_BOOL_CONVERSION = YES; 513 | CLANG_WARN_COMMA = YES; 514 | CLANG_WARN_CONSTANT_CONVERSION = YES; 515 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 516 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 517 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 518 | CLANG_WARN_EMPTY_BODY = YES; 519 | CLANG_WARN_ENUM_CONVERSION = YES; 520 | CLANG_WARN_INFINITE_RECURSION = YES; 521 | CLANG_WARN_INT_CONVERSION = YES; 522 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 523 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 524 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 525 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 526 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 527 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 528 | CLANG_WARN_STRICT_PROTOTYPES = YES; 529 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 530 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 531 | CLANG_WARN_UNREACHABLE_CODE = YES; 532 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 533 | COPY_PHASE_STRIP = NO; 534 | DEBUG_INFORMATION_FORMAT = dwarf; 535 | ENABLE_STRICT_OBJC_MSGSEND = YES; 536 | ENABLE_TESTABILITY = YES; 537 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 538 | GCC_C_LANGUAGE_STANDARD = gnu17; 539 | GCC_DYNAMIC_NO_PIC = NO; 540 | GCC_NO_COMMON_BLOCKS = YES; 541 | GCC_OPTIMIZATION_LEVEL = 0; 542 | GCC_PREPROCESSOR_DEFINITIONS = ( 543 | "DEBUG=1", 544 | "$(inherited)", 545 | ); 546 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 547 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 548 | GCC_WARN_UNDECLARED_SELECTOR = YES; 549 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 550 | GCC_WARN_UNUSED_FUNCTION = YES; 551 | GCC_WARN_UNUSED_VARIABLE = YES; 552 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES; 553 | MACOSX_DEPLOYMENT_TARGET = 14.2; 554 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 555 | MTL_FAST_MATH = YES; 556 | ONLY_ACTIVE_ARCH = YES; 557 | SDKROOT = macosx; 558 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; 559 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 560 | }; 561 | name = Debug; 562 | }; 563 | F818D9722B96A4DE00BA4664 /* Release */ = { 564 | isa = XCBuildConfiguration; 565 | buildSettings = { 566 | ALWAYS_SEARCH_USER_PATHS = NO; 567 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 568 | CLANG_ANALYZER_NONNULL = YES; 569 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 570 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 571 | CLANG_ENABLE_MODULES = YES; 572 | CLANG_ENABLE_OBJC_ARC = YES; 573 | CLANG_ENABLE_OBJC_WEAK = YES; 574 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 575 | CLANG_WARN_BOOL_CONVERSION = YES; 576 | CLANG_WARN_COMMA = YES; 577 | CLANG_WARN_CONSTANT_CONVERSION = YES; 578 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 579 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 580 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 581 | CLANG_WARN_EMPTY_BODY = YES; 582 | CLANG_WARN_ENUM_CONVERSION = YES; 583 | CLANG_WARN_INFINITE_RECURSION = YES; 584 | CLANG_WARN_INT_CONVERSION = YES; 585 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 586 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 587 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 588 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 589 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 590 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 591 | CLANG_WARN_STRICT_PROTOTYPES = YES; 592 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 593 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 594 | CLANG_WARN_UNREACHABLE_CODE = YES; 595 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 596 | COPY_PHASE_STRIP = NO; 597 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 598 | ENABLE_NS_ASSERTIONS = NO; 599 | ENABLE_STRICT_OBJC_MSGSEND = YES; 600 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 601 | GCC_C_LANGUAGE_STANDARD = gnu17; 602 | GCC_NO_COMMON_BLOCKS = YES; 603 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 604 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 605 | GCC_WARN_UNDECLARED_SELECTOR = YES; 606 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 607 | GCC_WARN_UNUSED_FUNCTION = YES; 608 | GCC_WARN_UNUSED_VARIABLE = YES; 609 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES; 610 | MACOSX_DEPLOYMENT_TARGET = 14.2; 611 | MTL_ENABLE_DEBUG_INFO = NO; 612 | MTL_FAST_MATH = YES; 613 | SDKROOT = macosx; 614 | SWIFT_COMPILATION_MODE = wholemodule; 615 | }; 616 | name = Release; 617 | }; 618 | F818D9742B96A4DE00BA4664 /* Debug */ = { 619 | isa = XCBuildConfiguration; 620 | buildSettings = { 621 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 622 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 623 | CODE_SIGN_ENTITLEMENTS = PicoMLXServer/PicoMLXServer.entitlements; 624 | CODE_SIGN_STYLE = Automatic; 625 | COMBINE_HIDPI_IMAGES = YES; 626 | CURRENT_PROJECT_VERSION = 4; 627 | DEVELOPMENT_ASSET_PATHS = "\"PicoMLXServer/Preview Content\""; 628 | DEVELOPMENT_TEAM = TPKP4XK352; 629 | ENABLE_HARDENED_RUNTIME = YES; 630 | ENABLE_PREVIEWS = YES; 631 | GENERATE_INFOPLIST_FILE = YES; 632 | INFOPLIST_KEY_LSUIElement = YES; 633 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 634 | LD_RUNPATH_SEARCH_PATHS = ( 635 | "$(inherited)", 636 | "@executable_path/../Frameworks", 637 | ); 638 | MACOSX_DEPLOYMENT_TARGET = 14.0; 639 | MARKETING_VERSION = 0.1.3; 640 | PRODUCT_BUNDLE_IDENTIFIER = com.starlingprotocol.PicoMLXServer; 641 | PRODUCT_NAME = "$(TARGET_NAME)"; 642 | SWIFT_EMIT_LOC_STRINGS = YES; 643 | SWIFT_VERSION = 5.0; 644 | }; 645 | name = Debug; 646 | }; 647 | F818D9752B96A4DE00BA4664 /* Release */ = { 648 | isa = XCBuildConfiguration; 649 | buildSettings = { 650 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 651 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 652 | CODE_SIGN_ENTITLEMENTS = PicoMLXServer/PicoMLXServer.entitlements; 653 | CODE_SIGN_STYLE = Automatic; 654 | COMBINE_HIDPI_IMAGES = YES; 655 | CURRENT_PROJECT_VERSION = 4; 656 | DEVELOPMENT_ASSET_PATHS = "\"PicoMLXServer/Preview Content\""; 657 | DEVELOPMENT_TEAM = TPKP4XK352; 658 | ENABLE_HARDENED_RUNTIME = YES; 659 | ENABLE_PREVIEWS = YES; 660 | GENERATE_INFOPLIST_FILE = YES; 661 | INFOPLIST_KEY_LSUIElement = YES; 662 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 663 | LD_RUNPATH_SEARCH_PATHS = ( 664 | "$(inherited)", 665 | "@executable_path/../Frameworks", 666 | ); 667 | MACOSX_DEPLOYMENT_TARGET = 14.0; 668 | MARKETING_VERSION = 0.1.3; 669 | PRODUCT_BUNDLE_IDENTIFIER = com.starlingprotocol.PicoMLXServer; 670 | PRODUCT_NAME = "$(TARGET_NAME)"; 671 | SWIFT_EMIT_LOC_STRINGS = YES; 672 | SWIFT_VERSION = 5.0; 673 | }; 674 | name = Release; 675 | }; 676 | F818D9772B96A4DE00BA4664 /* Debug */ = { 677 | isa = XCBuildConfiguration; 678 | buildSettings = { 679 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 680 | BUNDLE_LOADER = "$(TEST_HOST)"; 681 | CODE_SIGN_STYLE = Automatic; 682 | CURRENT_PROJECT_VERSION = 1; 683 | DEVELOPMENT_TEAM = TPKP4XK352; 684 | GENERATE_INFOPLIST_FILE = YES; 685 | MACOSX_DEPLOYMENT_TARGET = 14.2; 686 | MARKETING_VERSION = 1.0; 687 | PRODUCT_BUNDLE_IDENTIFIER = com.starlingprotocol.PicoMLXServerTests; 688 | PRODUCT_NAME = "$(TARGET_NAME)"; 689 | SWIFT_EMIT_LOC_STRINGS = NO; 690 | SWIFT_VERSION = 5.0; 691 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/PicoMLXServer.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/PicoMLXServer"; 692 | }; 693 | name = Debug; 694 | }; 695 | F818D9782B96A4DE00BA4664 /* Release */ = { 696 | isa = XCBuildConfiguration; 697 | buildSettings = { 698 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 699 | BUNDLE_LOADER = "$(TEST_HOST)"; 700 | CODE_SIGN_STYLE = Automatic; 701 | CURRENT_PROJECT_VERSION = 1; 702 | DEVELOPMENT_TEAM = TPKP4XK352; 703 | GENERATE_INFOPLIST_FILE = YES; 704 | MACOSX_DEPLOYMENT_TARGET = 14.2; 705 | MARKETING_VERSION = 1.0; 706 | PRODUCT_BUNDLE_IDENTIFIER = com.starlingprotocol.PicoMLXServerTests; 707 | PRODUCT_NAME = "$(TARGET_NAME)"; 708 | SWIFT_EMIT_LOC_STRINGS = NO; 709 | SWIFT_VERSION = 5.0; 710 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/PicoMLXServer.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/PicoMLXServer"; 711 | }; 712 | name = Release; 713 | }; 714 | F818D97A2B96A4DE00BA4664 /* Debug */ = { 715 | isa = XCBuildConfiguration; 716 | buildSettings = { 717 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 718 | CODE_SIGN_STYLE = Automatic; 719 | CURRENT_PROJECT_VERSION = 1; 720 | DEVELOPMENT_TEAM = TPKP4XK352; 721 | GENERATE_INFOPLIST_FILE = YES; 722 | MARKETING_VERSION = 1.0; 723 | PRODUCT_BUNDLE_IDENTIFIER = com.starlingprotocol.PicoMLXServerUITests; 724 | PRODUCT_NAME = "$(TARGET_NAME)"; 725 | SWIFT_EMIT_LOC_STRINGS = NO; 726 | SWIFT_VERSION = 5.0; 727 | TEST_TARGET_NAME = PicoMLXServer; 728 | }; 729 | name = Debug; 730 | }; 731 | F818D97B2B96A4DE00BA4664 /* Release */ = { 732 | isa = XCBuildConfiguration; 733 | buildSettings = { 734 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 735 | CODE_SIGN_STYLE = Automatic; 736 | CURRENT_PROJECT_VERSION = 1; 737 | DEVELOPMENT_TEAM = TPKP4XK352; 738 | GENERATE_INFOPLIST_FILE = YES; 739 | MARKETING_VERSION = 1.0; 740 | PRODUCT_BUNDLE_IDENTIFIER = com.starlingprotocol.PicoMLXServerUITests; 741 | PRODUCT_NAME = "$(TARGET_NAME)"; 742 | SWIFT_EMIT_LOC_STRINGS = NO; 743 | SWIFT_VERSION = 5.0; 744 | TEST_TARGET_NAME = PicoMLXServer; 745 | }; 746 | name = Release; 747 | }; 748 | /* End XCBuildConfiguration section */ 749 | 750 | /* Begin XCConfigurationList section */ 751 | F818D9492B96A4DC00BA4664 /* Build configuration list for PBXProject "PicoMLXServer" */ = { 752 | isa = XCConfigurationList; 753 | buildConfigurations = ( 754 | F818D9712B96A4DE00BA4664 /* Debug */, 755 | F818D9722B96A4DE00BA4664 /* Release */, 756 | ); 757 | defaultConfigurationIsVisible = 0; 758 | defaultConfigurationName = Release; 759 | }; 760 | F818D9732B96A4DE00BA4664 /* Build configuration list for PBXNativeTarget "PicoMLXServer" */ = { 761 | isa = XCConfigurationList; 762 | buildConfigurations = ( 763 | F818D9742B96A4DE00BA4664 /* Debug */, 764 | F818D9752B96A4DE00BA4664 /* Release */, 765 | ); 766 | defaultConfigurationIsVisible = 0; 767 | defaultConfigurationName = Release; 768 | }; 769 | F818D9762B96A4DE00BA4664 /* Build configuration list for PBXNativeTarget "PicoMLXServerTests" */ = { 770 | isa = XCConfigurationList; 771 | buildConfigurations = ( 772 | F818D9772B96A4DE00BA4664 /* Debug */, 773 | F818D9782B96A4DE00BA4664 /* Release */, 774 | ); 775 | defaultConfigurationIsVisible = 0; 776 | defaultConfigurationName = Release; 777 | }; 778 | F818D9792B96A4DE00BA4664 /* Build configuration list for PBXNativeTarget "PicoMLXServerUITests" */ = { 779 | isa = XCConfigurationList; 780 | buildConfigurations = ( 781 | F818D97A2B96A4DE00BA4664 /* Debug */, 782 | F818D97B2B96A4DE00BA4664 /* Release */, 783 | ); 784 | defaultConfigurationIsVisible = 0; 785 | defaultConfigurationName = Release; 786 | }; 787 | /* End XCConfigurationList section */ 788 | 789 | /* Begin XCRemoteSwiftPackageReference section */ 790 | F8145FBA2B96B40C0086CBE7 /* XCRemoteSwiftPackageReference "mlx-swift" */ = { 791 | isa = XCRemoteSwiftPackageReference; 792 | repositoryURL = "https://github.com/ml-explore/mlx-swift/"; 793 | requirement = { 794 | branch = main; 795 | kind = branch; 796 | }; 797 | }; 798 | F8145FC52B96B5590086CBE7 /* XCRemoteSwiftPackageReference "swift-transformers" */ = { 799 | isa = XCRemoteSwiftPackageReference; 800 | repositoryURL = "https://github.com/huggingface/swift-transformers.git"; 801 | requirement = { 802 | branch = main; 803 | kind = branch; 804 | }; 805 | }; 806 | F8145FE62BA21DB40086CBE7 /* XCRemoteSwiftPackageReference "SplitView" */ = { 807 | isa = XCRemoteSwiftPackageReference; 808 | repositoryURL = "https://github.com/stevengharris/SplitView"; 809 | requirement = { 810 | kind = upToNextMajorVersion; 811 | minimumVersion = 3.5.2; 812 | }; 813 | }; 814 | F8145FE92BA21DD40086CBE7 /* XCRemoteSwiftPackageReference "swift-collections" */ = { 815 | isa = XCRemoteSwiftPackageReference; 816 | repositoryURL = "https://github.com/apple/swift-collections.git"; 817 | requirement = { 818 | kind = upToNextMajorVersion; 819 | minimumVersion = 1.1.0; 820 | }; 821 | }; 822 | F81460032BA2DF440086CBE7 /* XCRemoteSwiftPackageReference "FullDiskAccess" */ = { 823 | isa = XCRemoteSwiftPackageReference; 824 | repositoryURL = "https://github.com/inket/FullDiskAccess"; 825 | requirement = { 826 | kind = upToNextMajorVersion; 827 | minimumVersion = 1.0.0; 828 | }; 829 | }; 830 | /* End XCRemoteSwiftPackageReference section */ 831 | 832 | /* Begin XCSwiftPackageProductDependency section */ 833 | F8145FBB2B96B40C0086CBE7 /* MLX */ = { 834 | isa = XCSwiftPackageProductDependency; 835 | package = F8145FBA2B96B40C0086CBE7 /* XCRemoteSwiftPackageReference "mlx-swift" */; 836 | productName = MLX; 837 | }; 838 | F8145FBD2B96B40C0086CBE7 /* MLXFFT */ = { 839 | isa = XCSwiftPackageProductDependency; 840 | package = F8145FBA2B96B40C0086CBE7 /* XCRemoteSwiftPackageReference "mlx-swift" */; 841 | productName = MLXFFT; 842 | }; 843 | F8145FBF2B96B40C0086CBE7 /* MLXLinalg */ = { 844 | isa = XCSwiftPackageProductDependency; 845 | package = F8145FBA2B96B40C0086CBE7 /* XCRemoteSwiftPackageReference "mlx-swift" */; 846 | productName = MLXLinalg; 847 | }; 848 | F8145FC12B96B40C0086CBE7 /* MLXNN */ = { 849 | isa = XCSwiftPackageProductDependency; 850 | package = F8145FBA2B96B40C0086CBE7 /* XCRemoteSwiftPackageReference "mlx-swift" */; 851 | productName = MLXNN; 852 | }; 853 | F8145FC32B96B40C0086CBE7 /* MLXOptimizers */ = { 854 | isa = XCSwiftPackageProductDependency; 855 | package = F8145FBA2B96B40C0086CBE7 /* XCRemoteSwiftPackageReference "mlx-swift" */; 856 | productName = MLXOptimizers; 857 | }; 858 | F8145FC62B96B5590086CBE7 /* Transformers */ = { 859 | isa = XCSwiftPackageProductDependency; 860 | package = F8145FC52B96B5590086CBE7 /* XCRemoteSwiftPackageReference "swift-transformers" */; 861 | productName = Transformers; 862 | }; 863 | F8145FE72BA21DB40086CBE7 /* SplitView */ = { 864 | isa = XCSwiftPackageProductDependency; 865 | package = F8145FE62BA21DB40086CBE7 /* XCRemoteSwiftPackageReference "SplitView" */; 866 | productName = SplitView; 867 | }; 868 | F8145FEA2BA21DD40086CBE7 /* Collections */ = { 869 | isa = XCSwiftPackageProductDependency; 870 | package = F8145FE92BA21DD40086CBE7 /* XCRemoteSwiftPackageReference "swift-collections" */; 871 | productName = Collections; 872 | }; 873 | F81460042BA2DF440086CBE7 /* FullDiskAccess */ = { 874 | isa = XCSwiftPackageProductDependency; 875 | package = F81460032BA2DF440086CBE7 /* XCRemoteSwiftPackageReference "FullDiskAccess" */; 876 | productName = FullDiskAccess; 877 | }; 878 | /* End XCSwiftPackageProductDependency section */ 879 | }; 880 | rootObject = F818D9462B96A4DC00BA4664 /* Project object */; 881 | } 882 | -------------------------------------------------------------------------------- /PicoMLXServer.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /PicoMLXServer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /PicoMLXServer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "pins" : [ 3 | { 4 | "identity" : "fulldiskaccess", 5 | "kind" : "remoteSourceControl", 6 | "location" : "https://github.com/inket/FullDiskAccess", 7 | "state" : { 8 | "revision" : "846e04ea2b84fce843f47d7e7f3421189221829c", 9 | "version" : "1.0.0" 10 | } 11 | }, 12 | { 13 | "identity" : "mlx-swift", 14 | "kind" : "remoteSourceControl", 15 | "location" : "https://github.com/ml-explore/mlx-swift/", 16 | "state" : { 17 | "branch" : "main", 18 | "revision" : "d20d63929e0586ba739448ff6de09c405c57eb5c" 19 | } 20 | }, 21 | { 22 | "identity" : "splitview", 23 | "kind" : "remoteSourceControl", 24 | "location" : "https://github.com/stevengharris/SplitView", 25 | "state" : { 26 | "revision" : "b37d559fd334cd5403433a29a5da6fe78f80714a", 27 | "version" : "3.5.2" 28 | } 29 | }, 30 | { 31 | "identity" : "swift-argument-parser", 32 | "kind" : "remoteSourceControl", 33 | "location" : "https://github.com/apple/swift-argument-parser.git", 34 | "state" : { 35 | "revision" : "c8ed701b513cf5177118a175d85fbbbcd707ab41", 36 | "version" : "1.3.0" 37 | } 38 | }, 39 | { 40 | "identity" : "swift-collections", 41 | "kind" : "remoteSourceControl", 42 | "location" : "https://github.com/apple/swift-collections.git", 43 | "state" : { 44 | "revision" : "94cf62b3ba8d4bed62680a282d4c25f9c63c2efb", 45 | "version" : "1.1.0" 46 | } 47 | }, 48 | { 49 | "identity" : "swift-numerics", 50 | "kind" : "remoteSourceControl", 51 | "location" : "https://github.com/apple/swift-numerics", 52 | "state" : { 53 | "revision" : "0a5bc04095a675662cf24757cc0640aa2204253b", 54 | "version" : "1.0.2" 55 | } 56 | }, 57 | { 58 | "identity" : "swift-transformers", 59 | "kind" : "remoteSourceControl", 60 | "location" : "https://github.com/huggingface/swift-transformers.git", 61 | "state" : { 62 | "branch" : "main", 63 | "revision" : "ae3ce32a833faad20cab1d2eedc4ad8d25a86d41" 64 | } 65 | } 66 | ], 67 | "version" : 2 68 | } 69 | -------------------------------------------------------------------------------- /PicoMLXServer.xcodeproj/xcuserdata/ronaldmannak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | PicoMLXServer.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/AppIcon.appiconset/1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/PicoMLXServer/Assets.xcassets/AppIcon.appiconset/1024.png -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/AppIcon.appiconset/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/PicoMLXServer/Assets.xcassets/AppIcon.appiconset/128.png -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/AppIcon.appiconset/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/PicoMLXServer/Assets.xcassets/AppIcon.appiconset/16.png -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/AppIcon.appiconset/256 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/PicoMLXServer/Assets.xcassets/AppIcon.appiconset/256 1.png -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/AppIcon.appiconset/256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/PicoMLXServer/Assets.xcassets/AppIcon.appiconset/256.png -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/AppIcon.appiconset/32 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/PicoMLXServer/Assets.xcassets/AppIcon.appiconset/32 1.png -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/AppIcon.appiconset/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/PicoMLXServer/Assets.xcassets/AppIcon.appiconset/32.png -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/AppIcon.appiconset/512 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/PicoMLXServer/Assets.xcassets/AppIcon.appiconset/512 1.png -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/AppIcon.appiconset/512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/PicoMLXServer/Assets.xcassets/AppIcon.appiconset/512.png -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/AppIcon.appiconset/64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/PicoMLXServer/Assets.xcassets/AppIcon.appiconset/64.png -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "16.png", 5 | "idiom" : "mac", 6 | "scale" : "1x", 7 | "size" : "16x16" 8 | }, 9 | { 10 | "filename" : "32 1.png", 11 | "idiom" : "mac", 12 | "scale" : "2x", 13 | "size" : "16x16" 14 | }, 15 | { 16 | "filename" : "32.png", 17 | "idiom" : "mac", 18 | "scale" : "1x", 19 | "size" : "32x32" 20 | }, 21 | { 22 | "filename" : "64.png", 23 | "idiom" : "mac", 24 | "scale" : "2x", 25 | "size" : "32x32" 26 | }, 27 | { 28 | "filename" : "128.png", 29 | "idiom" : "mac", 30 | "scale" : "1x", 31 | "size" : "128x128" 32 | }, 33 | { 34 | "filename" : "256 1.png", 35 | "idiom" : "mac", 36 | "scale" : "2x", 37 | "size" : "128x128" 38 | }, 39 | { 40 | "filename" : "256.png", 41 | "idiom" : "mac", 42 | "scale" : "1x", 43 | "size" : "256x256" 44 | }, 45 | { 46 | "filename" : "512 1.png", 47 | "idiom" : "mac", 48 | "scale" : "2x", 49 | "size" : "256x256" 50 | }, 51 | { 52 | "filename" : "512.png", 53 | "idiom" : "mac", 54 | "scale" : "1x", 55 | "size" : "512x512" 56 | }, 57 | { 58 | "filename" : "1024.png", 59 | "idiom" : "mac", 60 | "scale" : "2x", 61 | "size" : "512x512" 62 | } 63 | ], 64 | "info" : { 65 | "author" : "xcode", 66 | "version" : 1 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/mlx-logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "mlx-logo.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "mlx-logo64.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/mlx-logo.imageset/mlx-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/PicoMLXServer/Assets.xcassets/mlx-logo.imageset/mlx-logo.png -------------------------------------------------------------------------------- /PicoMLXServer/Assets.xcassets/mlx-logo.imageset/mlx-logo64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PicoMLX/PicoMLXServer/92e05e4a2b0f72b089391e72ceb16dc14486a73a/PicoMLXServer/Assets.xcassets/mlx-logo.imageset/mlx-logo64.png -------------------------------------------------------------------------------- /PicoMLXServer/Bash Commands/BashOperation.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BashOperation.swift 3 | // PicoMLXServer 4 | // 5 | // Created by Ronald Mannak on 3/12/24. 6 | // 7 | // See https://eclecticlight.co/2020/12/10/controlling-processes-and-environments/ 8 | 9 | import Cocoa 10 | import OSLog 11 | 12 | protocol BashOutputProtocol { 13 | 14 | /// Operation received stdOut output from shell 15 | /// Will always be called from the main thread 16 | func bashOperation(_ operation: BashOperation, receivedOutput string: String) 17 | 18 | /// Operation received error from shell 19 | /// Will always be called from the main thread 20 | func bashOperation(_ operation: BashOperation, receivedError string: String) 21 | } 22 | 23 | class BashOperation: Operation { 24 | 25 | let logger = Logger(subsystem: "PicoMLXServer", category: "BashOperation") 26 | 27 | /// Alternative to using 28 | var delegate: BashOutputProtocol? 29 | 30 | /// Closure to forward stdout 31 | var outputClosure: ((String) -> Void)? 32 | 33 | /// Closure to forward stderr 34 | var errClosure: ((String) -> Void)? 35 | 36 | /// If any of the commands in the script returns non-zero, 37 | /// the script will cancel and forward the exit code 38 | /// 0 is success, anything else is an error 39 | /// http://www.tldp.org/LDP/abs/html/exitcodes.html 40 | private (set) var exitStatus: Int? 41 | 42 | /// Complete output 43 | private (set) var output: String = "" 44 | 45 | private let task = Process() 46 | private let outputPipe = Pipe() 47 | private let inputPipe = Pipe() 48 | 49 | private let launchPath: String 50 | private var notification: NSObjectProtocol! 51 | private let arguments: [String] 52 | private let path: String 53 | 54 | /// Convenience initializer for generic Execute.command script 55 | /// 56 | /// - Parameters: 57 | /// - script: