The desktop app
Since version 1.9.0 “Unbound”, Meld is a standalone desktop app. You download a folder, run Meld, and that is the whole install: no Python to set up, no repository to clone, no terminal. Deleting the folder removes it. This page explains what actually runs, where it lives, and the safety rails built into it.
Why an app at all
Meld started as a Python project you launched from a command line. That worked for people who already had Python, and quietly failed for everyone else. A world render is also a long job, often hours, and a browser tab is a fragile place to babysit one: close the tab and you lose sight of the run, put the machine to sleep and you lose the run itself.
The app fixes both. It carries its own Python runtime and its own copy of the Arnis generator, so the target machine needs nothing installed. And the work does not live in a window at all, so closing the window stops nothing.
How it works
A tray app
Meld starts in the system tray with no console and no taskbar button. Clicking the tray icon shows or hides the status bar; the full interface opens from the tray menu as its own application window (no tabs, no address bar). Quitting is the tray’s Quit and nothing else, so a stray click can never kill a render six hours in. If you prefer the old behaviour, MELD_UI=browser or the tray’s “Open in browser” serves the same interface to your browser.
The floating status bar
The status bar is a small frameless strip that floats above other windows: one coloured block per worker (idle, queued, fetch, prepare, build in gold, save, merge, failed), the current task, an ETA, CPU / RAM / disk readouts, and an optional two-minute history graph. It has no close box on purpose, so it cannot be dismissed by reflex; its own right-click menu hides it, and its position, opacity and hidden state are remembered.
Built-in safety rails
- Sleep is blocked while a run is active. Hours of compute with no keypress looks idle to every power policy; Meld holds the machine awake and releases it when the run ends, is stopped, or the app quits.
- No orphaned generators. The Arnis worker processes are tied to the app (a Job Object on Windows, a process group elsewhere), so however Meld exits, the workers exit with it.
- The local API is locked down. Host and Origin checks plus a per-session token mean a random web page you have open cannot poke an API that writes files and launches processes.
- One instance. A second launch opens the running copy instead of fighting it for the port and the project folder.
Updates with a way back
Meld keeps itself current. It notices a new release, downloads and verifies it, and switches over only after the new version has proven it starts, keeping the old folder so you can go back. Removing an old build is a separate, explicit action, and it refuses any folder that contains your projects. The generator inside is one binary in a folder Meld owns, so it updates on its own schedule too: downloads are checked against the release checksum, and a release without one is refused rather than trusted.
The releases themselves are gated. Since the 1.9.0 desktop arc, every build must pass a headless-browser console check before it ships. The gate went in after a one-line script bug shipped with every static check green and left half the interface dead; a real browser run catches what static checks cannot.
How to use it
- Grab the archive for your OS from the latest release and extract it anywhere.
- Run Meld. The builds are unsigned, so the OS will warn you once: on Windows, SmartScreen shows “Windows protected your PC”, click More info, then Run anyway. On macOS, use System Settings, Privacy & Security, Open Anyway.
- The tray icon appears and the interface opens. Draw an area, press Generate; the full walkthrough is in the quickstart.
- Minimise everything and watch the status bar. When the run finishes, the world folder is ready for your saves or for the one-click server.
There is also a single-file build (one 64 MB executable that unpacks the generator on first launch) if you want one file rather than a folder, and shortcut scripts for the Start menu, macOS Applications and a Linux .desktop entry ship in the packaging/ folder.
Running from source (optional)
The app is the recommended path, but the repository still works the old way: clone it, pip install -r requirements.txt, then python meld_launch.py. Python 3.10 or newer. The launcher fetches the right generator binary on first run, and pip install osmium enables offline .pbf baking from source (the app ships with it built in).
Next: choose a scale for your first world, or see how the parallel generation the status bar is showing actually works.