OliveTin runs natively on macOS on both Apple Silicon (M1/M2/M3/M4) and Intel Macs. It is a single self-contained binary written in Go — there is no installer and no background dependencies to install.
macOS builds are published on the GitHub releases page. Pick the archive that matches your Mac's processor:
| Your Mac | Archive |
|---|---|
| Apple Silicon (M-series) | OliveTin-darwin-arm64.tar.gz |
| Intel | OliveTin-darwin-amd64.tar.gz |
Not sure which you have? Run this in Terminal:
uname -m
arm64 → Apple Silicon, x86_64 → Intel.
If you download the wrong architecture, macOS will refuse to run it with a "Bad CPU type in executable" error.
# Move to your Downloads folder (adjust if needed)
cd ~/Downloads
# Extract — replace arm64 with amd64 on Intel
tar -xzf OliveTin-darwin-arm64.tar.gz
cd OliveTin-darwin-arm64
For a quick try-out you can run it straight from this folder. To install it
system-wide, copy the binary somewhere on your PATH:
sudo cp OliveTin /usr/local/bin/OliveTin
Because the binary is downloaded from the internet and is not notarized by Apple, macOS Gatekeeper will block the first run with a message like "OliveTin can't be opened because Apple cannot check it for malicious software."
Remove the quarantine attribute so it will run:
xattr -dr com.apple.quarantine ./OliveTin
Alternatively, the first time only, you can right-click the binary in Finder → Open, or approve it under System Settings → Privacy & Security.
OliveTin looks for a file named config.yaml in its config directory, which
defaults to the current directory (.). You can point elsewhere with
-configdir /path/to/dir.
A minimal config.yaml to confirm everything works:
listenAddressSingleHTTPFrontend: 0.0.0.0:1337
logLevel: "INFO"
actions:
- title: Hello macOS
icon: terminal
shell: echo "Hello from $(scutil --get ComputerName)!"
popupOnStart: execution-dialog-stdout-only
For a fuller, macOS-tuned starting point — with working examples for
notifications (osascript), caffeinate, pmset, disk usage, the unified
system log, and Docker — see the macos.config.yaml that ships alongside
this guide. Copy it in place with:
cp macos.config.yaml config.yaml
From the folder that contains both OliveTin and config.yaml:
./OliveTin
Or, if you installed it to /usr/local/bin and keep your config elsewhere:
OliveTin -configdir /usr/local/etc/OliveTin
Then open the web interface at:
http://localhost:1337
(or http://<your-mac-hostname>:1337 from another device on your network).
Press Ctrl-C in the Terminal to stop it.
On Linux, OliveTin is managed by systemd. The macOS equivalent is
launchd. A ready-to-use service definition ships next to this guide as
app.olivetin.olivetin.plist.
You have two choices:
# Edit the two paths inside the plist to match your install first!
cp app.olivetin.olivetin.plist ~/Library/LaunchAgents/
# Start now and on every login
launchctl load ~/Library/LaunchAgents/app.olivetin.olivetin.plist
To stop and disable it:
launchctl unload ~/Library/LaunchAgents/app.olivetin.olivetin.plist
sudo cp app.olivetin.olivetin.plist /Library/LaunchDaemons/
sudo chown root:wheel /Library/LaunchDaemons/app.olivetin.olivetin.plist
sudo launchctl load /Library/LaunchDaemons/app.olivetin.olivetin.plist
The plist sets KeepAlive (restart on crash, equivalent to systemd's
Restart=always) and RunAtLoad (start immediately). It also writes logs to
/usr/local/var/log/olivetin.log.
"Bad CPU type in executable" — you downloaded the wrong architecture. Get
the arm64 build for Apple Silicon, amd64 for Intel (see step 1).
Gatekeeper still blocks it — re-run the xattr -dr com.apple.quarantine
command in step 3, or approve the app under System Settings → Privacy &
Security.
It runs but the page won't load — check that nothing else is using port
1337 (lsof -i :1337), and that you're browsing to http:// (not https://).
Reading the logs
Running under launchd: tail the log file configured in the plist:
tail -f /usr/local/var/log/olivetin.log
You can raise detail by setting logLevel: "DEBUG" in config.yaml.
Still stuck? Ask in the OliveTin Discord or open an issue on GitHub.