Skip to content

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 watch external data sources and fire events when something noteworthy happens.

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.

Watches Google Calendar every 2 minutes. Events within 15 minutes generate schedule suggestions, including attendees and location when available.

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.

Every event gets a priority as it arrives:

PriorityExamplesHandling
CriticalOverdue commitment, critical system notificationReacted to immediately
HighImportant email, URL copied to clipboard, file created or deleted, struggle detected with score ≥ 0.7Reacted to immediately
NormalRegular email, file modified, app launch, lower-score strugglesCoalesced and batched
LowShort clipboard content, process stop, context switchCoalesced, 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.

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.

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.

Proactive output reaches you where you are:

  1. The dashboard, when a client is connected
  2. 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.