The tray app is macOS only. The Linux and Windows builds of Meridian do not include it.
What the tray shows
The tray icon reflects daemon health in real time. Open the popover to see:- Daemon status — whether the Rust ETL daemon is running, derived from the
daemon_runningfield on/api/health(a launchd probe with a 3-second timeout). - Accessibility helper status — whether the a11y helper is currently trusted by macOS. An untrusted helper means window titles aren’t being captured.
- Today’s top app — the app you’ve spent the most focused time in so far today, with elapsed time.
- Pending worklog drafts — a count of drafts waiting on your review.
- Open the full dashboard at
http://localhost:3000. - Trigger a worklog draft for today without leaving the menu bar.
- Pause or resume the daemon.
/api/health and the activity endpoints every 60 seconds. When the daemon goes down — or comes back online — you get a macOS notification so you don’t silently lose recording time.
Installation and auto-start
The tray app is installed automatically by./install.sh and meridian update. It’s registered as a LaunchAgent (com.meridiona.tray) so it starts on login alongside the rest of the stack — there’s no separate command to run.
You can verify it’s loaded with:
~/.meridian/logs/tray.log and ~/.meridian/logs/tray-error.log.
When to use it
Reach for the tray when you want to:- Confirm Meridian is still recording without breaking flow to open a browser.
- Get notified the moment the daemon stops (for example after a system update or permission revocation).
- Kick off a worklog draft quickly at the end of the day or after a focused session.
Troubleshooting
The tray icon doesn't appear in the menu bar
The tray icon doesn't appear in the menu bar
The popover shows 'daemon stopped' but meridian status looks fine
The popover shows 'daemon stopped' but meridian status looks fine
The tray reads Restart the stack with
daemon_running from /api/health, which probes launchd for com.meridiona.daemon. If the UI service is down or unreachable on http://localhost:3000, the tray can’t fetch health and falls back to a stopped state. Confirm the UI is up:meridian restart if the UI service isn’t running.Health status isn't refreshing
Health status isn't refreshing
The tray polls every 60 seconds. If the popover shows stale numbers for longer than that, check the tray log for errors and confirm the dashboard is reachable: