/activity) is the full log of what your workspace did: pipeline runs, memory operations, and sessions, with nested work indented under the operation that ran it. Reach it from View full log → on the Overview Activity panel, or from any breakdown row on Analytics.
The header states what the numbers mean: duration and tokens are recorded where available (older activity shows —), and cost is estimated. A Refresh button re-pulls the feed, a last updated readout beside it ticks (just now, 12s ago, 4m ago), and Export CSV writes every filtered row in the order shown — including the nested operations that hide nested is keeping off screen, so the file can hold more rows than the table does. It appends four columns the table has no room for — Depth, Nested under, Counts toward total, and Session ID — and the filename is stamped with the snapshot the rows came from (cognee-activity-<timestamp>.csv).
Activity is a Cognee Cloud feature. In the local, open-source UI the route renders a notice — Activity is a Cognee Cloud feature — instead of the log. See Local UI.
Columns
Rows carry inline chips where they add something the columns cannot: bg on the action of a background job (accepted and started; this row is written once and never revisited), 3 err on the status of a session with errors recorded inside it, and nested on the timestamp of a row whose parent is not in the current view (widen the range or clear a filter to see its parent). A still-running row shows its elapsed time counting up rather than a fixed duration.
An
unknown action is an operation name this UI has not been taught — a plugin installed on your pod can record its own operations. It deliberately reads as absent rather than being folded into one of the real actions.
Statuses
Statuses are listed in lifecycle order, which is also the order the filter offers them and the order the Status column sorts by:Filters
The filter bar sits above the table. Every filter is reflected in the URL, so a filtered view can be shared, bookmarked, and reloaded. Always visible:- date — condition-first: pick a comparison (is, is between, is on, is before, is after, is on or before, is on or after), then either a one-click preset (Today, Yesterday, This week, Past week, This month, Past month, This year, Past year) or a real date. is between takes two dates.
- action, status, user — multi-select lists, built from the values that actually appear in the loaded rows rather than from a fixed enum. Each can include or exclude: is any of / is none of.
- hide nested (on by default) — hides operations nested under a parent. Their tokens stay in the total, counted under that parent.
- hide 0 tokens (on by default) — hides rows with nothing to show: those that measured zero tokens, and queued runs that never started. Rows with no token data recorded stay, since those are unmeasured rather than free.
Filters run in the browser over the rows already loaded. A date far enough back can therefore match nothing even where that activity exists — the empty state says so, and offers Clear all filters.
What the feed loads
The page polls every 30 seconds and loads the newest 200 sessions and 500 runs and memory operations. When a workspace holds more than that, an amber-ruled Partial view. notice above the table names exactly what was kept — the newest 200 of 3,412 sessions and the newest 500 runs and memory operations — and repeats that the filters run over what is loaded, so a filtered view can miss older matches. Export CSV carries the same caveat in its tooltip. Rows are added to the DOM 150 at a time, so a workspace with hundreds of rows stays responsive without the count being hidden from you. A totals row is pinned to the bottom of the table and always reachable. It reads Total · 1,284 events with the summed duration, tokens, and cost beneath their columns, and reports separately what those sums leave out — · 96 unmeasured, excluded below and the nested rows that are hidden and counted inside their parents.When the feed fails
Failure notices sit above the table rather than replacing the rows, so a failed refresh never blanks data you were reading:Empty state
With no activity at all, the page reads No activity recorded yet. — Activity appears here once an agent reads from or writes to your memory. Add data or connect an agent to get the first rows. — with Add data and Connect an agent actions. If the filters match nothing, it reads No activity matches these filters. instead, with the caveat above and a Clear all filters action.Opening a run
A row that belongs to a session is clickable — its timestamp is a button labelled Open session for at — and it opens that run in Sessions. Rows with no session behind them are not clickable. A row’s status is that operation’s status, not the session’s. A session whose operations all read completed here can still showabandoned on Sessions, which only means the conversation has been idle for 30 minutes — see Sessions are not Activity rows.