Changelog
Pythonator follows semantic versioning. Each release lists what changed for users.
0.0.10
A rewrite of the engine with 0.0.9’s window on top. The ideas are the same; the code is new, about 10,000 lines
instead of 24,000, typed throughout and checked with mypy --strict.
The window
- 0.0.9’s design and feel: the toolbar with Start all and Stop all, the CPU and RAM meter, the service cards with their state dot and isolation shield, the header with the name, a live info line and the service’s buttons (labels shrink to symbols in a narrow window), the editor over the console, and the file tree under the services.
- Nothing in the window waits. It opens at once and connects to the background service right after; Start all and Stop all return at once and the list follows. Press Stop (or Stop all) again to kill what is still stopping.
- Floods don’t slow it down, as in 0.0.9: the console draws for at most 10 ms a frame and skips what it can’t show in time (with a note; the log keeps everything), the window gets only the shown service’s output, and a program that writes faster than it can be handled waits on its pipe instead of building a backlog, so stops stay instant.
- One editor zoom: Ctrl+, Ctrl-, Ctrl+= and Ctrl+wheel all change it, every open file follows, line numbers stay readable, and Ctrl+0 resets it. The size is kept when the window closes.
- Plugins’ panels open from Plugins ▾ → Show plugin panels, so the editor and console keep the width.
Running services
- A background service runs your services and keeps them running when the window closes. The window only shows and asks. A crash of either one leaves the services alone, and leftovers of a crash are found and cleaned up.
- Restarts back off from 1 s to 60 s and give up after a set number in 10 minutes; schedules take intervals,
@dailyor cron lines; a memory limit covers the whole process tree. - Install packages runs inside the service’s own isolation: a
.venvfor Python,node_modules,vendorfor Ruby and PHP. Rust and PowerShell join the languages. - An environment check before each start says what will fail (runtime missing, no or broken venv, missing
node_modules), and System check says how Pythonator itself runs and what this computer’s sandbox enforces. - Secrets from the environment are masked in the console, the logs and plugin messages.
Isolation
- Three modes: Sandbox (default), Container and Full access. If a protection can’t be applied, the service doesn’t start.
- Linux: Landlock (files, TCP ports, scopes) and seccomp in a small standard-library launcher, plus bubblewrap when available. macOS: Seatbelt. Windows: AppContainer with recorded, reversible folder grants, and a job object.
- Ports: list them, choose this computer or other computers too. Windows: Make reachable adds a loopback exemption, a loopback permit and firewall rules for that service only (127.0.0.1, and private networks when asked); Undo removes them. The permit is what lets the browser on the same PC open a sandboxed server: the exemption and firewall rule alone never got past Windows’ own block of loopback connections into an AppContainer.
- Containers run with every capability dropped,
no-new-privileges, a read-only image and a process limit, and can join a container network to reach a database.
Plugins
- Every plugin runs in its own sandboxed process and talks to Pythonator through a checked message protocol.
- Official plugins are recognised by SHA-256 from a reviewed catalog. Third-party plugins show a warning, start in test mode with no permissions, and are disabled when they flood, send garbage or crash repeatedly.
- Six permissions:
network,read_logs,inspect,control,policy,ui. Settings forms and panels are declared, not coded. - Three official plugins: Webhooks (Discord, Slack, Telegram, Teams, ntfy, any URL), Guard (rules and a watchdog) and Health checks (a live panel).
Also
- The editor is QScintilla: fast with big files, highlighting for every language, multiple carets.
- Git: hardened clone and fast-forward-only pull.
- Licensing and Support in the toolbar.
- The background service’s API is documented, with a command-line client in
docs/examples/pyctl.py. - Documentation rewritten, on the website and in
docs/. - Installers as in 0.0.9: a Windows
setup.exe(and portable.zip), a.dmgfor Apple silicon and for Intel Macs, and a.debfor x64 and arm64 Linux (and a.tar.gz). An update stops the background service first; uninstalling on Windows also takes the sandboxes’ entries off folder permissions. - CI on Windows, macOS and Linux, which also builds each installer, installs it and starts the app;
pip-auditon hash-pinned lock files; releases built from locked dependencies, tested the same way and attested.
Removed
- The AI assistant plugin, the plugin
pyproject.tomlpackaging, thebot.jsonand other old-format migrations, the in-app API reference generator, and the code signing scripts (the downloads are unsigned). 0.0.9’spythonator.jsonis still imported once.
0.0.9
- Windows sandbox: Make reachable… makes a sandboxed server reachable from this PC on its own address
(
http://127.0.0.1:8765/), with or without ports under Serves on. It adds a firewall rule for that sandbox that admits this PC only. Press it once more for services set up with 0.0.8 or earlier. - Dependencies menu: the venv controls are always there for Python services. A line says where the service runs, then Create venv, Recreate venv… and a Use .venv on/off switch, greyed out where they don’t apply.
- A venv you create is used from then on, even if the service was set to another Python.
- Other runtimes’ Dependencies menu says where their packages go. The docs compare each runtime’s equivalent of a venv.
0.0.8
- Python services: Pythonator asks before running outside the project’s venv (no venv, a venv the service doesn’t use, or a broken one). You can use the venv, create or recreate it, or continue without. The choice can be remembered per service.
- After creating or recreating the venv, the start, install or command you asked for runs in it.
$commands that install for your whole account (npm -g,yarn global,gem install,composer global,pip --user…) ask first, and offer the project-local command instead.
0.0.7
- Windows sandbox: “working folder read only” is enforced again for a service that was set to “read & write” before. Pythonator now also blocks writes that another folder’s permissions would allow.
0.0.6
- Removed the command line added in 0.0.5. Pythonator is a desktop app; everything is in the window.
- Cleaned up the changelog.
0.0.5
- Windows sandbox: temporary files now go to the sandbox’s own temp folder instead of the service’s folder.
- Dependencies are checked for known vulnerabilities on every change and every week.
- Dependabot now also keeps the app’s and the official plugins’ requirements up to date.
0.0.4
- Windows sandbox: a first attempt at keeping temporary files out of the service’s folder (finished in 0.0.5).
0.0.3
- Windows sandbox: pip installs and Python’s
tempfilework in sandboxed services. - Guard plugin: rewritten as a security policy with 19 rules for isolation, exposed ports, outgoing connections, container images and a resource watchdog. Each rule can warn, stop or restart, with per-service exceptions. See the Guard plugin’s README.
- Webhooks plugin: alerts on Discord, Telegram, WhatsApp, Slack, Teams, ntfy, Pushover, Gotify or your own endpoint, batched per service and rate-limited. See the Webhooks plugin’s README.
- Plugin SDK 2: plugins can inspect a service’s setup and resource use, and have multi-line and tabbed settings. See Writing a plugin.
- Each service’s outgoing connections are now recorded with its listening ports.
0.0.2
- Windows sandbox: “Create venv” works, and the venv always has pip.
- “Install dependencies” adds pip first to a venv that has none.
- Windows sandbox:
$commands run in cmd, because PowerShell can’t run in the sandbox. - Sandboxed services no longer inherit Pythonator’s own DLL search path or internal variables.
0.0.1
The first public release. Install it from the release page; development builds (0.1.x) don’t offer it as an update. Your services, settings and logs are kept.
- Services in Python, Node.js, Bun, Deno, Go, Java, .NET, Ruby, PHP, shell, PowerShell or any program. See the Runtimes page of that version’s docs.
- Restarts with back-off and a crash-loop limit, schedules, memory and CPU limits, autostart and start at login.
- A background service keeps services running while the window is closed.
- A sandbox per service on Linux, macOS and Windows, and Docker / Podman containers. See Security.
- An editor with highlighting and completion, a fast console with colours, rotating logs and history.
- Clone from Git and pull before each start.
- Plugins: official ones are verified against a reviewed catalog; third-party ones always run sandboxed. Official plugins: webhooks, guard and the AI assistant (Claude, OpenAI, Gemini, DeepSeek, Ollama).
- A website with guides, a glossary, a dependency list and an API reference.