How it works
One brain. Five layers.
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.