7.1 KiB
description, icon
| description | icon |
|---|---|
| The notification center, the Activity transparency hub, and the Routines scheduler: everything OpenHuman tells you about, and everything it does in the background. | bell |
Notifications & Activity
OpenHuman surfaces two kinds of "what's happening" in one place: notifications (things you should look at, like an important Slack message, a failed webhook, or a high-priority email) and activity (a transparent ledger of what the agent did on its own while you weren't watching). This page covers the notification center, the Activity hub that fronts it, and the Routines screen for managing scheduled automations.
Notification Center
The notification center is fed by two independent streams that render side by side under Activity → Alerts.
Integration notifications
Notifications captured from connected accounts (Gmail, Slack, WhatsApp, Discord, …) are ingested through the notification.ingest RPC, persisted to a per-workspace SQLite store, and then triaged by a local LLM in the background. Ingest returns immediately; triage runs in a spawned task and back-fills the score a moment later, so a freshly arrived item can briefly show as unscored.
Triage assigns each notification an action, which maps to a fixed importance score between 0.0 and 1.0:
| Triage action | Score | What it means |
|---|---|---|
drop |
0.10 | Noise, not worth surfacing |
acknowledge |
0.35 | Low value, informational |
react |
0.65 | Worth a follow-up |
escalate |
0.90 | High priority, hand to the agent |
Only react and escalate are considered "routed" actions; drop and acknowledge stay quiet. Each ingested item carries a one-sentence triage_reason justifying the classifier's call, plus a lifecycle status: unread → read → acted → dismissed. Duplicate content received within a 60-second window collapses to a single entry.
System (core-bridge) notifications
The second stream translates selected internal events into compact, user-facing alerts and pushes them over the socket bridge as they happen. These are persisted before broadcast, so anything fired while the app was closed syncs down on the next open. Each carries a category and an in-app deep link:
| Source event | Category | Surfaces when |
|---|---|---|
| Cron job completed | Agents | Always (success or failure) |
| Webhook processed | System | Only on failure; successes are silent |
| Sub-agent finished | Agents | Always |
| Sub-agent failed | Agents | Always |
| Notification triaged | Agents | Only when routed (escalate/react) |
| API key rejected | System | Always; links to the LLM settings tab |
The category set the notification center understands is messages, agents, skills, system, meetings, reminders, important. The Alerts view shows a filter chip row, but only for categories that actually appear in the current feed, plus Mark all read and Clear. Clicking a notification marks it read and follows its deep link. Some core notifications carry action buttons (e.g. a meeting auto-join prompt) and are pinned to the top of the center.
Per-provider routing & thresholds
Every provider has its own settings (notification.settings_set), letting you tune the noise per source:
| Setting | Effect |
|---|---|
enabled |
When off, that provider's notifications are not ingested at all |
importance_threshold |
Minimum score (0.0 to 1.0) to display; 0.0 shows everything |
route_to_orchestrator |
When on, high-importance (react/escalate) items are forwarded to the agent |
Auto-routing re-reads the provider's settings the moment before escalating, so toggling a setting mid-flight takes effect immediately. A notification is only routed to the agent when its score clears the provider threshold and route_to_orchestrator is enabled.
Activity hub
The Activity surface (/activity) is the transparency layer over everything the agent does without you in the loop. It has three tabs:
| Tab | What it shows |
|---|---|
| Automations | Workflows the agent runs on your behalf (the workflows panel) |
| Background Activity | The subconscious engine: status bar, active tasks, approval cards, and the evaluation ledger |
| Alerts | The notification center described above (integration + system streams) |
The Background Activity tab embeds the subconscious loop's controls and activity log: its tick interval, mode, a manual Run Now trigger, and a chronological feed of every background task evaluation with a colored status dot. That loop is documented in full on the Subconscious Loop page; the Activity hub is just its front door.
Older deep links (?tab=memory, ?tab=agents, ?tab=tasks, …) now live under Settings → Developer & Diagnostics and fall back to the Automations tab.
Routines
Routines (/routines) is the user-facing management UI for scheduled automations. It is the desktop face of the cron system. Jobs are sorted by next-run time, each rendered as a card showing:
- The schedule, rendered human-readable (e.g. "every day at 9am") from its cron expression.
- The job type badge: agent (runs a prompt through the agent) or command.
- The next run time (when enabled) and the last run status dot. Sage means success, coral means failure, and neutral means it has not run yet.
- A toggle to enable/disable the routine, a Run Now button for manual triggering (it polls until the run lands), and an expandable run history.
Routines surface and manage the scheduled jobs; the underlying scheduling engine, cron syntax, and the agent tools for creating jobs programmatically are covered on the Cron / scheduled tasks page. Completed and failed runs also emit Agents-category notifications into the center described above.
See also
- Subconscious Loop covers the background engine behind the Background Activity tab.
- Cron / scheduled tasks covers the scheduling engine and agent tools behind Routines.
- Triggers covers webhooks and inbound events that can raise notifications.