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.
/assets/docs/inbox-two-panes.webpWhen 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.
| Type | Raised when |
|---|---|
| Plan ready | An agent finished a plan and waits for your approval. |
| Questions | An agent asks interview questions. |
| Agreement | An agent proposes the agreement that ends an interview. |
| Check-in | An agent checks in during the build, or needs your call. |
| Executed | An agent finished the work. |
| Review | A review is ready, or ready to triage. |
| Mention | A teammate mentioned you in a conversation (organisation projects). |
| Assigned | A 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
- Move through the rows with J and K. The right pane follows.
- 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.
- Act on the subject in the right pane: approve, answer, triage or reply.
- 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:
- In the desktop app, open Invariant → Settings… (⌘ ,).
- 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 machine | Organisation project (Pro) | |
|---|---|---|
| Where the inbox lives | A file on this machine, per project | Online, one inbox per person |
| What is kept | The last 100 notifications, for 7 days | Every notification |
| Devices | This machine | Every 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.
/assets/docs/inbox-filter-reasons.webpConnect 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.
- Open the project's Settings (g ,), then Integrations → Slack.
- Click Add to Slack (a). Slack's consent page opens in your browser; accept it.
- 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.
- 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.
- 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
| Keys | Action |
|---|---|
| g i | Go to the inbox |
| J / K | Move between notifications |
| Enter | Open the focused notification |
| ⌘ ⌫ | Archive, or unarchive in Archived |
| u | Mark read or unread |
| ⇧ ⌘ ⌫ | Mark every notification read |
| f | Filter 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.