Skip to content
← Work

Desktop & tooling

Automus

Every dev server. One window.

PythonQt / PySide6DesktopDeveloper toolsNexylius
Role
Sole author — application, release pipeline and site
Period
2026
Status
Live

The problem

Every project starts differently — php artisan serve, npm run dev, a GeoServer startup.sh — and every one of them wants its own terminal tab, in its own folder, retyped after each login. Stopping them is worse: killing the shell does not always kill the server it forked, and the port stays taken.

The approach

Automus stores each project's root folder and start command once. A project's default command runs in a fixed slot, so pressing it again restarts that run rather than duplicating it; anything else starts beside it as an independent run with its own tab and colour-coded live log. On macOS and Linux every run gets its own session under the user's login shell — so PATH additions from Homebrew or nvm resolve — and Stop signals the whole process group, escalating to SIGKILL after three seconds.

What it does

One fixed slot per project

The default command reuses its slot, so a second click restarts the run instead of leaving two servers on one port. One-off commands started with + are separate, concurrent runs.

Live, colour-coded logs

URLs, HTTP methods, status codes, warnings and errors are highlighted with a small regex pass as output streams into each run's tab.

Stop that reaches the whole tree

Each run starts in its own process group; Stop sends SIGTERM to the group and SIGKILL after a grace period, so forked children do not survive as orphans.

Three platforms from one pipeline

A single release workflow builds a DMG for Apple Silicon and one for Intel, a Windows installer and a Linux AppImage, and publishes them to a public releases repository.