Choose the supported foreground setup or the optional service setup for your desktop operating system.

##
Run now from a terminal

Launch the PolymathPlus executable whenever you need the solver. Keep the terminal open while you work.
This is the standard, supported way to run PolymathPlus locally.

1. Download the package for your operating system and extract it to a folder you control.
2. Open a terminal in that folder and run the executable locally:
   Command Prompt / PowerShell (Windows)
   .\polymathplus.exe
3. Leave that terminal running, and open the local Solver workbench:
   Solver workbench
   http://127.0.0.1:20208/

Closing the terminal stops the solver.
If the browser cannot connect, confirm that the terminal still shows a running process and no startup error.

See the troubleshooting and FAQ section for more help.

##
Optional: run as an OS service

PolymathPlus can run as an OS service, allowing it to start automatically and continue in the background. Service registration and administration remain the responsibility of the user or IT administrator.

The service setup instructions below are guidance, not a supported installer, and may require adaptation. The user is responsible for configuration, security, maintenance, troubleshooting, and removal.

Before configuring a service, review these three settings:

1. Service account Choose an account that can run unattended and is easy to maintain, without relying on a personal or frequently changing password.
2. Executable location Install in a stable location—not Downloads, Desktop, a temporary folder, or a network share.
3. Log location and retention Confirm where logs will be written, how many will be retained, and that the selected service account can write to that location.

## Service setup examples

First confirm that foreground mode works on `127.0.0.1:20208`. Then select your operating system below. Read the complete panel before running commands, preserve any existing configuration, and use the recommended local-only address. These examples deliberately stop rather than overwrite an existing service definition. If a recipe does not match your computer or fails, return to foreground mode rather than weakening system security.

Windows
macOS
Linux

This simple personal-computer example uses the built-in LocalSystem account and the standard PolymathPlus log defaults. LocalSystem requires no username or password, but it has extensive privileges on the computer. Use this example only on a trusted computer and keep PolymathPlus bound to `127.0.0.1`.

Service account | `LocalSystem` — built in; no password required
Executable | `C:\Program Files\PolymathPlus\polymathplus.exe`
Application logs | `C:\Program Files\PolymathPlus\log`
Log retention | 36 rotated log files by default

### Personal computer: simple Windows service example

Open PowerShell as Administrator from the folder containing `polymathplus.exe`. The commands copy the executable into Program Files, register it under the built-in LocalSystem account, and start it automatically.

No username or password is required. The example stops if `PolymathPlusEngine` already exists, preventing an existing service configuration from being overwritten.

1. Create a stable program directory and copy the executable into it.
2. Register PolymathPlus as an automatically started LocalSystem service.
3. Start the service and display its current status.

Elevated PowerShell
$ErrorActionPreference = 'Stop' $service = 'PolymathPlusEngine' $folder = Join-Path $env:ProgramFiles 'PolymathPlus' $exe = Join-Path $folder 'polymathplus.exe' if (Get-Service $service -ErrorAction SilentlyContinue) { throw "$service is already installed." } New-Item -ItemType Directory -Force -Path $folder | Out-Null Copy-Item -LiteralPath '.\polymathplus.exe' -Destination $exe -Force $binPath = "`"$exe`"" sc.exe create $service binPath= $binPath start= auto obj= LocalSystem DisplayName= "PolymathPlus Engine" if ($LASTEXITCODE -ne 0) { throw 'Windows service registration failed.' } Start-Service $service Get-Service $service

### Verify the service

If the Solver workbench opens, the service is accepting requests.

Web browser
http://127.0.0.1:20208/
Permanently uninstall the service

Permanently remove the service registration. This stops the service and removes its automatic-start registration.

Elevated PowerShell
sc.exe stop PolymathPlusEngine sc.exe delete PolymathPlusEngine

Removing the service registration does not delete `C:\Program Files\PolymathPlus`, including the executable and its `log` folder. You can still run the executable manually, or delete the directory separately when it is no longer needed.

For a personal Mac, a per-user LaunchAgent is the simplest service model. These paths keep the executable and application logs inside the current user’s Library.

Service account | Current signed-in user
Executable | `~/Library/Application Support/PolymathPlus/bin/polymathplus`
Application logs | `~/Library/Logs/PolymathPlus`

### Gatekeeper and downloaded files

macOS may quarantine an unsigned executable downloaded from the internet. First verify that the package came from the official source and compare its SHA-256 checksum with the published value. Try Control-click → Open in Finder, or use System Settings → Privacy & Security → Open Anyway when macOS offers it. Run only the checksum command matching your Mac’s processor:

Apple silicon Mac
shasum -a 256 ./polymathplus-osx-arm64.zip
Intel Mac
shasum -a 256 ./polymathplus-osx-x64.zip
Inspect quarantine · Shell (zsh / bash)
xattr -p com.apple.quarantine ./polymathplus

Only after verifying the file: if Gatekeeper still blocks this specific executable, remove quarantine from that file only with `xattr -d com.apple.quarantine ./polymathplus`. Do not disable Gatekeeper globally or clear quarantine recursively from unrelated folders.

### Personal computer: per-user LaunchAgent example

This setup starts PolymathPlus when you sign in and runs it as your user. It does not require a machine-wide daemon or dedicated account.

Step 1 — Create the configuration file. In a plain-text editor, create a file named `com.polymathplus.engine.plist` in the same folder as `polymathplus`. If you use TextEdit, select Format → Make Plain Text before saving. Replace every `YOUR_HOME_DIRECTORY` below with your absolute home directory (usually `/Users/yourname`; run `echo "$HOME"` if unsure). Do not use `~` or `$HOME` inside the plist.

Plain-text file · com.polymathplus.engine.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>com.polymathplus.engine</string> <key>ProgramArguments</key> <array> <string>YOUR_HOME_DIRECTORY/Library/Application Support/PolymathPlus/bin/polymathplus</string> </array> <key>EnvironmentVariables</key> <dict> <key>PP_SRVR_LOG_DIR</key><string>YOUR_HOME_DIRECTORY/Library/Logs/PolymathPlus</string> <key>PP_RETAIN_LOG_COUNT</key><string>36</string> </dict> <key>RunAtLoad</key><true/> <key>KeepAlive</key> <dict><key>SuccessfulExit</key><false/></dict> <key>StandardOutPath</key><string>YOUR_HOME_DIRECTORY/Library/Logs/PolymathPlus/stdout.log</string> <key>StandardErrorPath</key><string>YOUR_HOME_DIRECTORY/Library/Logs/PolymathPlus/stderr.log</string> </dict> </plist>

Step 2 — Install and start the LaunchAgent. Save the plist beside `polymathplus`, open Terminal in that folder, and run:

Shell (zsh / bash)
set -e APP_DIR="$HOME/Library/Application Support/PolymathPlus" LOG_DIR="$HOME/Library/Logs/PolymathPlus" PLIST="$HOME/Library/LaunchAgents/com.polymathplus.engine.plist" SOURCE_PLIST="./com.polymathplus.engine.plist" if [ -e "$PLIST" ]; then echo "Stop: $PLIST already exists. Review or back it up first." >&2 exit 1 fi if [ ! -f "$SOURCE_PLIST" ]; then echo "Stop: $SOURCE_PLIST was not found in this folder." >&2 exit 1 fi if grep -q 'YOUR_HOME_DIRECTORY' "$SOURCE_PLIST"; then echo "Stop: replace every YOUR_HOME_DIRECTORY placeholder first." >&2 exit 1 fi plutil -lint "$SOURCE_PLIST" mkdir -p "$APP_DIR/bin" "$LOG_DIR" "$HOME/Library/LaunchAgents" cp ./polymathplus "$APP_DIR/bin/polymathplus" chmod 755 "$APP_DIR/bin/polymathplus" install -m 600 "$SOURCE_PLIST" "$PLIST" launchctl bootstrap "gui/$(id -u)" "$PLIST" launchctl kickstart -k "gui/$(id -u)/com.polymathplus.engine"

### Verify the service

If the Solver workbench opens, the LaunchAgent is accepting requests.

Web browser
http://127.0.0.1:20208/
Permanently uninstall the service

Permanently remove the service registration. This unloads the LaunchAgent and removes its automatic-start plist.

Shell (zsh / bash)
launchctl bootout "gui/$(id -u)" "$HOME/Library/LaunchAgents/com.polymathplus.engine.plist" 2>/dev/null || true rm "$HOME/Library/LaunchAgents/com.polymathplus.engine.plist"

Removing the registration does not delete the PolymathPlus executable or its logs. You can still run it manually, or delete those files separately when they are no longer needed.

A shared Mac or a process that must run before login normally requires an administrator-managed LaunchDaemon. That deployment belongs to the organization’s IT workflow.

For a personal systemd-based Linux computer, a user service avoids a root-owned installation. These locations follow common per-user program and state conventions.

Service account | Current user
Executable | `~/.local/lib/polymathplus/polymathplus`
Application logs | `~/.local/state/polymathplus/logs`

### Personal computer: per-user systemd service

This example is for a Linux distribution using `systemd`. It needs no root-owned executable or dedicated system account and normally starts with your user session.

Step 1 — Create the configuration file. In a plain-text editor, create a file named `polymathplus.service` in the same folder as `polymathplus`, with the following contents:

Plain-text file · polymathplus.service
[Unit] Description=PolymathPlus Local Engine [Service] Type=simple ExecStart=%h/.local/lib/polymathplus/polymathplus Environment=PP_SRVR_LOG_DIR=%h/.local/state/polymathplus/logs Environment=PP_RETAIN_LOG_COUNT=36 Restart=on-failure RestartSec=5 NoNewPrivileges=yes [Install] WantedBy=default.target

Step 2 — Install and start the user service. Save the unit file beside `polymathplus`, open Terminal in that folder, and run:

Bash
set -e APP_DIR="$HOME/.local/lib/polymathplus" LOG_DIR="$HOME/.local/state/polymathplus/logs" UNIT="$HOME/.config/systemd/user/polymathplus.service" SOURCE_UNIT="./polymathplus.service" if [ -e "$UNIT" ]; then echo "Stop: $UNIT already exists. Review or back it up first." >&2 exit 1 fi if [ ! -f "$SOURCE_UNIT" ]; then echo "Stop: $SOURCE_UNIT was not found in this folder." >&2 exit 1 fi mkdir -p "$APP_DIR" "$LOG_DIR" "$HOME/.config/systemd/user" install -m 755 ./polymathplus "$APP_DIR/polymathplus" systemd-analyze --user verify "$SOURCE_UNIT" install -m 600 "$SOURCE_UNIT" "$UNIT" systemctl --user daemon-reload systemctl --user enable --now polymathplus

### Verify the service

If the Solver workbench opens, the user service is accepting requests.

Web browser
http://127.0.0.1:20208/
Permanently uninstall the service

Permanently remove the service registration. This stops the service, disables automatic startup, and removes the installed unit file.

Bash
systemctl --user disable --now polymathplus rm "$HOME/.config/systemd/user/polymathplus.service" systemctl --user daemon-reload

Removing the registration does not delete the PolymathPlus executable or its logs. You can still run it manually, or delete those files separately when they are no longer needed.

To keep a user service running after logout or start its user manager at boot, an administrator may enable lingering with `sudo loginctl enable-linger "$USER"`. For shared machines, use a reviewed system service, dedicated or dynamic identity, and organization-approved hardening.

##
Terminal command reference

Select your operating system for common commands used to extract the package, verify its checksum, run PolymathPlus, and inspect an optional service installation.

Windows
macOS
Linux

Extract package | `Expand-Archive -LiteralPath '.\polymathplus-win-x64.zip' -DestinationPath 'C:\PolymathPlus'`
Verify SHA-256 | `Get-FileHash .\polymathplus-win-x64.zip -Algorithm SHA256`
Run in foreground | `C:\PolymathPlus\polymathplus.exe`
Query Service Status | `sc.exe query PolymathPlusEngine`
Start Service | `sc.exe start PolymathPlusEngine`
Stop Service | `sc.exe stop PolymathPlusEngine`

Extract package | `mkdir -p "$HOME/PolymathPlus" && unzip -q ./polymathplus-osx-arm64.zip -d "$HOME/PolymathPlus"`
Extract package (x64) | `mkdir -p "$HOME/PolymathPlus" && unzip -q ./polymathplus-osx-x64.zip -d "$HOME/PolymathPlus"`
Verify SHA-256 | `shasum -a 256 ./polymathplus-osx-arm64.zip`
Verify SHA-256 (x64) | `shasum -a 256 ./polymathplus-osx-x64.zip`
Grant execute permission | `chmod +x "$HOME/PolymathPlus/polymathplus"`
If Gatekeeper blocks it | `xattr -d com.apple.quarantine "$HOME/PolymathPlus/polymathplus"`
Run in foreground | `"$HOME/PolymathPlus/polymathplus"`
Query Service Status | `launchctl print "gui/$(id -u)/com.polymathplus.engine"`
Start Service | `launchctl bootstrap "gui/$(id -u)" "$HOME/Library/LaunchAgents/com.polymathplus.engine.plist"`
Stop Service | `launchctl bootout "gui/$(id -u)" "$HOME/Library/LaunchAgents/com.polymathplus.engine.plist"`

Extract package | `mkdir -p "$HOME/PolymathPlus" && tar -xzf ./polymathplus-linux-x64.tar.gz -C "$HOME/PolymathPlus"`
Verify SHA-256 | `sha256sum ./polymathplus-linux-x64.tar.gz`
Grant execute permission | `chmod +x "$HOME/PolymathPlus/polymathplus"`
Run in foreground | `"$HOME/PolymathPlus/polymathplus"`
Query Service Status | `systemctl --user status polymathplus`
Start Service | `systemctl --user start polymathplus`
Stop Service | `systemctl --user stop polymathplus`

##
Frequently Asked Questions

Below you can find troubleshooting tips and answers to common questions. For any additional queries, concerns, or recommendations,
Contact us.

1. What should I do if port 20208 is already in use or I get a port conflict error?

By default, PolymathPlus listens on port `20208`. If startup fails due to a port conflict:

- Check if another instance of `polymathplus` is already running on your computer and close it.
- If another application occupies port `20208`, pass a custom port as a command-line argument (e.g. `.\polymathplus.exe 20209`) or set the `PP_SRVR_PORT=20209` environment variable. Then open your browser at `http://127.0.0.1:20209/`.

2. How do I resolve the macOS Gatekeeper security warning on initial launch?

When executing the macOS binary for the first time, Apple Gatekeeper may show an "untrusted developer" warning because the binary was downloaded from the web:

- Open Terminal in the extracted folder and clear the quarantine flag: `xattr -d com.apple.quarantine ./polymathplus`
- Alternatively, go to System Settings → Privacy & Security, scroll to the Security section, and click "Allow Anyway" next to `polymathplus`.

3. When using the local desktop engine does it require an internet connection to run?

No. PolymathPlus runs completely offline on your local computer. It does not require an internet connection to operate, and it does not send any data to external servers.

4. Does the local solver write log files, and if so, where are they located?

By default, PolymathPlus writes log files to a `log` directory beside the executable, and the newest 36 rotated log files are retained. You may override these defaults by changing the `PP_SRVR_LOG_DIR` and `PP_RETAIN_LOG_COUNT` environment variables.

5. How are saved workbench programs isolated between users and browsers, and where are they stored?

Saved user programs and workbench states are stored locally in your browser's IndexedDB and are completely isolated per user and browser profile.

##
Software Disclaimer & Terms of Use

PolymathPlus is proprietary freeware licensed under the PolymathPlus Freeware Binary License in the EULA.txt included with the official download. It is provided “as is” and “as available”. No guarantees are made regarding performance, accuracy, reliability, availability, or suitability for any purpose. Operation may be interrupted, contain defects, or fail to meet a particular requirement. Use of PolymathPlus and its results is at your own risk. Users are responsible for independently checking calculations and for all decisions or actions based on generated output. To the extent permitted by law, PolymathPlus, its developers, distributors, and partners are not liable for direct, indirect, incidental, consequential, or other damages arising from use of—or inability to use—the software, including loss of data, savings, profits, or business continuity.

The service configurations and command blocks in this guide are informational, copy-and-adapt examples—not tested installers or a managed deployment product. They may require changes for the operating-system version, security policy, account configuration, package location, or other conditions on a particular computer, and successful execution is not guaranteed. The computer owner or IT administrator assumes responsibility for reviewing, testing, adapting, executing, troubleshooting, and maintaining the configuration, including accounts, paths, permissions, security controls, logging, startup behavior, upgrades, rollback, and removal.