🚀 Welcome to MDriven Learn –  Don’t miss the latest Release Notes.
MDriven Server and MDriven Turnkey on native macOS

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

Error creating thumbnail: File missing
  1. 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.xml and restart Turnkey.
  2. 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.

See also