Stratosv1.4.0

Core

Working with sites

How Stratos discovers projects, assigns domains, and parks sites.

Discovery

Stratos watches the configured webroot (default ~/Sites). Any directory at the top level becomes a site:

  • ~/Sites/laravel-blog/https://laravel-blog.test
  • ~/Sites/api.partner/https://api.partner.test

If a public/ subdirectory exists, it's served as the document root. Otherwise the project root is served. This matches the convention used by Laravel, Symfony, Statamic, and most modern PHP frameworks.

The sites tab

The Sites tab lists every discovered project with:

  • Domain — click to copy.
  • PHP version — change with a dropdown.
  • HTTPS toggle.
  • Open — opens in your default browser.
  • Reveal — opens the folder in Finder.
  • Open in editor — uses code / Cursor / Sublime from PATH.
  • Park — moves the folder to ~/Library/Application Support/Stratos/parked/.

stratos.yml

Pin per-site options in a stratos.yml file at the project root:

php: "8.3"
xdebug: true
secured: true
server: nginx
services:
  - redis
  - mysql
aliases:
  - api.mysite.test
  - www.mysite.test
environment:
  APP_ENV: local
  APP_DEBUG: "true"

Stratos reads this on every scan and applies the changes. The file is created automatically the first time you change a setting in the UI.

Aliases

Aliases let one site respond to multiple hostnames without duplicating nginx config. Add them under aliases: in stratos.yml:

aliases:
  - api.mysite.test
  - admin.mysite.test

The first entry is treated as the canonical domain for things like self-signed certificate generation.

Parking a site

Sometimes you want to keep a project on disk but stop serving it. Click Park in the site's actions menu. The folder is moved to ~/Library/Application Support/Stratos/parked/, the nginx config is removed, and the site disappears from the list.

To bring it back, open Sites → Parked and click the Release icon next to it. The folder is moved back to the webroot and Stratos regenerates the config.

Watcher

Stratos uses a kernel-level DispatchSource on the webroot to detect new and removed folders. When a change happens, a banner appears in the menu-bar popover: "3 changes detected — Tap View to rescan sites."

The scan is debounced by 500 ms to coalesce bursts of file activity (e.g. git clone).