Your personal agent.
Your machine. Your rules.
Elyra is a local-first personal assistant that ingests your calendar, biometrics, tasks, and reading list — then plans your day, schedules deep work around your recovery, and answers when you talk to it. Your data never leaves the machine.

Cloud assistants forget you. Elyra doesn't.
Without Elyra
Cloud assistants that read your messages. AI that forgets you. Generic briefs that ignore your sleep.
With Elyra
Agent on your laptop. Persistent memory in markdown. Whoop, calendar, tasks fused into one daily plan.
Six things, done well. None in the cloud.
Morning brief that adapts to you.
Reads your sleep, recovery, calendar, and yesterday's outcomes — then writes the brief that fits today's body.
Voice you don't have to wake up.
Click the mic, speak naturally — Elyra classifies, executes, and replies. Conflict-detects before scheduling.
Tasks that respect your time.
Add a task at 3pm Tuesday — Elyra flags overlaps with anything on your week. Exports to your calendar via .ics.
Health-aware planning.
90-day Whoop trends drive a weekly drift review. If sleep slipped, the brief deloads.
News, curated to you.
Pulls geopolitics, tech, startups, and your country's headlines every 4 hours. Reads through Claude Haiku for a one-sentence take.
Memory you can read.
All of Elyra's memory is markdown files in data/. Open them, edit them, version them. Nothing lives in a vector DB you can't see.
Three steps. Then a week.
Connect
One OAuth for Whoop, one for calendar, one shell command for everything else.
Profile
Drop a few markdown files describing who you are. Elyra reads them; you stay in control.
Live with it
Let the morning brief land at 7am for a week. Adjust the prompt. It gets sharper.
$ pnpm install
$ pnpm whoop:auth
$ pnpm workerTalk to it. It remembers.
Hold the mic. Tell it about your week. Ask what's on tomorrow. Add tasks by speaking. Single tap, continuous loop until you close.

Add the task. Elyra owns the calendar.
A task isn't a row in a list. It's a request the agent reasons about — against your week, your recovery, and what you haven't finished yet — before it lands a time on your calendar.

"Block 90 minutes for spec review tomorrow afternoon."
Calendar shows 1–3pm meeting. Sleep last night was 6h12m. Recovery 38%. Cognitive load already heavy after lunch.
Recovery is low — deep work fits better in the morning window. 9:30–11am is open and your strain hasn't started building yet.
Scheduled 9:30–11am · written to local DB · exported as .ics · queued for tomorrow's morning brief.
Conflict-detects before scheduling.
Cross-checks your calendar, focus blocks, and recovery before committing to a slot. Suggests alternatives instead of double-booking.
Plans around your body.
Recovery and sleep trends shape the slot. Deep work lands where your strain headroom is highest, not just where the calendar is empty.
Carries context across days.
What slipped yesterday is what surfaces tomorrow. Tasks aren't a list — they're a thread the agent owns.
Your data never leaves. Ever.
Profile, goals, tasks, and brief outputs live in SQLite + markdown on your machine.
Whoop, calendar, and news data sync to local storage only.
LLM calls go to Claude — but only the focused prompt for the current turn. No background telemetry. No cloud index of your life.