Skip to content

Install on macOS

This guide covers installing Astromesh Node on macOS 13 (Ventura) and later, on both Apple Silicon (arm64) and Intel (x86_64).

RequirementVersionCheck
macOS13 (Ventura)+sw_vers -productVersion
Architecturearm64 or x86_64uname -m
Python3.12+ (bundled by the installer)python3 --version
NetworkOutbound to LLM provider or local Ollama

Download the appropriate archive for your architecture from GitHub Releases.

Apple Silicon (M1/M2/M3/M4):

Terminal window
curl -LO https://github.com/monaccode/astromesh/releases/latest/download/astromesh_latest_darwin_arm64.tar.gz

Intel Mac:

Terminal window
curl -LO https://github.com/monaccode/astromesh/releases/latest/download/astromesh_latest_darwin_amd64.tar.gz

Extract and run the installer script:

Terminal window
tar -xzf astromesh_latest_darwin_arm64.tar.gz
cd astromesh_latest_darwin_arm64
sudo ./install.sh

The installer:

  1. Copies astromeshd and astromeshctl to /usr/local/bin/
  2. Creates the _astromesh system user (no login shell)
  3. Creates configuration and data directories
  4. Installs the launchd plist to /Library/LaunchDaemons/com.astromesh.astromeshd.plist

Expected output:

Installing Astromesh Node v0.18.0...
Creating system user '_astromesh'...
Creating directories...
/etc/astromesh/
/var/lib/astromesh/
/var/log/astromesh/
Installing binaries to /usr/local/bin/...
Installing Python virtual environment...
Installing launchd daemon...
astromesh installed successfully.
Run 'sudo astromeshctl init' to configure.

Verify the installation:

Terminal window
astromeshctl version

Expected output:

Astromesh Node v0.18.0
Daemon: /usr/local/bin/astromeshd
CLI: /usr/local/bin/astromeshctl
Python: 3.12.x
Platform: darwin/arm64

On first run, macOS Gatekeeper may block the binaries because they are not from the Mac App Store. To allow them:

Terminal window
sudo xattr -d com.apple.quarantine /usr/local/bin/astromeshd
sudo xattr -d com.apple.quarantine /usr/local/bin/astromeshctl

Or open System Settings > Privacy & Security and click “Allow Anyway” after the first blocked execution.

Run the interactive wizard:

Terminal window
sudo astromeshctl init

For a non-interactive setup:

Terminal window
sudo astromeshctl init --profile full --provider ollama --model llama3.1:8b --non-interactive

This creates:

  • /etc/astromesh/runtime.yaml
  • /etc/astromesh/providers.yaml
  • /etc/astromesh/agents/default.agent.yaml

See Configuration for the full schema.

Load and start the launchd daemon:

Terminal window
sudo launchctl load /Library/LaunchDaemons/com.astromesh.astromeshd.plist

To stop:

Terminal window
sudo launchctl unload /Library/LaunchDaemons/com.astromesh.astromeshd.plist

The daemon is configured with KeepAlive = true — launchd restarts it automatically if it exits.

To enable start-at-boot (the plist is already in /Library/LaunchDaemons/, so it loads at boot by default once loaded).

Terminal window
astromeshctl status
Terminal window
curl http://localhost:8000/v1/health

Logs are written to /var/log/astromesh/:

Terminal window
# Follow live logs
tail -f /var/log/astromesh/astromeshd.log
# View errors
grep ERROR /var/log/astromesh/astromeshd.log
# System console logs (launchd)
log show --predicate 'process == "astromeshd"' --last 1h
PathPurpose
/etc/astromesh/Configuration files
/var/lib/astromesh/Persistent state (memory, models)
/var/log/astromesh/Log files
/usr/local/bin/astromeshdDaemon binary
/usr/local/bin/astromeshctlCLI binary
/Library/LaunchDaemons/com.astromesh.astromeshd.plistlaunchd unit
Terminal window
curl -LO https://github.com/monaccode/astromesh/releases/latest/download/astromesh_latest_darwin_arm64.tar.gz
tar -xzf astromesh_latest_darwin_arm64.tar.gz
cd astromesh_latest_darwin_arm64
sudo ./install.sh

The installer unloads and reloads the launchd daemon automatically.

Terminal window
sudo launchctl unload /Library/LaunchDaemons/com.astromesh.astromeshd.plist
sudo rm /Library/LaunchDaemons/com.astromesh.astromeshd.plist
sudo rm /usr/local/bin/astromeshd /usr/local/bin/astromeshctl

To remove all configuration and data:

Terminal window
sudo rm -rf /etc/astromesh /var/lib/astromesh /var/log/astromesh
sudo dscl . -delete /Users/_astromesh