Skip to content

Add macOS installer script and installation guide - #17

Open
divyanshus2404 wants to merge 1 commit into
PlumoAI:mainfrom
divyanshus2404:feature/macos-installer
Open

divyanshus2404 wants to merge 1 commit into
PlumoAI:mainfrom
divyanshus2404:feature/macos-installer

Conversation

@divyanshus2404

@divyanshus2404 divyanshus2404 commented Sep 12, 2026 •

Copy link
Copy Markdown
Member

What this does

PlumoAI already runs on macOS through install.sh, but there is no macOS entry point equivalent to install.ps1 on Windows, and docs/ has no macOS page. This adds both.

Two files

PlumoAI-Installer.command - a double-clickable bootstrapper, the macOS counterpart to PlumoAISetup.exe. A user downloads it, double-clicks (right-click - Open the first time to clear the Gatekeeper warning), and PlumoAI installs with no command line. It uses an adjacent checkout when shipped inside the repo, otherwise git-clones into ~/PlumoAI, then runs install-macos.sh - falling back to install.sh directly if install-macos.sh is not present in the fetched version, so it works even before this PR merges.

install-macos.sh is a thin wrapper (below) that prepares a Mac and then hands off to install.sh, rather than duplicating any of its logic:

  • Verifies macOS 12+ (Docker Desktop's own minimum) and that git is available
  • Detects Docker Desktop, and offers to install it via Homebrew when missing
  • Launches Docker Desktop and waits for the daemon, with a timeout and a clear message if it never comes up
  • Confirms Docker Compose v2 using the same check install.sh uses
  • Resolves the repo, cloning only when not already inside a checkout
  • Passes --fresh and --no-backup straight through to install.sh
  • Reads the resulting URL from the generated env file and opens it in the browser

There is also a --check flag that reports what would happen without installing or starting anything, so it is safe to run before committing to an install:

  PlumoAi
  Self-Hosted - macOS installer

  check mode - nothing will be installed or changed

Checking prerequisites
  ok    macOS 26.6.2 (arm64)
  ok    git 2.50.1
  ok    Homebrew 6.0.22

  ..    Docker Desktop is required and was not found.
  warn  check mode: would install Docker Desktop via Homebrew

Repository
  ok    Using existing checkout: /Users/you/plumoai

Portability

Written against the bash 3.2 that ships with macOS, so it avoids bash 4+ syntax (declare -A, mapfile, parameter-case expansion) and GNU-only flags (sed -i, readlink -f, base64 -w). It runs on a stock system with nothing installed beyond the Xcode Command Line Tools.

Testing

Verified on macOS 26.6.2 (arm64):

Check Result
Parses under /bin/bash 3.2 pass
shellcheck clean, no warnings
--check on a machine without Docker correctly detects and declines to act
--help pass
Unknown flag rejected, exit 1
GNU-only flags none present

The URL parsing was exercised separately across six cases: localhost with default port, localhost with a custom port, domain mode, quoted values, missing port (falls back to 7861), and domain mode with an empty domain (falls back to localhost). All six resolve correctly.

Verified end to end on macOS 26.6.2 (arm64). Docker Desktop 4.90.0 was installed fresh, then ./install-macos.sh was run start to finish:

ok    macOS 26.6.2 (arm64)
ok    git 2.50.1
ok    Homebrew 6.0.22
ok    Docker Desktop found
ok    Docker daemon is running
ok    Docker Compose v2 (5.5.1)
ok    Using existing checkout
..    Handing off to install.sh ...

All 8 images pulled, all 8 containers started:

Container Status
ai-service Up (healthy)
auth-service Up (healthy)
main-app Up (healthy)
plumoai-api Up (healthy)
plumoai-mongodb Up (healthy)
plumoai-mysql Up (healthy)
traefik Up
docker-socket-proxy Up

http://localhost:7861 returns HTTP 200 and serves the login page.

Two things found while testing

install.sh is not executable in the repo (100644), so the README's ./install.sh fails with Permission denied until you chmod +x. This wrapper does it automatically, but the repo file itself is worth fixing.

.env.example ships with RUN_MODE=domain, so any non-interactive run stops at Error: For domain mode, DOMAIN_NAME and SSL_EMAIL must be set in .env. localhost would be a safer default for a first run.

Docs

docs/install-macos.md covers the quick install, the manual equivalent, the flag reference, stack management commands, and troubleshooting for the failure modes specific to macOS (daemon not running, port conflicts, the first-launch privileged helper prompt, Rosetta image warnings).

Note that docs/install-linux.md and docs/install-windows.md are currently empty placeholder files. This PR does not touch them, but they are a visible gap if anyone follows the links.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant