Managing a Pile of MC Servers on macOS: JSM
Swift macOS manager for Java, Paper, and Spigot Minecraft servers
JSM is a native macOS tool, written in SwiftUI, built specifically for managing Java Edition MC servers. Paper, Spigot, and vanilla all work. Manage multiple instances from a single window: create, import, and edit are all in there, so you no longer have to open a pile of terminals, hand-type java -jar, and babysit logs. The repo is at github.com/dwgx/JSM.
Processes can be started, stopped, and restarted, with crash auto-recovery on top (restartOnCrash, maxRestarts), so you don’t have to crawl out of bed at midnight to fish a crashed server back up. The console renders live output through WebKit, with a plain-text fallback view on the side in case WebKit acts up. Runtime metrics for CPU, resident memory, and thread count are sampled directly via proc_pidinfo, with no dependency on external tools.
Configuration all goes through YAML. Using Yams, it lands in ~/Library/Application Support/JSM/servers.yaml. Both single configs and full bundles can be imported and exported, packed with ZIPFoundation, so you can just carry them over when you switch machines. Java detection does an automatic scan, checking common locations like Homebrew and SDKMAN, saving you from filling in paths by hand every time. Startup supports three modes: a jar file, a main class, or a script you provide. When something breaks, you can also export a diagnostic report to grab all the environment info in one shot.
Two pitfalls worth flagging. The Java Options field takes JVM arguments only. Don’t stuff a whole java -jar ... in there, or it’ll assemble an absurd command line. There’s also App Sandbox: once it’s on, accessing user-selected directories has to go through security-scoped bookmarks. The first time you use it, it’ll ask you to authorize the Java Home directory (the one with bin/java in it), and if the permission isn’t granted right, the process simply won’t start.
Personal project, version 1.0, usable and still being worked on, and the config format may shift later. It needs Java 17 or above to run; I’m on 21 myself. Source is on GitHub, MIT. If you want to build it yourself, open JSM.xcodeproj in Xcode, pick the JSM scheme, and the SwiftPM dependencies will pull automatically.