Chapter 2
Installation & First Run
From a fresh download to a working stack: what macOS asks for, the optional helper that makes admin painless, and how to bring an existing MAMP, XAMPP or Server.app setup across.
FrontierStack installs like any other Mac app — drag it to /Applications and open it. What happens next is up to you: it can run entirely with the per-action password prompts macOS already gives you, or you can grant it a small set of permissions once and never be asked again. This chapter walks the whole first run, then shows how to migrate an existing local stack so you keep your sites and databases.
2.1System requirements
FrontierStack is a native, signed macOS application. You need:
| Requirement | Detail |
|---|---|
| macOS | macOS 13 (Ventura) or later. The optional helper uses SMAppService, which is a macOS 13+ API. |
| Architecture | Apple silicon or Intel. The app manages the Homebrew stack at /opt/homebrew on Apple silicon (or /usr/local on Intel). |
| Homebrew | Recommended but not required to launch. Most services are installed as Homebrew formulae; FrontierStack can install Homebrew for you (see below). |
| Admin account | An administrator account on the Mac. Installing services and editing system config needs admin rights — either through the optional helper, or via the password prompt macOS shows per action. |
Nothing in this list is unusual; if your Mac is recent enough to run a current macOS, it can run FrontierStack.
2.2Downloading and first launch
Download the app, move FrontierStack.app into your /Applications folder, and double-click it. Because the app is signed by Enfour, Inc. (Apple Developer team 6Y87KNMALP) and notarised, macOS opens it without the unidentified-developer warning.
- Open FrontierStack. The main window appears with the service sidebar on the left and a health overview in the centre — the layout you met in Chapter 1.
- If Homebrew isn't present yet, panes that need it will say so and offer to install it. You can do that now or later.
- FrontierStack enforces a single running instance. If a copy is already open and you launch it again, the existing window is simply brought to the front rather than a second copy starting. This keeps two windows from fighting over the same services and config files.
The first launch makes no changes to your system. The app reads what is installed and shows you the state of things; nothing is started, stopped or reconfigured until you ask.
2.3The privileged helper — and the permissions macOS asks for
Starting and stopping services and editing system configuration (Apache, Nginx, MySQL, DNS, the firewall) are privileged operations. Out of the box, FrontierStack performs each one through the standard macOS authorisation prompt: you type your password every time. That is safe but quickly becomes tedious.
The optional helper removes that friction. It is a small privileged tool — an SMAppService daemon — that the app registers with macOS so it can carry out admin actions without re-entering your password each time. You install it deliberately: use the Install affordance at the foot of the sidebar, or accept the prompt when an action first needs it.
- Click Install on the helper row at the bottom of the sidebar.
- macOS shows its Login Items & Extensions approval (or asks you to enable the background item in System Settings ▸ General ▸ Login Items). Approve it — this is macOS asking whether to let the daemon run, not the app overriding anything.
- The sidebar row flips to show the helper registered and running. From now on, service start/stop and config edits proceed without the per-action password prompt.
You can remove the helper at any time; FrontierStack then falls back to per-action admin prompts. Both modes work — the helper is purely a convenience.
6Y87KNMALP) as the app, which is what lets it register as an SMAppService daemon at all. It runs only the privileged operations the app drives; it is optional, you install it deliberately, and you can remove it. Like the AI Administrator and every remote action, it is off until you turn it on. For the full trust model see Chapter 10.2.4Installing Homebrew
Most of the catalog — web servers, databases, caches, mail, dozens of CLI tools — is installed as Homebrew formulae. Homebrew is the package manager FrontierStack uses to fetch and update those services, so if it isn't already on your Mac you'll want it early.
Open the Homebrew pane from the sidebar. If Homebrew is missing, the pane says "Homebrew isn't installed. It's the package manager this app uses to install services," with a Get Homebrew… button. Installation runs in the app's in-app console: it executes the official Homebrew installer and, at the point the installer needs administrator rights, you type your own password into the console. FrontierStack never captures or stores it — the prompt is Homebrew's own.
Once Homebrew is present, the pane becomes a full package manager: a searchable table of installed formulae and casks with their versions, an Install formula or cask field, an Update All button that shows the outstanding count, and per-row Update / Uninstall actions. The AI Administrator can drive the same flow with its install_homebrew and install_package tools, again through the in-app console where you enter your password.
2.5The Command-Line PATH pane
FrontierStack detects installed tools by resolving them the way your shell does. Occasionally a tool you've installed (via pip, pipx, a virtualenv, or a non-standard prefix) isn't on the PATH the app sees, so it reports the tool as missing. The Command-Line PATH pane fixes that.
- Pick your shell profile (for example
~/.zprofile). Directories you add are written to a clearly marked managed block in that file and prepended to your PATH — open a new terminal to pick up the change. - Directories to add lets you add a path by typing it or with Choose…; the top entry is searched first. Current PATH (effective) shows your login shell's PATH, tagging entries the app manages.
- PATH Doctor diagnoses why a tool isn't detected: enter a command (e.g.
mlx_lm.server,gcloud) and it reports whether the app finds it, whether only your shell finds it, or whether it isn't installed at all — with a one-click Add to managed PATH for any directory the app is missing.
2.6The Install Wizard
If you're starting from scratch, the Install Wizard (in the sidebar) is the fastest way to a working stack. Pick a target use-case — WordPress/PHP, Full-Stack JS, Python/Django, Rails, static site, database, or reverse proxy — and the wizard pre-selects the recommended components (web server, database, cache) for that goal. Adjust the selection to taste, then it installs everything through Homebrew.
The same pane shows the status of the native Apache + MySQL + PHP stack at a glance, and detects all-in-one bundles already on your Mac — XAMPP, MAMP, AMPPS, Local. If it finds one, it routes you to Migrate Setups rather than installing a parallel stack, so you don't end up running two of everything.
2.7Migrating an existing stack
If you already run sites locally under MAMP, XAMPP or Apple's Server.app, you don't have to rebuild them. The Migrate Setups pane detects those stacks and brings their pieces into FrontierStack's native Homebrew stack: web files, MySQL databases, PHP settings, and the Apache vhosts that define each site.
- Open Migrate Setups. It scans for installed sources — MAMP / MAMP Pro, XAMPP and Apple Server — and reports what it found: the sites, the database, and whether PHP was detected. (The AI Administrator's
detect_migration_sourcestool runs the same read-only scan.) - Review the Sites to import list. Each candidate shows its server name and listening port; anything that can't be brought across cleanly appears under Skipped with the reason.
- For settings, the Import All Settings action copies the source's
php.ini,my.cnfandnginx.confover the matching Homebrew config. A.pre-mamp.bakbackup of each file is kept so you can compare or revert. - Choose Import Selected to run the migration. Live progress is shown in the pane as it installs the needed Homebrew services, copies web files, migrates the MySQL databases and imports the vhosts.
- Review afterwards. Source configs often reference the old tool's paths and ports (for example MAMP's
extension_dir,datadir,socket, or port8889), so check the imported settings before relying on them.
The AI Administrator can drive this end-to-end with run_migration, but only after detecting sources and confirming with you — and only with changes enabled.
.pre-mamp.bak backups cover config files, not your databases.2.8Where your data lives
FrontierStack keeps its own state in predictable, standard places, so you always know what it touches and can back it up:
| What | Where |
|---|---|
| App settings & data | ~/Library/Application Support/FrontierStack/ |
| Secrets & tokens | The macOS Keychain, under service jp.co.enfour.frontierstack |
| App-managed Apache config | /opt/homebrew/etc/httpd/frontierstack/ — a dedicated directory the app owns, kept separate from any hand-edited Apache config |
| App logs | ~/Library/Logs/FrontierStack/ |
Keeping the app's Apache config in its own frontierstack/ directory means FrontierStack can manage vhosts safely without clobbering configuration you maintain by hand. The bundle identifier is jp.co.enfour.frontierstack (the helper and DDNS components use the .helper and .ddns suffixes).
With the app installed, the helper decided, Homebrew in place and any old stack migrated, you're ready to actually use it. Chapter 3, The Interface tours the window in detail: the sidebar, panes, search, the menu bar, and the controls you'll reach for every day.
FrontierStack User Manual · Version 1.0.0 · Chapter 2