Desktop & tooling
Automus
Every dev server. One window.
- 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.