The MUT Open Source (and more)


Facebook memories says it has been two years since MUT hit the App Store as version 2.1.0--which happened roughly a year after I began work on it. I thought it was a good time to look back on the last three years of development. Pardon the lengthy post.


The MUT is now open source

The MUT can be found on GitHub here:

Open source is something that I have had planned for MUT for a very long time; however, I was hesitant to do so, because I was embarrassed. I have no formal programming training. I graduated from UWEC with a business degree, and began scripting because I enjoyed it.

The MUT was my project to learn how to create an "actual program" instead of just scripts. It was created by watching YouTube videos, copy and pasting from Stack Overflow, using Google to resolve error messages that came up, and piecing it together a bit at a time. The source code is ugly.

I know there are folks smarter and more proficient than I, and if I open source it, and others contribute, the scope of the project may quickly be over my head--limiting my learning. I was also hesitant because I am embarrassed of the code. However, I've decided to swallow my pride, and to do what's best for the end user--allow folks smarter than me to make MUT even more awesome.

After all, the developers of Celeste were brave enough to open source all of their player movement code, and many said it was messy beyond belief. But at the end of the day, it's a wonderful game, and now others can learn from their code.


The MUT v4.1.0 has been released

The MUT v4.1.0 contains a fix for an old issue that has long plagued users of The MUT. Previously, the library that I used for parsing CSV files did not process line breaks properly unless they were in a specific format. This required end users to format their CSV in "Windows Comma Separated" or "MSDOS Comma Separated" formats so the line breaks could be seen/parsed.

This issue is now resolved.


I will continue to work on MUT

Although it is now open source, MUT is, and always has been, a learning project for me--and I'm not done learning. Lately, I've been struggling with finding a way to allow updates of multiple fields simultaneously, while keeping the app user-friendly and streamlined. It turns out learning to design UX is almost as hard as harder than learning to actually write the code to make things work. Multiple updates is the goal, and it's one I will continue to work towards.


Weebly tells me I have around ~250 unique visitors every week, with on average 40-50 unique visitors per day to


And Apple's iTunes Connect gives insights that there are App Store downloads all over the globe (30 rolling days and previous 30 days):


Thank yous

I've received tons of support in this project. From colleagues and friends. I've also had many emails/messages/people approaching me at JNUC/etc expressing encouragement and appreciation for MUT, but also giving critique and helping me on my learning journey. Thank you to all of you. I would not have created what I did, and would not have learned what I learned without you.


New Contributor

Hey Mike!

Sorry if this isn't the right place to post a question, but I'm not sure where else to post one.

I keep getting this error when trying to rename Apple TV's in my database. (image below)

"Failed! - 400!"

Any ideas why?

Thanks for your help, Mike!f8ece4a613af4a67b1baf429a45c0059


No problem! I recommend turning on “advanced debugging” from the settings menu at the top. This will output the entire xml response from the API call being done, which should help troubleshoot.

I’m guessing the devices have already been named and the command hasn’t processed. MUT generates MDM commands to rename mobile devices, which pend in the mdm queue for the device until it is online, and processes the command.

If you run a rename batch, and then it doesn’t get to update the names, you’ll see a “Device Name” command pending. As soon as the device is online and processes it’s commands it will update its name. If it’s still pending and you try again it simply fails.

If you get some other result from advanced debugging post it up and I’ll try my best to help.

EDIT: tagging @nickbanyard

New Contributor

Got it! sure enough, my WiFi profile wasn't configured correctly so they weren't on the network. Got them all back on the network and I've got green lights now.

Thanks for your help, and for an awesome tool!



I really appreciate all the hard work you've put into the MUT. I use it frequently. I'm willing to help with documentation or whatever if you have need.

Thank you!

Contributor III

Hi Mike,

Been using the MUTv4.2 recently. I have created a .csv file for each of my iPad carts. I have sporadic success using the MUT to make sure the Device Names are correct. Sometimes it changes them, sometimes it misses a couple, and in one case, it changes nothing. Even though MUT says "OK!" across the board.



MUT updates Mobile Device Names a bit differently than it updates any other field. In order to enforce the name change so that it sticks, MUT will actually generate an MDM command on the device to update the name.

This MDM command requires that device name changes are not blocked (restriction payload on a configuration profile), and they also will not actually take effect until the device processes the MDM command.

If another name change is submitted via MUT before the first name change command actually processes, you will receive a 400 error, and it will state that the command is already pending under Advanced Debugging. You can see this pending command on the management section of the device record.

To get the name changes to actually take effect, the device has to be turned on, on network, MDM capable, talking to Jamf Pro, and all that jazz—as soon as it processes the MDM command that's pending, the name will update.

Contributor III

@mlev Thanks Mike!

New Contributor III

Mike, just wanted to let you know that MUT is a brilliant tool, and thanks so much for you work on it!

New Contributor III


Mut is great and you’re going a great job at communicating and keeping up with the community. Thank you for all you do!




Contributor III

Thats Mike for all the work you do on this. You da man!

New Contributor II

Mut not updating PO number or PO date on iPad profile in JAMF. using the templates with serials--po numbers--po date-- saving as .csv, tried utf-6 csv, utf-16, mdos csv, macintosh csv... but still none of the info is showing up in JAMF. thanks!


@airvine01 I'm assuming there is an issue with the PO Date format. Can you try just the PO Number? What does the mut.log show? Located in the same directory as the templates.

Contributor II

Hi @mlev I have used The MUT, on and off for a couple years now... and really appreciate your efforts.
I used it as recently as March of this year to modify some static groups and it made an Application upgrade a breeze. But, today I tried to modify some static groups and, although The MUT reported Success!... the groups were not populated. (used v4 and then also tried v5.0.5). v$ showed success, v5 just didn't do anything.

My question is did the tables change in the jss between jss v10.17 and 10.20.1? (that you know of?)


Hi! I updated my MUT app this morning through the app store. Now when I try to use it it tells me this message:

I am using the new templates I downloaded them again from the "download templates button". Theses last few months trying to deal with Jamf and a known issue not allowing mut to change the name, I get to where I can now change the name and MUT doesn't work. I don't have time to change 870 records. Anyone got ideas? Either on another way to change 870 records or get MUT to work? I used to be able to just to perform the name change anyway but this new update removes the submit button. It has really been a hard enough year without these great tools not working.