Select your desktop.

##
Quick setup steps

Launch the PolymathPlus solver executable from the terminal and keep the terminal window open while you work. The solver user-interface is accessed via a web-browser local URL.

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:
   PowerShell (Windows)
   ./polymathplus.exe
   Before launching the solver for the first time in PowerShell, unblock the downloaded file:
   `Unblock-File -Path .\polymathplus.exe`
3. Leave that terminal running, and open the local Solver workbench:
   Solver workbench
   http://127.0.0.1:20208/

That's it - you're all set. Closing the terminal will stop the solver.
If the browser cannot connect, confirm that the terminal still shows a running process and no startup error.

##
Tips, Troubleshooting, and 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 PolymathPlus fails to start because port 20208 is already in use?

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. Why does macOS block PolymathPlus on first launch, and how do I allow it?

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. Can I use PolymathPlus completely offline without an internet connection?

Yes. 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. Where can I find the solver log files if I need to troubleshoot or check activity?

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. Where are my saved math programs stored, and are they kept private to my browser?

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

6. Can I launch PolymathPlus from any terminal folder without typing the full file path?

Yes! You can define a short command or alias in your shell startup profile so you can type `polymathplus` from any folder:

- Windows (PowerShell): Append a function shortcut to your PowerShell profile:
  `Add-Content $PROFILE 'function polymathplus { C:\PolymathPlus\polymathplus.exe }'`
- macOS / Linux (zsh / bash): Add an alias to your shell configuration file (`~/.zshrc` or `~/.bashrc`):
  `alias polymathplus="$HOME/PolymathPlus/polymathplus"`

7. Can I run the solver UI in its own window just like a desktop app?

Yes! The Chrome/Edge/Safari web browsers allow you to install the local solver interface (`http://127.0.0.1:20208/`) as a desktop application and even pin it to your Taskbar, Start Menu, or macOS Dock as a standalone PWA application:

- Chrome & Microsoft Edge (Windows / Mac / Linux): Open `http://127.0.0.1:20208/`, then click the Install App icon in the address bar (or navigate to Browser Menu → Install PolymathPlus / Create Shortcut as Window).
- Safari (macOS): Open `http://127.0.0.1:20208/` and select File → Add to Dock.

This opens the solver workbench in its own dedicated window with an official application icon.

##
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

Unblock file (1st run) | `Unblock-File -Path .\polymathplus.exe`
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`

##
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.

##
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.