← Web App

Notifications — feed

web app · wireframes · notifications

What an employee reads on clicking the bell: personal notifications — runs of their agents and account events. The same dispatcher as for admins, a different view; addressing is targeted at this user.

Bell and panel → App bar
in-app · entry to the feed
  1. 1 The bell with an unread counter — the number of unread in-app items for the current user (deliveries with read_at IS NULL). The counter updates instantly over the push channel (SSE); polling is a background top-up. The in-app channel is locked on, so everyone has a bell — feed = notifications ⋈ own deliveries.
  2. 2 The panel — the tail of recent events, opened from the bell on click. “Mark all read” sets read_at on all of the user's deliveries at once; the gear leads to personal notification settings (in-app / email toggles per type).
  3. 3 The type on the left (Agent · Account) is the category of the personal event; the severity chip is its severity. The source is clickable: a deep link from source_ref leads to the entity — a run, an agent, a profile.
  4. 4 The only actionable case for an employee is a removed model: the button leads to the agent editor to pick a model from those available. Other personal events are informational, with a deep link to “where to look”.
  5. 5 “Show all” leads to the full screen — history, filters, marking read one by one. The panel shows only the top.
  6. The feed is personal: only this user's targeted events land here (their agents, their account). Organizational alerts (sync · security · budget) go to admins in the Admin Panel.
Full screen — Inbox → Data model
notification inbox
achilles.local/inbox /inbox · authenticated user
Notifications feed
Search by title or agent
Type Severity Unread Period 6
Today
Agent warning 7 14:10 · 8 min ago
Agent “Sales watch”: run failed The run hit the iteration cap and was stopped — the final answer wasn't produced.
agent_engine · run/318 8
Mark read 9 Open agent
Agent info 09:30 · today
Weekly token budget exhausted — agents wait for the week's reset agent_engine · budget
Agent warning 08:05 · today
The model for agent “Risk daily” was removed by an admin
the agent is stopped until you pick another Choose model
Earlier
Account info yesterday, 16:20
Your role changed: member → admin
auth · profile
Mark unread 10 Open profile
Account warning 3 days ago
A temporary password was issued — change it on sign-in auth · profile
Agent info 4 days ago
Agent “Risk daily” was paused by an admin agent_engine · agent/12
1–20 of 47
1 2 3
  1. 6 The Type · Severity · Unread · Period facets — behavior is uniform across all lists. “Unread” is a common default; clear it to see the history. Type here is the two personal ones: Agent · Account.
  2. 7 The severity chip = notifications.severity (warning · info), colored from the event catalog. The type on the left is the category (Agent · Account).
  3. 8 The source is clickable — a deep link to the entity from source_ref: a run, an agent, a profile. It takes you to where you can dig in, straight from the feed.
  4. 9 “Mark read” writes read_at to your own delivery — everyone has their own feed and their own read state. The event itself is append-only; it's never edited or deleted.
  5. 10 A read item dims (a muted card, no accent bar) but stays in the history; “Mark unread” returns it to the counter. Grouped by day — Today · Earlier.
  6. The email channel for personal types is off by default — opt-in: in-app is seen right away, and emails arrive only if you enable them in your profile (the catalog default).