This guide installs and runs MDriven Server and MDriven Turnkey directly on macOS, using the native macOS downloads. It covers running both in Terminal windows, and running them as background services with launchd. For running them in containers instead, see Run MDriven locally with Docker.
The macOS downloads are self-contained: the .NET runtime is included, so you do not install .NET. Background: How MDriven Core runs.
Prerequisites
- macOS on an Intel Mac or an Apple Silicon Mac (M1 or later).
- Terminal access, and an administrator account for the service setup.
1. Choose the download
| Your Mac | Download | File names |
|---|---|---|
| Apple Silicon (M1, M2, …) | Osx Arm64 | MDrivenServerCoreOsxArm64_<date>.zip, MDrivenTurnkeyCoreOsxArm64_<date>.zip
|
| Intel | Osx X64 | MDrivenServerCoreOsxX64_<date>.zip, MDrivenTurnkeyCoreOsxX64_<date>.zip
|
Download both from the MDriven downloads page, or find the newest file name with the download API (Apple Silicon shown; use Osx%20X64 on Intel):
curl -s "https://mdriven.net/Rest/ProductRelease/Get?vProduct=ServerCore&platform=Osx%20Arm64"
curl -s "https://mdriven.net/Rest/ProductRelease/Get?vProduct=TurnkeyCore&platform=Osx%20Arm64"
Each call returns the download address, for example https://downloads.mdriven.net/releases/MDrivenServerCoreOsxArm64_20261107.zip.
2. Unpack
cd ~/Downloads
unzip MDrivenServerCoreOsxArm64_20261107.zip -d ~/MDriven/Server
unzip MDrivenTurnkeyCoreOsxArm64_20261107.zip -d ~/MDriven/Turnkey
# Allow the programs to run: remove the quarantine flag macOS sets on downloads, and mark them executable
xattr -r -d com.apple.quarantine ~/MDriven
chmod +x ~/MDriven/Server/AppCompleteGenericCore ~/MDriven/Turnkey/StreaminAppCoreWebApp
Use the file names you downloaded. Remove the quarantine flag after unpacking – otherwise macOS Gatekeeper may stop the programs from starting.
3. Configure
MDriven Server – create ~/MDriven/Server/App_Data/CommandLineOverride.xml:
<root>
<arg>port=5010</arg>
<arg>host=localhost</arg>
<arg>nohttps</arg>
</root>
MDriven Turnkey – create ~/MDriven/Turnkey/App_Data/CommandLineOverride.xml:
<root>
<arg>port=5011</arg>
<arg>host=localhost</arg>
<arg>nohttps</arg>
</root>
and ~/MDriven/Turnkey/App_Data/MDrivenServerOverride.xml, so Turnkey finds the server on port 5010:
<?xml version="1.0" encoding="utf-8"?>
<root>
<MDrivenServerOverride MDrivenServerPWD="the password of user a">http://localhost:5010/</MDrivenServerOverride>
</root>
host=localhost makes the applications reachable only from this Mac; remove it to reach them from other machines. See CommandLineOverride.xml and MDrivenServerOverride for all options.
4. Run in Terminal
Start MDriven Server in one Terminal window:
cd ~/MDriven/Server
./AppCompleteGenericCore
and Turnkey in another:
cd ~/MDriven/Turnkey
./StreaminAppCoreWebApp
Each prints This is MDriven Server / This is MDriven Turnkey, the address it listens on, and for Turnkey: Started with MDrivenServerUrl: http://localhost:5010/. Keep both windows open – closing a window stops that application.
5. Verify
| Application | Address | Check from Terminal |
|---|---|---|
| MDriven Server | http://localhost:5010 | curl -I http://localhost:5010
|
| MDriven Turnkey | http://localhost:5011 | curl -I http://localhost:5011
|
Error creating thumbnail: File missing
- Open MDriven Server, log in, and set the password of the user a – the account Turnkey uses. Put the same password in Turnkey's
MDrivenServerOverride.xmland restart Turnkey. - Upload a model from MDriven Designer – see Connect your model to the server. Until a model is uploaded, Turnkey keeps loading the start page.
6. Run as background services (launchd)
To keep the applications running without Terminal windows, and start them when the Mac starts, install them as launchd daemons. Put them in a fixed location first, for example /opt/mdriven:
sudo mkdir -p /opt/mdriven
sudo cp -R ~/MDriven/Server ~/MDriven/Turnkey /opt/mdriven/
Create /Library/LaunchDaemons/net.mdriven.server.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.mdriven.server</string>
<key>ProgramArguments</key>
<array>
<string>/opt/mdriven/Server/AppCompleteGenericCore</string>
</array>
<key>WorkingDirectory</key>
<string>/opt/mdriven/Server</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/var/log/mdriven-server.log</string>
<key>StandardErrorPath</key>
<string>/var/log/mdriven-server-error.log</string>
</dict>
</plist>
Create /Library/LaunchDaemons/net.mdriven.turnkey.plist the same way, with the label net.mdriven.turnkey, the program /opt/mdriven/Turnkey/StreaminAppCoreWebApp, the working directory /opt/mdriven/Turnkey and the log files mdriven-turnkey.log / mdriven-turnkey-error.log. Then load both:
sudo chown root:wheel /Library/LaunchDaemons/net.mdriven.*.plist
sudo chmod 644 /Library/LaunchDaemons/net.mdriven.*.plist
sudo launchctl load /Library/LaunchDaemons/net.mdriven.server.plist
sudo launchctl load /Library/LaunchDaemons/net.mdriven.turnkey.plist
Check them with sudo launchctl list | grep mdriven and the log files in /var/log. To stop one, use sudo launchctl unload with the same file.
Updating
Stop the application, unzip the new version over its folder (the App_Data folder with your settings and MDriven Server's database is kept), remove the quarantine flag, make the program executable again, and start it.
