Proactive Agent
Usejarvis doesn’t wait to be told. It watches your email, calendar, and machines through observers, classifies what it sees, and acts on the events that matter: alerting you, executing commitments, and researching errors in the background.
Since 0.9 this is fully event-driven. The old periodic heartbeat loop was removed; events are classified as they arrive, and only meaningful ones reach the model.
Observers
Section titled “Observers”Observers watch external data sources and fire events when something noteworthy happens.
Gmail Observer
Section titled “Gmail Observer”Polls your Gmail inbox every 60 seconds for new messages (up to 10 unread at a time) and emits raw email events with their labels. Priority is assigned downstream by the event classifier: Important or Starred labels and urgent keywords in the subject classify as high priority.
Requires Google OAuth setup. See Configuration.
Calendar Observer
Section titled “Calendar Observer”Watches Google Calendar every 2 minutes. Events within 15 minutes generate schedule suggestions, including attendees and location when available.
Sidecar Observers
Section titled “Sidecar Observers”Connected sidecars contribute machine-level observers: window changes, file watches, process events, clipboard, and OS notifications (on Linux via D-Bus, in the sidecar). Their events flow into the same classification pipeline.
Event Classification
Section titled “Event Classification”Every event gets a priority as it arrives:
| Priority | Examples | Handling |
|---|---|---|
| Critical | Overdue commitment, critical system notification | Reacted to immediately |
| High | Important email, URL copied to clipboard, file created or deleted, struggle detected with score ≥ 0.7 | Reacted to immediately |
| Normal | Regular email, file modified, app launch, lower-score struggles | Coalesced and batched |
| Low | Short clipboard content, process stop, context switch | Coalesced, mostly context |
Critical and high events go straight to the reactor; everything else is coalesced so the daemon is not burning LLM calls on noise.
Commitments
Section titled “Commitments”Usejarvis maintains a commitments table in the vault. When you say “remind me to…” or “I need to…”, the extraction pass stores the commitment with a due date and priority.
Commitment state changes fire events once per transition (not on a polling loop): when a commitment’s deadline arrives, the executor triggers a mandatory execution prompt, and overdue commitments classify as critical.
Background Research
Section titled “Background Research”When a visible error is detected on screen (through awareness), a background agent silently researches a fix using a separate browser instance and delivers the result as a follow-up suggestion. Research topics can also be queued explicitly with the research tool and are worked on demand.
Delivery
Section titled “Delivery”Proactive output reaches you where you are:
- The dashboard, when a client is connected
- Your channels (Telegram, Discord): all approval requests always; urgent notifications prefixed
[URGENT]; awareness suggestions when no dashboard client is connected
Rate limiting and dedup keep suggestions from repeating. See Awareness for the per-type suggestion cooldowns.