Inbox and notifications

The Inbox collects what needs you in a project: a plan to approve, questions from an agent, a check-in, a finished review, a teammate's mention. It is the first item in the rail, so you can work elsewhere and come back when something waits.

Open it from the rail, or press g i (or ⇧ N).

What you see

The page has two panes:

  • The list, on the left: one row per session, review or Brain page, newest activity first. A row shows who raised it (an agent's badge or a teammate's face), the ref and title, what happened ("Claude finished the plan", "Codex asked 3 questions") and when. Unread rows carry a dot, and the title shows the unread count.
  • The subject, on the right: the session, review or Brain page itself, with the same actions as when you open it from its own list. You can approve a plan or answer questions without leaving the inbox.

The header holds the filter, the Inbox / Archived switch and a menu with Mark all as read and Unread only.

The inbox: notifications on the left, the open session on the right.

When the list is empty it says "You're all caught up." The archive says "Nothing archived."

What raises a notification

Invariant raises a notification when an agent reaches a moment that concerns you, or when a teammate needs you.

TypeRaised when
Plan readyAn agent finished a plan and waits for your approval.
QuestionsAn agent asks interview questions.
AgreementAn agent proposes the agreement that ends an interview.
Check-inAn agent checks in during the build, or needs your call.
ExecutedAn agent finished the work.
ReviewA review is ready, or ready to triage.
MentionA teammate mentioned you in a conversation (organisation projects).
AssignedA teammate assigned a session to you, or handed it off to you (organisation projects).

In an organisation project, the Brain notifies too: when a teammate mentions you in a Brain page's conversation, and when an update reports what it did with your feedback ("Claude incorporated your feedback", "Your feedback was published in r43").

Agents change nothing to raise these: the local service reads what happens to sessions and reviews, and decides what is news. New activity on a row brings it back to the top, unread, even out of the archive.

Work through the inbox

  1. Move through the rows with J and K. The right pane follows.
  2. Press Enter, or click a row, to open it. Opening a row marks it read. A row you only pass over with J / K is marked read once it has stayed open for a second.
  3. Act on the subject in the right pane: approve, answer, triage or reply.
  4. Press ⌘ ⌫ to archive the row. It moves out of the way until it has new activity. In Archived, the same keys unarchive it.

u marks the focused row read or unread. ⇧ ⌘ ⌫ marks every row read. Esc goes back to the list.

The list loads a page at a time as you scroll; older rows keep coming as long as there are some.

Filter the list

Press f while the list has focus, or click the filter button. Filters show as chips under the header:

  • Reason (organisation projects): Assigned to me, Created by me, Mentioned, Participating.
  • Type: the types in the table above. Mention and Assigned are only offered in an organisation project.
  • From: the agents, and in an organisation the people, behind the rows.

Unread only is in the header's menu. It hides rows that were read before you turned it on; a row you read meanwhile stays until you change the filter.

The filter is remembered per project and per person, in this browser.

Toasts

When an agent starts waiting on you, a card appears at the bottom right of the app with who did what and one action: Review, Answer or Reply. Click it to open the row in the inbox.

Toasts are for moments that block someone: a plan ready, interview questions, an agreement, a check-in, a mention or an assignment. Finished work and review results go to the inbox only. No toast appears when the subject is already on your screen, since its page shows the change arriving.

System notifications

The desktop app posts the same moments to your system's notification centre while Invariant is in the background.

To turn them on or off:

  1. In the desktop app, open Invariant → Settings… (⌘ ,).
  2. Under Notifications, check or uncheck Show system notifications.

The desktop app shows notifications of projects cloned on this machine. The web workspace shows every project of your organisation.

This machine and organisation inboxes

How long rows are kept depends on where the project lives.

This machineOrganisation project (Pro)
Where the inbox livesA file on this machine, per projectOnline, one inbox per person
What is keptThe last 100 notifications, for 7 daysEvery notification
DevicesThis machineEvery device you sign in on, and the web workspace

In an organisation project, each person gets only the rows that concern them: the assignee, the creator, contributors and people mentioned. You never get a row for your own act. Read, unread and archived follow you from one device to another.

An organisation inbox filtered by Reason: Mentioned and Assigned to me.

Connect Slack

Slack posts session and review updates to a channel. Each session or review gets one message in its channel, edited in place as its status moves, with a short threaded reply for each event. Messages carry the ref, title, status, agent and counts, never the task, plan or answers.

  1. Open the project's Settings (g ,), then Integrations → Slack.
  2. Click Add to Slack (a). Slack's consent page opens in your browser; accept it.
  3. Choose a Sessions channel for planning sessions and a Reviews channel for reviews. Without a reviews channel, reviews are not posted. The bot posts to any public channel; invite it to a private one first.
  4. Pick the events to post:
    • Status changes, Approvals, Waiting on a person and Reviews are on by default.
    • Each completed step is off by default, because it is noisy.
  5. Save, then click Send test message (t).

The workspace, channels and events are saved in invariant.json, so your team shares them. The bot token stays on your machine: each teammate connects once on their own machine. Each machine posts only what happened on it.

Posting never blocks a session. If a post fails, the Slack card shows the last failure. Disconnect forgets this machine's token; to stop the whole team posting, remove the app in Slack.

Shortcuts

KeysAction
g iGo to the inbox
J / KMove between notifications
EnterOpen the focused notification
⌘ ⌫Archive, or unarchive in Archived
uMark read or unread
⇧ ⌘ ⌫Mark every notification read
fFilter by reason, type or sender

From the terminal

The inbox has no commands of its own: it fills from what agents report through the session commands. Agents wait for your answers with invariant session await, which returns once you approve or reply in the app. See Commands your agent runs.