01Menu-bar stack control
Start, stop, and restart every component of the local stack from a single popover. Status is reflected in the menu-bar icon — green when healthy, amber when something needs attention, red on failure. Each service can be operated independently: restart nginx without taking PHP down, cycle MySQL without losing the port binding.
Services panel →02Auto-discovered .test domains
Drop a folder under your webroot and Stratos assigns a `.test` domain to it within a second. No editing `/etc/hosts`, no dnsmasq configuration, no DNS cache flushing. HTTPS is one click away — the app generates a self-signed certificate on demand and trusts it system-wide via the macOS keychain.
Working with sites →03Per-project PHP version
Install every supported PHP version in parallel and pin one per project. A single line in `stratos.yml` (`php: 8.3`) is enough — the FPM pool is rebuilt and nginx is reloaded automatically. No more juggling `phpbrew`, `valet isolate`, or per-shell rc files.
PHP version management →04Mail catcher & inbox
Mail sent from any local app — Laravel notifications, WordPress contact forms, Symfony Mailer — is captured to a searchable inbox. No SMTP credentials to manage, no need to disable send. Open the captured email to inspect headers, view HTML, and verify templates.
Mail catcher →05Webhook receiver & replay
Point your local app at `http://127.0.0.1:9920/webhooks` and every incoming request is captured. Inspect headers and bodies, then re-send the same payload to a different local URL to reproduce test scenarios. No more asking Stripe to "send that webhook again."
Webhooks →06Laravel dump server
When running `php artisan dump-server` against Stratos, every `dump()` and `dd()` lands in a dedicated tab with full stack traces. Live, searchable, and rotating to keep the buffer bounded.
Dump server →07Xdebug on demand
Toggle Xdebug per project. When enabled, Stratos writes the correct `zend_extension` line to the active FPM pool config and reloads PHP. Stratos does not modify global PHP configuration — changes stay scoped to the project they apply to.
Xdebug →08SQLite browser
Open any `database/database.sqlite` file from a project. Browse schemas, page through the first 50 rows, and run read-only SELECT queries against a built-in editor. No DB client to install, no driver to load.
SQLite browser →09Node version manager
Install multiple Node.js versions in parallel and switch per project. A marker block in your `~/.zshrc` keeps the active version in scope for new shells without polluting the rest of your PATH.
Node versions →10Cloudflare tunnel sharing
Need a colleague to see a local site? Generate a temporary `https://*.trycloudflare.com` URL. The app manages the `cloudflared` binary, the tunnel process, and tears the URL down on demand.
Tunnels →11CLI companion
A `stratos` binary for the terminal: `stratos open mysite.test`, `stratos logs -f`, `stratos status`. Install once with `stratos install` and it lives at `~/bin/stratos`, where the rest of your shell tools already live.
CLI →12Project scaffolding
Spin up a Laravel, Symfony, WordPress, or bare-PHP project from a template. Specify PHP version, Xdebug state, and a domain name; the app creates the directory, writes `stratos.yml`, and starts the dev server.
Project templates →