Installation
Get Irrlicht running on your Mac in under two minutes via the package installer, or build everything from source.
Prerequisites
- macOS 13 (Ventura) or later — Irrlicht uses SwiftUI APIs that require Ventura as a minimum.
- Linux (daemon-only) — x86-64 or ARM64, Linux 5.3+ (for
pidfdexit detection). The daemon runs headless with the web dashboard as its UI; there is no menu-bar app on Linux yet. See Linux setup below. - At least one supported AI coding agent installed and working:
If you plan to build from source, you will also need:
- Go 1.21+ — the daemon is written in Go
- Swift 5.9+ — the menu-bar app is a native SwiftUI application
- Xcode Command Line Tools — install with
xcode-select --install
Install via Homebrew (Recommended)
For Mac users with Homebrew, this is the simplest path. The cask points at the same Developer-ID signed + Apple-notarized DMG as the GitHub release, and lets brew upgrade handle future versions. Starting in v0.4.7 the app also auto-updates itself via Sparkle, so manual upgrades become optional.
brew tap ingo-eichhorst/irrlicht
brew install --cask irrlicht
To upgrade later:
brew upgrade --cask irrlicht
Install via curl
One command. No Gatekeeper prompts. The script downloads the Developer-ID signed and Apple-notarized app, verifies the SHA-256 checksum, and launches it.
curl -fsSL https://irrlicht.io/install.sh | sh
Options:
--daemon-only— install justirrlichdto~/.local/bin/(no menu bar app)--version X.Y.Z— pin a specific version instead of latest
# Daemon only
curl -fsSL https://irrlicht.io/install.sh | sh -s -- --daemon-only
# Specific version
curl -fsSL https://irrlicht.io/install.sh | sh -s -- --version 0.3.4
Install via DMG / PKG
Manual drag-and-drop install. Use this if you prefer not to run a shell script, or if you're installing offline.
-
Download the DMG or PKG
Grab
Irrlicht-<version>.dmgorIrrlicht-<version>-mac-installer.pkgfrom the GitHub Releases page. -
Install the app
Open the DMG and drag Irrlicht.app to Applications. You may need to approve the app in System Settings → Privacy & Security if Gatekeeper blocks it.
-
What gets installed
Component Location Irrlicht.app (menu-bar app + embedded daemon) /Applications/Irrlicht.appThe daemon (
irrlichd) is embedded inside the app bundle and managed automatically. No separate services or LaunchAgents needed. -
Launch the app
Open Irrlicht from Applications. A dimmed grey flame appears in the menu bar, and the daemon starts automatically in the background.
On first launch the app also registers itself as a macOS login item (via
SMAppService), so the menu-bar overlay is up before you open your first terminal after a reboot. Toggle this off in Preferences → "Start Irrlicht at login" if you prefer to launch the app manually; the choice is persisted and the default never re-applies.
Linux (daemon-only)
On Linux, Irrlicht ships as a headless daemon — the same irrlichd as on macOS, observing sessions via /proc and pidfd instead of lsof/kqueue. There is no tray app yet; the web dashboard at http://127.0.0.1:7837 is the UI. Session detection, states, costs, token metrics, and lifecycle all work; terminal-window focus is macOS-only and degrades cleanly to "unsupported."
The curl installer auto-detects Linux and installs the daemon only (it picks the right amd64/arm64 build):
curl -fsSL https://irrlicht.io/install.sh | sh
This installs irrlichd to ~/.local/bin/, the dashboard assets to ~/.local/share/irrlicht/web/, and a systemd user unit at ~/.config/systemd/user/irrlichd.service (written but not enabled). Start it directly with ~/.local/bin/irrlichd &, or enable the unit for autostart.
Autostart with systemd
The installer already wrote the unit, so just enable it:
systemctl --user enable --now irrlichd
If you built from source instead of using the installer, create the unit yourself (%h expands to your home directory):
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/irrlichd.service <<'EOF'
[Unit]
Description=Irrlicht — AI coding-agent session monitor
Documentation=https://irrlicht.io/docs/installation.html
[Service]
ExecStart=%h/.local/bin/irrlichd
Restart=on-failure
RestartSec=2
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable --now irrlichd
On a headless server, allow the user service to keep running after you log out:
loginctl enable-linger "$USER"
Check it: systemctl --user status irrlichd, then open http://127.0.0.1:7837. The curl installer's --uninstall flag stops and removes the unit.
Build from Source
Building from source gives you the full installer package, identical to the release download.
One-command build
git clone https://github.com/ingo-eichhorst/Irrlicht.git
cd Irrlicht
./tools/build-release.sh
The script produces a .dmg (and optionally a .pkg) in the build directory.
What the build script does
Under the hood, build-release.sh performs these steps in order:
- Syncs the web frontend — embeds the latest HTML/CSS/JS assets into the daemon binary.
- Cross-compiles the daemon — builds
irrlichdfor botharm64(Apple Silicon) andamd64(Intel). - Creates a universal binary — merges both architectures with
liposo one binary runs natively on any Mac. - Builds the Swift menu-bar app — compiles
Irrlicht.appfrom the SwiftUI source. - Embeds the daemon — places the universal
irrlichdbinary insideIrrlicht.app/Contents/MacOS/. - Packages into DMG and installer — creates a
.dmgfor drag-and-drop install and a.pkginstaller.
Manual build (individual components)
If you prefer to build each component separately for development:
Daemon only
cd core && go build ./cmd/irrlichd/
Menu-bar app only
cd platforms/macos && swift build
build-release.sh which embeds the daemon into the app bundle. Manual builds are useful for development but require running the daemon separately.
Post-Installation
Once installed (via either method), Irrlicht is ready to go.
- The app manages everything — the embedded daemon starts automatically when the app launches. No separate services or LaunchAgents needed.
- The menu-bar app appears in your menu bar as a flame icon. Click it to see the current state of all detected AI agent sessions.
Verify the daemon is running
curl http://127.0.0.1:7837/state
A successful response returns a JSON object with the current global state. If the daemon is not running, verify the app is launched and check logs.
Check logs
Daemon logs are written to:
~/Library/Application Support/Irrlicht/logs/
Inspect these if the daemon fails to start or you encounter unexpected behaviour.
127.0.0.1:7837 by default. This port is not exposed to the network. See the Configuration page to change the bind address or port.
statusLine.command entry in ~/.claude/settings.json. Any Claude Code session already running at that point won't pick it up — close and reopen it once to activate the integration.
Uninstalling
To remove Irrlicht completely, quit the app and delete the following:
# Remove the app
rm -rf /Applications/Irrlicht.app
# Remove application data and logs
rm -rf ~/Library/Application\ Support/Irrlicht/
Application Support/Irrlicht/ directory deletes all local session history and configuration. Back up anything you want to keep before running the command above.