How it works

One brain. Five layers.
Background workers.

The dashboard doesn't reach into the workers' code; the workers don't render UI. Both go through packages/core. Adding a capability is one place.

Awareness layers

Five things the agent reads

Body

Sleep, recovery, strain, HRV, fatigue, and energy patterns.

Time

Calendar load, focus windows, travel, routines, and time zones.

Work

Tasks, deadlines, follow-ups, projects, reading list, and assigned work.

Goals

Short-term outcomes, medium-term projects, and long-term ambition.

Identity

Markdown profile, habits, people, preferences, and decision rules.

Workers

Each worker is a function with a cron string.

Name Schedule Tokens Purpose
morning-brief 7 AM daily < 3k Plan the day from recovery + calendar + outcomes
whoop-sync every 15 min 0 Pull recovery, sleep, strain, workouts
google-sync every 15 min 0 Today + next 7 days of calendar events
gmail-sync every 15 min 0 Inbox metadata (sender, subject, label)
news-digest 7:10 AM daily < 2k Filtered news against your interests profile
weekly-drift Sun 6 PM < 4k 7d vs prior 83d trends, one-sentence rec

Adding a new worker: drop a file in packages/workers/src/scheduled/, export a function with a cron string, and the daemon picks it up.

Dive into the code?

Architecture, memory model, worker design — all in the docs.