Skip to content
Robert Sfeir edited this page Oct 6, 2026 · 6 revisions

The board sends two kinds of alert: once each time a session starts waiting on you, on every channel you set up, and, from 0.4.0, once when you pass a budget limit (see Budget alerts). Use as many channels as you like; leave one empty to turn it off. With none set up, alerts are off.

Where to set them

On the machine that runs the board, open the VitalAIze app, click Settings and fill in the Alerts section, then click Save. On Linux, run bin/vitalaize setup and pick Alerts. Changes are in use within a few seconds. You can also set them in the alerts section of settings.exs (see Settings); what the app or vitalaize setup saves goes on top of the file.

Messages (Mac only)

  1. Sign in to the Messages app on the Mac that runs the board.
  2. Set Phone number (Messages) (phone) to your number. The Mac sends an iMessage to it from the Apple ID signed in there.
  3. The first time an alert goes out, macOS asks whether the board may control Messages. Allow it.

If your number is not on iMessage (Google Voice, for example), set Send as (via) to SMS. That sends a plain text through your iPhone, and needs Text Message Forwarding on (iPhone Settings, Messages, Text Message Forwarding).

On Linux, Messages is not there, so use one of the channels below.

Slack

  1. In Slack, make an incoming webhook for the channel you want alerts in.
  2. Set Slack webhook (slack_webhook) to the https://hooks.slack.com/... address Slack gives you.

ntfy (free, iPhone or Android)

  1. Install the ntfy app on your phone.
  2. Pick a topic name that is hard to guess, such as acme-board-7f3k. Anyone who knows the topic can read it. Use letters, numbers, - and _ only.
  3. Subscribe to that topic in the app, and set ntfy topic (ntfy_topic) to the same name.
  4. If you run your own ntfy server, set ntfy server (ntfy_server) to its address. Empty uses https://ntfy.sh.

Pushover

  1. Sign in at pushover.net and copy your user key.
  2. Make an app there and copy its API token.
  3. Set Pushover user key (pushover_user) and Pushover app token (pushover_token). Both are needed.

What an alert says

"VitalAIze: session name needs you." and then what the session asks, such as the question it put to you or the end of Codex's reply, cut to 240 characters.

That text leaves your machines on every channel you turn on. Messages carries it through Apple, and SMS through your phone carrier. Slack, ntfy and Pushover carry it through their own servers. Anyone who knows your ntfy topic can read it too, so pick one that is hard to guess, or run your own ntfy server.

Which sessions alert

  • Claude sessions on the machine that runs the board.
  • Claude sessions on every machine connected to it. The machine's collector reports the moment one of its sessions starts waiting (a permission prompt, a question, or a form from an MCP server). Its card shows Needs you on the hub's board, marked with that machine's name, until the session moves on. The alert waits about 5 seconds and is skipped if you answer first, and at most 20 go out in 10 minutes. See Connecting other machines.
  • Codex sessions, on the hub or on a connected machine, once the Codex hook is set up on the machine where Codex runs. See Codex.

Budget alerts

From 0.4.0. Set a limit on Claude spend, Claude tokens or Codex tokens, per day or per week, under Budget in Settings (see Settings). The board checks every minute. When a total passes its limit, a strip on the board says so, and one alert goes out:

"VitalAIze: Claude spend this week passed your $200 limit ($245.88 so far)."

  • One alert per limit, per day or week. A restart does not send it again. Raise a limit that was passed, and it alerts again only when the new amount is passed.
  • Only on the channels you pick. Under Budget, switch each channel on or off for budget alerts; all are on at first. A channel sends only when it is also set up above.
  • Tried again until it goes out. If no channel takes the alert (none is set up, or each one failed), the next check, a minute later, tries again.
  • It needs the archive. Totals come from the saved sessions, added up as on Trends, so sessions from your other machines count. A busy session on the hub counts once it pauses for archive.settle_seconds (2 minutes). With the archive off, no limit is checked and the strip says so.
  • A week starts on Monday. Days and weeks follow the time zone of the hub's own clock, as Trends does, not the timezone setting. On a hub whose clock is set to UTC, a day ends at midnight UTC, which is 8 PM Eastern in summer and 7 PM in winter.

If no alert comes

See Troubleshooting.

Clone this wiki locally